Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Quasar

ZDoom dynasegs

Recommended Posts

I noticed that it appears ZDoom is getting dynasegs, and I think that is fantastic. I would like to see all polyobject-supporting free-software ports using the code. However I'd greatly appreciate if the source, which contains lines of code and comments taken directly from Eternity, were:

  • A. demarcated to indicate the origin of the code and its original author (myself).
  • B. specifically barred from inclusion inside closed-source products.
Those are the only conditions I have ever placed on use of my code, and I don't feel they are particularly unreasonable as compared to what I could potentially demand given the license I write under.

Share this post


Link to post

If your code is GPL they have to follow the license regardless, so any closed source shootoffs would be in violation of the GPL since they can't close that portion of the code. Even if ZDoom is BSD, it's snip ins from Eternity are GPL and only GPL and any change of license of that code would be a violation.

So really you have no worry if they take your code unless they want to become a license violation which would cause alot of drama and headaches.

If they refuse:
* Start 100+ threads on DoomWorld
* Call the FSF
* Shun the port
* E-mail all the port's e-mails
* Inform them hourly on IRC
* Post on their forums
* Rally in #doom-tech
* Start a petition
* Mail nasty cease and desist letters in the port owner's mail boxes
* Cause drama and headaches

Of course, this could be a common name now kind thing, where DynaSegs is more a type of Doom Port feature rather than actual code.

I'm currently lacking alot of sleep but you get my post, hopefully.

EDIT: ZDoom is BSD, not GPL, typo.

EDIT (later on): This first post would be Eternity from ZDoom's perspective which can use Eternity's GPL code but cannot change it's license. The main point is that if you keep it as GPL then any GPL-compatible port can use it, and if they close their source then they cannot use it, so relicensing is pretty useless unless you got another license.

Share this post


Link to post

Technically, any source port that takes code from Eternity would have to be GPL or GPL compatible and conforming. Quasar would have to extract his GPL code from Eternity that he wrote 100% himself and place elsewhere and change it's license. If he uses GPL code he has no ownership of (ex: owned by ID Software or his buddy SoM) then he violates the GPL. Unless Quasar does all

// NOW UNDER QUASAR OPEN SOURCE LICENSE

for (*foo() = 0; *foo() < 10; (*foo())++)
   x = foo() + *foo();

// NOT UNDER QUASAR OPEN SOURCE LICENSE
It's really messy though both source code wise and legal wise.

Share this post


Link to post

Odamex is GPL. Your argument is invalidated.

That code is currently in a branch, not in ZDoom itself. You will not find any compiled build with it.

The commit comment mentioned the intent was to make sure maps would behave exactly the same. (Dunno if Eternity code was ported before this commit.)


By the way, if the GPL forbidden coders to relicense their own code that they wrote themselves, then it would be by far the biggest and most compelling reason to never, ever use the GPL, and consider it as the most loathsome and vile license ever devised, a trap to be avoided no matter how.

Share this post


Link to post
Gez said:

Odamex is GPL. Your argument is invalidated.

That code is currently in a branch, not in ZDoom itself. You will not find any compiled build with it.


The ZDoom owner relicensed his work which was not under the GPL but rather the BSD and other things to the GPL license. Your counter-argument is invalidated.

Gez said:

The commit comment mentioned the intent was to make sure maps would behave exactly the same. (Dunno if Eternity code was ported before this commit.)


By the way, if the GPL forbidden coders to relicense their own code that they wrote themselves, then it would be by far the biggest and most compelling reason to never, ever use the GPL, and consider it as the most loathsome and vile license ever devised, a trap to be avoided no matter how.


That's pretty much a falsely gray. Places either say you can relicense your own code and others say you cannot relicense your own code. But in reality you can relicense your own GPL code as anything else BUT YOU CANNOT RELICENSE CODE YOU DO NOT OWN (have no copyright for it). So depending on the copyrights, whether it's inidivudal (C) Quasar` and (C) SoM, both of them would need to relicense the code. If there's other code there like id Software's code then they need their permission. Also, Quasar and buddies will have to split this code from Eternity to change it's license since it being in Eternity makes it GPL, unless explicitly stated in a dual license and such. But if they do a (C) Eternity Team then technically everyone on the team is a single entitity to where all team members share the copyright of the code and only one person inside of that entity may relicense that code.

EDIT: Team as in Company like things, where one or more people own a company and thus own everything in the company and any source code they write.

Also, the GNU frowns upon non-free code that was GPL saying "To release a non-free program is always ethically tainted, but legally there is no obstacle to your doing this. If you are the copyright holder for the code, you can release it under various different non-exclusive licenses at various times."

Share this post


Link to post
GhostlyDeath said:

The ZDoom owner relicensed his work which was not under the GPL but rather the BSD and other things to the GPL license. Your counter-argument is invalidated.

So, you can relicense your code if it's BSD, but you can't relicense it if it's GPL.

By your logic, ZDoom is GPL, since it's been relicense as GPL for Odamex, and therefore is GPL and cannot be still licensed as BSD.

GhostlyDeath said:

But in reality you can relicense your own GPL code as anything else BUT YOU CANNOT RELICENSE CODE YOU DO NOT OWN (have no copyright for it).

And Quasar doesn't own the dynasegs code? Which he wrote from scratch and does not even use the same algorithms as Raven's original polyobject code?

You're really not making any sense.

Odamex is GPL because Randy said "sure, you can my code with a GPL license, provided you do this and that." Quasar here said "sure, you can use my code with a BSD license, provided you do this and that."

This exactly the same thing. No difference.

(Finally, Eternity is not entirely GPL. Ever wondered why there is this "zdoomcodelicense.txt" file in the distribution?)

Share this post


Link to post
Gez said:

So, you can relicense your code if it's BSD, but you can't relicense it if it's GPL.

By your logic, ZDoom is GPL, since it's been relicense as GPL for Odamex, and therefore is GPL and cannot be still licensed as BSD.


If you own the copyright for the code you can relicense it. What I'm saying is, if you don't own the copyright you cannot relicense it because it's not yours.

If you work for a company and write code for them, they own the code not you, even if you wrote it. To relicense the code you would need to talk to the company.

The ZDoom Creator has GPLed ZDoom Code which consists of Odamex mostly. Odamex can never relicense the GPL ZDoom Code unless they are given the copyright and vice versa. But Odamex can relicense it's own code if it wishes (but that would go against it's own goals).

Gez said:

And Quasar doesn't own the dynasegs code? Which he wrote from scratch and does not even use the same algorithms as Raven's original polyobject code?

You're really not making any sense.

Odamex is GPL because Randy said "sure, you can my code with a GPL license, provided you do this and that." Quasar here said "sure, you can use my code with a BSD license, provided you do this and that."

This exactly the same thing. No difference.

(Finally, Eternity is not entirely GPL. Ever wondered why there is this "zdoomcodelicense.txt" file in the distribution?)


I said that Quasar owns his own code (unless he put it in some non-copyrighted public domain).

Quasar owns the copyright for the code he wrote. If he wrote it from scratch and copyrighted it to himself or the Eternity entity then he has the power to relicense his own work to any license under the sun.

Quasar cannot say "Sure you can use the ZDoom code as GPL for this and that" and ZDoom cannot say "Sure you can use Eternity code as BSD for this and that." since Eternity doesn't own any ZDoom code and ZDoom doesn't own any Eternity code. Sure they can lend/rent code to each other, but they can't dictate what they can do with such code outside of the license agreement.

EDIT: But nobody (source port wise) can change the ownership of id Software, Raven code, Boom Code, etc. if they never wrote the code and don't own it. If your source port inherited from a GPL source port, and you changed an entire file with your own code under your own copyright then you may do whatever the hell you want to it. But you must follow the license for the code that isn't yours.

EDIT 2: If Quasar relicenses to the BSD license and if the BSD license allows code usage in closed source programs then Quasar has allowed something he does not want. If he keeps it as GPL, any GPL-compatible port can use the code provided it's source is open since closing the source in such a port is a violation.

EDIT 3: So in reality, since Quasar`s code is under the GPL there was no real reason to start this thread (license wise) since if ZDoom uses the GPL code, the code is GPL and if a closed source port uses the GPL code ZDoom took then it just violated the GPL. Such ports would need to remove such code before releasing binaries. Since what Quasar said is what the GPL defends, he only needs to tell ZDoom to use the GPL license and inform closed source ports based off ZDoom that if you use such code, you are violating the GPL.

Share this post


Link to post

This argument is a distraction. All of the code in the r_dynseg.c module is mine, excepting R_SplitDist, which is derived from BSP 5.0 which is also GPL. I didn't see this function being used in ZDoom because I think it calculates seg offsets somewhere else.

I respect that the code is only in a branch and I also respect the fact that it may change a lot before it ever hits trunk. But right now there's no way it wouldn't qualify as a derivative work.

I don't intend to attack ZDoom in any way. I support ZDoom's continued development. The only thing I have issue is with ports who don't play by the rest of the community's rules and that have managed to consistently benefit from every single one of our ancestral ports' innovations via one method or another without having to respect the single most fundamental tenet of their eventual license, simply because of what should be considered a blunder of history.

Share this post


Link to post

For those of us who haven't been paying attention, what the hell are dynasegs? Looked on the Eternity wiki but didn't find anything.

Share this post


Link to post

I'm guessing this is about the code finding its way into ZDaemon through ZDoom. I don't see why there would be some confilct with ZDoom, I've never heard of Randy claiming other peoples code was his own.

Share this post


Link to post
Scet said:

I'm guessing this is about the code finding its way into ZDaemon through ZDoom. I don't see why there would be some confilct with ZDoom, I've never heard of Randy claiming other peoples code was his own.

ZDaemon, Skulltag, or other ports. The code in question was borrowed by Graf, not Randy. Not that I am suggesting Graf has any systematic issue with not accrediting borrowed code by saying that. I'd just like to see proper attribution and that one restriction if my code's going to be used in such a direct manner. Dynasegs are a significant and distinct technology on which I did several years' worth of R&D before ever thinking about putting them into EE.

I do understand already how this might affect Skulltag development, and frankly, it's not my problem. I shouldn't have to worry about how or if they can work around it and still merge with the latest ZDoom build. Being in licensure compliance is their burden to bear if they want to maintain their current ways. And no, for this purpose, releasing an old version once every 5 years is not sufficient.

If they really have to keep the code closed AND use this code, then let them negotiate an appropriate licensing fee with me now and not have to go through any business involving DMCA notices etc. Because I really do not ever want to have to go there.

Share this post


Link to post
DooMAD said:

For those of us who haven't been paying attention, what the hell are dynasegs? Looked on the Eternity wiki but didn't find anything.

Dynasegs are Quasar's system for handling polyobject movement without many of the potential issues and restrictions placed on them by the original static-segs system used by Hexen.

Instead of depending on pregenerated segs to determine the drawing order for polyobjects and accepting some significant limitations and hoping that they'll work as expected, dynasegs actually regenerate the affected segs for every rendered frame, so that all "correct" polyobject setups and even quite a few "incorrect" ones can function perfectly ingame without any glitches or other undesired behavior. They can be located in complex areas, they can cross multiple sectors with different flats and lighting levels, and so on.

Share this post


Link to post
esselfortium said:

Dynasegs are Quasar's system for handling polyobject movement without many of the potential issues and restrictions placed on them by the original static-segs system used by Hexen.

Instead of depending on pregenerated segs to determine the drawing order for polyobjects and accepting some significant limitations and hoping that they'll work as expected, dynasegs actually regenerate the affected segs for every rendered frame, so that all "correct" polyobject setups and even quite a few "incorrect" ones can function perfectly ingame without any glitches or other undesired behavior. They can be located in complex areas, they can cross multiple sectors with different flats and lighting levels, and so on.

Or to sum it up in a single sentence:

Dynasegs are mathematically correct polyobjects :)

Further explanation:
Any time an unsplit polyobject crosses a node line it can potentially cause incorrect drawing order. By exploiting the complete mapping of space provided by the BSP, dynamic objects can be split through the tree to end up with the exact same result you'd have had if those lines were part of the map during building of the BSP tree, but at significantly less time cost than attempting to rebuild the BSP tree itself.

You must also z-sort the resulting fragments in a separate, later pass before drawing them, however, if you wish to support real "anywhere" objects that can move into arbitrary subsectors. Otherwise if there is more than one object in a subsector, you get arbitrary ordering. EE was already doing the sorting step, albeit on whole objects and not fragments, before I added proper dynasegs.

Share this post


Link to post

I am going to close this thread because I believe a compromise has been reached which will, similar to the agreement with GZDoom, allow continued access to any modifications that may have to be made in closed-source derivatives of ZDoom, without necessarily requiring them to reveal their entire source code.

I have made an exception and have dual-licensed the original code in the r_dynseg.c module under GPL v2 and LGPL 2.1, which requires source disclosure for modifications and public attribution for use with binaries.

EDIT: I have reopened the thread by user request. I only closed it because I didn't feel the issue was really worth beating around the bush any further about given that a potential compromise was reached. Though it is not yet evident that Randy will keep the code that was borrowed, as he prefers ZDoom to remain purely BSD as much as is possible.

Share this post


Link to post

Forgive my need for clarification, but does this mean that an agreement has been reached between you and the ZDoom devs regarding the use/crediting of the code? The post is a slight bit vague for those of us unskilled in the licensing department (read: me).

Share this post


Link to post
Xaser said:

Forgive my need for clarification, but does this mean that an agreement has been reached between you and the ZDoom devs regarding the use/crediting of the code? The post is a slight bit vague for those of us unskilled in the licensing department (read: me).

It means I am willing to allow use of the code as long as they don't try to close the parts of the code derived from it. But it's looking like the code isn't going to stay in anyway.

Share this post


Link to post

Really this is a shame. I feel like everything would be nicer if everyone could just use the BSD license, but the idea of someone grabbing my code and creating a closed-source port with it is just so lame I would feel compelled to use GPL. I think it's really stupid that the popular C/S ports are such idiots about this kind of thing, and I hope they come around sooner rather than later, because dynasegs is a great feature and now it's looking like we won't get it. Awesome.

EDIT:

Well seconds after posting it I realized my post jumps to some conclusions. I'm leaving it up though, because I do feel strongly about this issue.

Share this post


Link to post

It would be nicer if all ports adhered to the GPL license since that is what Id is using for all their released source codes.

Share this post


Link to post

I agree but look at the downside this would mean for ZDoom:

- no more Build code in the renderer
- no OPL emulation
- no FMod

Unfortunately these are show-stoppers. The renderer might be resolvable by borrowing some code from Eternity but the other 2 are pretty much impossible to get around.

Especially regarding sound libraries there are none that are both free and good. OpenAL gets bogged down by a hideous API that's completely counter-intuitive to what it's supposed to do and the less said about SDL_Mixer the better...

Share this post


Link to post
tempun said:

What of Chocolate's emulation?


Chocolate Doom takes it from DosBox and DosBox from MAME.

"Unless otherwise explicitly stated, all code in MAME is released under the
following license:

Copyright Nicola Salmoria and the MAME team
All rights reserved.

Redistribution and use of this code or any derivative works are permitted
provided that the following conditions are met:

* Redistributions may not be sold, nor may they be used in a commercial
product or activity.

* Redistributions that are modified from the original source must include the
complete source code, including the source code for all components used by a
binary built from the modified sources. However, as a special exception, the
source code distributed need not include anything that is normally distributed
(in either source or binary form) with the major components (compiler, kernel,
and so on) of the operating system on which the executable runs, unless that
component itself accompanies the executable.

* Redistributions must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE"

Share this post


Link to post

That license is not GPL compatible due to the 'no commercial use' clause. ZDoom's OPL code has the same problem.

Share this post


Link to post

Errrrr since when did Choco's OPL emulation come from DosBox? I was under the impression that fraggle spent most of the last year working on his own ground-up emulator for it.

As for GPL vs BSD, all I'm going to say is this:
Why are some of you so eager to have your hard work turned into non-reciprocal benefits to others? I have no quarrel with others benefitting from my work, but I expect them to share alike. How is this an unfair expectation in any way?

In my job I get paid very well for solving problems that are a lot less difficult than some of the ones I've had to struggle with in EE, which I produce for free. Anyone who thinks they have the right to then take that code and do as they wish with it without respecting my rights is personally assaulting my liberty.

Share this post


Link to post
Quasar said:

As for GPL vs BSD, all I'm going to say is this:
Why are some of you so eager to have your hard work turned into non-reciprocal benefits to others? I have no quarrel with others benefitting from my work, but I expect them to share alike. How is this an unfair expectation in any way?



If it was all that easy...

To be honest, I wouldn't hesitate a second to slap on a 'must release source' clause to ZDoom's license - but I know very well what would happen then. I already was there before with my GL renderer.

As much as I'd like to stop Skulltag's closed source policy cold in its tracks, the only result would be a fork between ports that'd stall development at the lowest common denominator rendering all future work less useful. Sometimes compromises are necessary so that you can reap the rewards of your work.

Share this post


Link to post

Thats a rather convenient argument considering the "compromise" you are referring to netted you precisely what Quasar is arguing for. You gained continued access to Skulltag's future source modifications.

I'm desperately searching for polite words now I've stated it factually :P

Share this post


Link to post

Skulltag's source is...

... well, mostly useless when it comes to backporting features. I had access to it and already added the most interesting parts to ZDoom before granting them permission to use the GL code and knew what to expect there. I never expected to get much out there and I didn't get much.

On the other hand what I did get was more people willing to use the stuff I created. Had it not been added to Skulltag many, many projects out there would have skipped it in order to remain compatible.

For me as a programmer the most frustrating thing would be to invest large amounts of time into a project and in the end see nobody or almost nobody put it to good use.

Share this post


Link to post

I'm less concerned about my own situation. What you are asking him to do is what some might consider the programming equivalent of abandoning principle.

Now, for me as a programmer - I've had a look at dynasegs and I think its great. Its not for us though, as we've got other plans but I'm glad to see Quasar upholding his creation's pride (so to speak).

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×