Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix license hell of the codebase #128

Closed
AntonioND opened this issue Feb 26, 2017 · 24 comments
Closed

Fix license hell of the codebase #128

AntonioND opened this issue Feb 26, 2017 · 24 comments

Comments

@AntonioND
Copy link
Member

Right now there are quite a few components of the codebase that have different licenses. Instead of having this it would be nice to contact the authors of each module and ask if they could relicense it. If not, that module could just be removed and rewritten. Ideally, we could have everything under something like the MIT or Apache license.

Of course, this only makes sense if the original code of rgbasm and rgblink can be relicensed, if not this is pretty useless. Not sure about how the WTF license really works in real life or how it interacts with other licenses.

@bentley
Copy link
Contributor

bentley commented Feb 26, 2017

ISC and MIT are both similar enough and short enough that IMO it’s acceptable to have both. (Apache 2.0 is very long and complicated, and patents are not an issue with this codebase, so I’m not a fan of that option.)

strl.c could be replaced with Musl’s MIT‐licensed implementation, although I don’t see the BSD license as a huge burden here.

The elephant in the room are the components derived from the original RGBDS: rgbasm, rgblink, and the HTML documentation.

  • These were written by Carsten Sørensen a long time ago. They have been released under GPLv3+ at csoren/asmotor. Last time I spoke to Carsten, he was unwilling to relicense.
  • RGBDS was created from asmotor by Justin Lloyd. It was released under the WTFPL‐like license at JustinLloyd/RGBDS-Gameboy-Development-System. There are a couple of problems here:
    • It’s my understanding that Carsten is the original author, and thus Justin cannot legally relicense. But I am not entirely clear on the history here.
    • This is not actually the WTFPL. It has two extra clauses: “You cannot stop anybody from doing whatever they want to with the work” and “You cannot revoke anybody elses DO WHATEVER PUBLIC LICENSE in the work.” IANAL but these seem very vague and shaky to me. (Here’s an excellent analysis of the MIT license showing how vague language like this really sucks.)

I’d like to explicitly point out that all ISC‐licensed components — rgbfix, rgbgfx, and charmap.c, as well as the manpages — were written from scratch and are not derived from rgbds or asmotor in any way.

@AntonioND
Copy link
Member Author

I just can't find the original files writen by Carsten Sørensen. But yeah, even Justin Lloyd's docs are signed by Carsten... http://otakunozoku.com/RGBDSdocs/geninfo.htm

I agree that this kind of license sucks, most of them are broken by design.

If you are right, I'd say that the tools are still actually licensed under the GPL.

@AntonioND
Copy link
Member Author

This is the best I could find: https://code.google.com/archive/p/asmotor/

@bentley
Copy link
Contributor

bentley commented Feb 27, 2017

I’ve added links to the Github repos in the previous comment.

I considered rebasing this repo on Carsten’s asmotor. It will be a lot of work though.

@AntonioND
Copy link
Member Author

Yes, but I was looking for the code that Justin based his rework on. If Carsten didn't license that version under the GPL it doesn't matter if he did it for a later version, so we need to know the details.

I've even considered rewriting it from scratch...

@AntonioND
Copy link
Member Author

AntonioND commented Feb 27, 2017

Actually, it seems the original code had no specific license, but some files have a copyright notice: http://www.rift.dk/rgbds.html

Supposing this is the complete original code and nobody has removed any license file, of course.

@AntonioND
Copy link
Member Author

Well, the code of that last link doesn't have a license, but the documentation does:

BlahBlahBlah

The ASMotor package (xAsm, xLink, RGBFix, examples and documentation) is
freeware and distributed as is. The author retains his copyright and right to
modify the specifications and operation of the software without notice.

In other words this means I encourage you to...

- use it for whatever purpose even professional work without me charging you a
  penny
- copy it to another person (wholly or in part, though I'm sure he'd appreciate
  the whole package) in whatever form you find suitable
- mass-distribute the ASMotor package if it is complete (xAsm, xLink, RGBFix and
  documentation).
- contact me if you have any problems

This also means you can't...

- blame me for loss of profit, data, sleep, food or other nasty things through
  the use or distribution of ASMotor. If you choose to use ASMotor you do so at
  your own risk.
- expect me to be able to help you should you have a problem related or not to
  ASMotor.

I am happy to say that xAsm and xLink use PMODE/W as DOS-extender for the MS-DOS
port! This means fast assembling of your sourcecodes. A lot faster. PMODE/W is a
drop-in replacement for the bulky DOS4GW. If you are a programmer you should
check out http://www.di.net/pmw
"PMODE/W is Copyright (c) 1994-1997, Charles Scheffold and Thomas Pytel. All
rights reserved."

So, since the code doesn't have anything related to that MS-DOS port anymore, we can ignore that last paragraph.

The important part is:

In other words this means I encourage you to...

1 - use it for whatever purpose even professional work without me charging you a
    penny
2 - copy it to another person (wholly or in part, though I'm sure he'd appreciate
    the whole package) in whatever form you find suitable
3 - mass-distribute the ASMotor package if it is complete (xAsm, xLink, RGBFix and
    documentation).

Documentation has to be included in Justin Lloyd's code because of [3], so the modifications he did have to comply with this license.

I'd say that the modified WTF license doesn't fully comply with [3], so the license should still be the original one.

@AntonioND
Copy link
Member Author

Hello @csoren, @JustinLloyd, @vegard, (and @bentley).

You have been the biggest contributors to this project, and that the licensing issue right now is a bit unclear, I was wondering if we could all agree on the license to use for RGBDS.

Personally, I'd like to use GPL (this is a finished tool, and it would be nice to get the improvements that people make) but I'm fine with MIT or similar. Given that https://github.com/csoren/asmotor is licensed under the GPL, I understand that @csoren would be happy to use this license. As far as I see, @JustinLloyd couldn't really change the license after he did his modifications (https://github.com/JustinLloyd/RGBDS-Gameboy-Development-System), so the original one prevails. From that point, everything is just a mess.

I've left my thoughts in previous comments. It would be great if this issue could be fixed once and for all.

@vegard
Copy link
Contributor

vegard commented Jan 23, 2018

I didn't do much but I am happy to relicense my changes under either GPL and MIT assuming all other authors (especially those whose code I modified) agree.

@csoren
Copy link

csoren commented Jan 24, 2018

First of all, I'm really sorry I didn't think of including a license back in the 90's. The only thing I have to say is - I'm fine with whatever you guys decide to do with RGBDS, as long as you decide on a license moving forward. Feel free to relicense my original code (if any is still left) under GPL, ISC, MIT, BSD, APL.

I'll just include what I told @bentley when he contacted me, as it contains my thoughts on the matter.


What happened back in 1999 was that I had released the source for RGBDS under no particular license, I think. I didn't think a lot about these issues at the time. I released the source mostly so people could have a look and possibly port it to whatever system they wanted. Then Otaku all of a sudden started releasing new versions with fixes and features without my involvement or even talking to me about it. At the time I was pretty annoyed, but at the same time I realised I had probably accomplished what I wanted with RGBDS and so I wasn't perhaps that interested in it anymore. Frankly, I don't remember what was said between Otaku and me. I think I probably handed over maintenance to him but I don't remember any discussion of terms or licensing. I may even have said, do what the fuck you want, or something to that effect. I don't remember. Sorry.

I did notice he was very quick to downplay my part in the project, which is kind of a disgusting thing to do, but I dunno man. I just let it slide.

Well, some time later I picked up my last released version of RGBDS, because as it turned out, I still had some ideas, I just couldn't quite let it go and so I started rewriting parts I wasn't happy with. It became a one pass assembler, yacc was thrown out, massive internal changes and code clean up. I still hack on it from time to time when I need a feature, but development is very much in infrequent, frantic spurts.

I haven't looked at RGBDS at all since I let it go. I have no idea what it's like now. I know that ASMotor is a much better and faster assembler than the RGBDS I left behind, but it's also very different and not even 100% source compatible. I'm not sure you can rebase onto ASMotor easily.

I have given the license a lot of thought, and I still believe the GPL is the right choice for ASMotor, for how I want people to be able to use it. In an unlikely and purely hypothetical scenario, you could still bundle ASMotor with a closed source IDE, if that's what you wanted. As long as the IDE would function without the tool chain, and the IDE and tool chain communicated at arms length (that is through the command line), it's fine. For an end user that's great, because the toolchain can be upgraded outside of the IDE. On the other hand, a more permissive license would allow the IDE to embed the assembler, making it less user-servicable. That's not what I want. I guess it all comes down to who you want to give freedom, developers or users. I tend to favor the users. So right now I would not consider changing the license, although I would be interested in hearing your reasons for choosing the ISC license?

@bentley
Copy link
Contributor

bentley commented Jan 24, 2018

First of all, I'm really sorry I didn't think of including a license back in the 90's.

Well, hardly any people are rigorous about licensing now, let alone back then.

Feel free to relicense my original code (if any is still left) under GPL, ISC, MIT, BSD, APL.

Thank you; I appreciate this very much. This makes me much more interested in the possibility of rebasing. Either against asmotor (if the same license terms apply there), or the original RGBDS source code, which I’ve put up here, which might(?) be easier to rebase against, depending on how much Justin’s release added to it. (If Justin’s repo were to be released under a clearer license than “DWYWT,” that would make things easier too).

My few original bits are ISC‐licensed. That’s very close to (and compatible with) MIT, but if uniformity would make it any easier, I’m willing to relicense them to MIT directly.

@AntonioND
Copy link
Member Author

AntonioND commented Jan 24, 2018

Thanks for your answers, specially yours, @csoren! It makes things so much easier.

If there is some interest to try to rebase on asmotor, I think that GPL would make more sense. However, seeing what the current situation is, I'm happy with any mainstream license that we can agree on. If @bentley really feels like using a more permissive license like MIT, I'm fine with it. After all, this is just a toolchain to develop for the GB, the actual license doesn't really matter that much, it would just be great to have all the code under the same license.

It's true that going for MIT would make it really easy to keep all the licenses of the project consistent, most of the files that don't belong to rgbasm or rgblink are licensed under similar terms, getting the authors to agree to a change should be easy (@stag019, any thoughts on rgbgfx?).

Regarding Otaku, he couldn't relicense the code without the author's approval, so the only code that can be under the WTF license are his modifications. I don't think that there are many left after all this time, and I also don't see any real conflict with the MIT license (I'm not a lawyer, though). In the end, the spirit of both licenses is the same. It would be great if he said something about this, though.

Maybe we could just use a dual GPL/MIT license so that the code can be reused in asmotor without creating licensing problems (in case someone wants to try). It's a bit messier, though.

PS: Thanks for that repository, @bentley.

@JustinLloyd
Copy link

@csoren First, if I ever mis-stated anything or downplayed your contribution to the code, my abject apologies, it was never my intention. These are conversations from almost 20 years ago, so I don't recall any details. Again, apologies if I ever discredited your work or downplayed it.

I uploaded the RGBDS code to github under the "do whatever you want" license, because after 15+ years (at the time), the project was pretty much abandonware and I didn't think much more of it other than "why is this on my hard drive and not on github where someone might make use of it?"

Regarding licensing now, I am happy with whatever Carsten decides for the code and anything I have contributed over the time I was maintaining it. If someone else can get use out of the code, have at it.

@JustinLloyd
Copy link

Also, I notice in the whatever license it says "Software originally created by Justin Lloyd, October 1996-ish
and distributed via the DO WHATEVER PUBLIC LICENSE in 2012." which I think is either boilerplate with the date changed or an error of omission on my part.

Mea culpa.

Carsten is most definitely the original author. I merely added new features and created a few new tools that worked in conjunction with the original code.

@bentley
Copy link
Contributor

bentley commented Jan 25, 2018

Thanks to everybody involved for clarifying this. Prominent Game Boy projects in 2018 still use RGBDS decades after its release partly because it was released with relatively free terms at its inception. Having the license even freer and more explicit now makes me hopeful this will continue in the future.

@AntonioND, my bias in favor of MIT is that it allows the code to be reused in existing open source projects that are not necessarily GPL‐compatible. If mgba (for example) were to integrate an assembler for its Game Boy debugger without calling a shell, it wouldn’t be able to use a GPL’d RGBDS without relicensing its existing (MPL) codebase. That’s kind of hypothetical, but I think RGBDS is a prime example of software that demonstrates it can be used in unforeseen places years after the fact, and I’d like a license that maximizes that possibility.

@AntonioND
Copy link
Member Author

AntonioND commented Jan 25, 2018

Thanks for leaving your thoughts, @JustinLloyd! I understand that all of this happened 20 years ago so it's quite hard to do anything related to it now. However, that only means that it would be even harder in the future.

@bentley Sure, I don't really think that GPL or MIT would make a big difference for this particular project anyway.

I'll create a pull request changing the headers of all files related to rgbasm and rgblink to show the MIT license. Well, the SPDX identifier https://spdx.org/licenses/MIT.html That is, as long as @stag019 agrees to relicense rgbgfx under the MIT license. You, @bentley, have already said that you don't mind relicensing rgbfix, so rgbgfx is the last big thing left. It would just be easier if everything used the same license, and ISC is basically the same thing as MIT, so I don't think that there should be any reason to oppose to it. If he agrees, the only thing left to do is to replace the external contributions to get implementations under the MIT license, which shouldn't be too hard. But this is secondary, at least rgbgfx and the external files have a license.

Regarding the copyright notices, I guess that we can keep the authors' names in the copyright files that already have them and just add a generic notice to all the rest that just says "Copyright RGBDS contributors" and add a CONTRIBUTORS.rst file. Or just specify the license in the files that have no copyright notice, that's what the Linux kernel does.

PS: Also, @stag019, the charmap.c code.

AntonioND added a commit that referenced this issue Jan 25, 2018
With permission from the main authors, all code licensed under the terms
of conflicting and unclear licenses have been relicensed under the MIT
license: #128

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
@AntonioND
Copy link
Member Author

I've created a pull request that relicenses everything (except for rgbgfx and a few files) to MIT: #225

If someone wants to suggest some changes, please do.

AntonioND added a commit that referenced this issue Jan 25, 2018
With permission from the main authors, all code licensed under the terms
of conflicting and unclear licenses have been relicensed under the MIT
license: #128

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
AntonioND added a commit that referenced this issue Jan 25, 2018
With permission from the main authors, all code licensed under the terms
of conflicting and unclear licenses have been relicensed under the MIT
license: #128

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
AntonioND added a commit that referenced this issue Jan 25, 2018
With permission from the main authors, all code licensed under the terms
of conflicting and unclear licenses have been relicensed under the MIT
license: #128

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
@csoren
Copy link

csoren commented Jan 26, 2018

@JustinLloyd, It's not like I'm holding a grudge. If I did, I would have said something. I seem to recall that I handed over the reigns to you, we really should have decided on a license at that point. That I didn't think of this or select a particular license is completely my fault.

@bentley makes an interesting case for MIT. I've been thinking about this (and rebasing onto the current ASMotor) a lot these past days. It's certainly true that a freer license helps the code live on as it's useful in more contexts. And I absolutely love that something I started so long ago is still in use. For consumers of the code, keeping any changes closed or diverging from upstream too much is not desirable, as rebasing gets more and more difficult. And their users would get annoyed when updates are delayed, so maybe that's not an actual concern.

As for rebasing onto my ASMotor project. I wish something could happen. I'm definitely more open to relicensing ASMotor under MIT than I was a couple of days ago. The two projects have many similarities and would benefit from pooling efforts. I'm just not sure it's feasible. I'm not even up to speed on what has happened with RGBDS since 2000, if RGBDS improvements fit ASMotor, or if my changes to ASMotor fit RGBDS (source compatibility was never a requirement - desirable but not required). I desperately need to document ASMotor in general and specifically how it diverges from the original RGBDS.

AntonioND added a commit that referenced this issue Jan 26, 2018
With permission from the main authors, all code licensed under the terms
of conflicting and unclear licenses have been relicensed under the MIT
license: #128

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
@tobiasvl
Copy link
Member

@AntonioND Have you tried e-mailing @stag019? He doesn't seem active on GitHub, but his e-mail address is readily available in the git commits of his repos.

@AntonioND
Copy link
Member Author

@tobiasvl I emailed him yesterday, yes. I'm going to merge the current pull request even if he doesn't answer, his code can be relicensed later without too much effort.

@stag019
Copy link
Contributor

stag019 commented Jan 26, 2018

Github emailed me as soon as you tagged me. Your personal email ended up in spam though. You can relicense my code under MIT, that's fine.

@AntonioND
Copy link
Member Author

Well, at least you have received the message, that's good enough. Thanks for answering! I'll update the PR.

AntonioND added a commit that referenced this issue Jan 26, 2018
With permission from the main authors [1], most of the code has been
relicensed under the MIT license.

SPDX license identifiers are used so that the license headers in source
code files aren't too large.

Add CONTRIBUTORS.rst file.

[1] #128

Signed-off-by: Antonio Niño Díaz <[email protected]>
@AntonioND
Copy link
Member Author

I've merged the PR. There are 3 files left that aren't licensed under the MIT license, but that should be easy to fix.

@AntonioND
Copy link
Member Author

I've removed the dependencies of external files from OpenBSD, which means that now all of the code of the repository is licensed under the MIT license. For now, I'm going to close the issue. If anyone has any comment, you can do it here (and reopen the issue if needed, or even create a pull request).

ISSOtm added a commit to ISSOtm/rsgbds that referenced this issue Nov 4, 2023
In particular, add the MPL 2.0 license.
This deviates from RGBDS' current license (Expat / "MIT"), knowingly so.

RGBDS has had a troubled history regarding licensing
(see gbdev/rgbds#128), but ultimately, it was
cleanly(?) licensed under the Expat/"MIT" license.

However, it seems correct to license "rsgbds" under a *different* license,
as it is entirely (at this point) my [@ISSOtm's] code.
It borrows quite heavily from the original structure of RGBDS, but most of
that has become my own and @Rangi42's code in the past few years.
(For example, we can claim with certainty the entirety of RGBLINK, RGBFIX,
and RGBGFX as our own, likewise the entirety of RGBASM's lexer.)
Rangi has OK'd this license change as well.

The choice of the MPL 2.0 boils down to being in favour of copyleft, but
also understanding that a GPL3'd RGBDS would be a big barrier to its
adoption: an assembly toolchain is a prime candidate for integrating into
compiler toolchains (and we are, in fact, aiming for that); then those
toolchains are likely to be embedded further.
I like what the GPL strives to do, but many people take issue at its
virality, and we can do without that barrier to entry.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants