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

Why not use only the MIT license? Or even better The Unlicense or 3BSD (same license as Golang) #1680

Open
xplshn opened this issue Dec 14, 2024 · 10 comments
Assignees
Labels
Discussion needed This feature needs discussion to iron out details

Comments

@xplshn
Copy link

xplshn commented Dec 14, 2024

Disadvantages of GPL:

  • Too long, not simple
  • Incompatible with static linking unless you add an exception about that usecase
  • Cumbersome for other projects

Advantages of using a single free (The Unlicense, MIT,3BSD) license:

  • Other projects benefit from being able to use C3C without worrying about licensing issues
  • Allows static linking with c3c code
  • Lets people import c3c in their projects even if they're for private use

Rationale:

  • Anyone modifying a language's STD or compiler will upstream the changes in order to have to do less work downstream. It does not make sense to use a license as cumbersome as the GPL for a programming language.

Please consider this :)

I'm excited about c3c, already been using it and its been a smooth sailing, I'd just like to have this licensing situation be addressed. I think using 3BSD as license, just like Golang does, would be best.

@lerno
Copy link
Collaborator

lerno commented Dec 14, 2024

I want to avoid the Zig/Zen situation, where someone just forked the compiler and set off to represent it as their work to raise corporate value.

The standard library is MIT, so it is fine to reimplement the compiler and then use the current standard library if one wants to do something differently. In fact I want to make the language fairly straightforward to implement a compiler for.

@lerno
Copy link
Collaborator

lerno commented Dec 14, 2024

Note that if later a self-hosted version of c3c is written, then that one can absolutely be BSD/MIT/etc, as it would not be possible to easily fork the language using a self hosted compiler.

@lerno lerno self-assigned this Dec 14, 2024
@lerno lerno added the Discussion needed This feature needs discussion to iron out details label Dec 14, 2024
@xplshn
Copy link
Author

xplshn commented Dec 14, 2024

I want to avoid the Zig/Zen situation, where someone just forked the compiler and set off to represent it as their work to raise corporate value.

The standard library is MIT, so it is fine to reimplement the compiler and then use the current standard library if one wants to do something differently. In fact I want to make the language fairly straightforward to implement a compiler for.

The 3BSD protects the devs from people using their names to advertise derivatives. And nothing prevents a new condition from being added such as: "Under no circumstances may a 3rd party use the name of this project or its contributors to promote a derivative of this source code.", or something else.

@lerno
Copy link
Collaborator

lerno commented Dec 14, 2024 via email

@lerno
Copy link
Collaborator

lerno commented Dec 14, 2024

Also the problem in the Zig/Zen case was not using the name.

@heavymetalmixer
Copy link

heavymetalmixer commented Dec 14, 2024

As I said before, probably a good middle ground would be the MPL 2 license:
https://en.wikipedia.org/wiki/Mozilla_Public_License
https://www.mozilla.org/en-US/MPL/2.0/
https://www.mozilla.org/en-US/MPL/2.0/FAQ/

@xplshn
Copy link
Author

xplshn commented Dec 14, 2024

As I said before, probably a good middle ground would be the MPL 2 license: https://en.wikipedia.org/wiki/Mozilla_Public_License https://www.mozilla.org/en-US/MPL/2.0/ https://www.mozilla.org/en-US/MPL/2.0/FAQ/

Same disadvantages that were pointed out before. As well as the fact that it is 159 lines long, and it states that it is:

Exhibit B - “Incompatible With Secondary Licenses” Notice

    This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.

@lerno
Copy link
Collaborator

lerno commented Dec 15, 2024

Is this a problem? Are there contributors or businesses out there reluctant to contribute to C3 because the compiler is LGPL?

If so then I can consider alternatives, but right now, before 1.0 I like to retain the "poison pill" that LGPL constitutes. This ensures that companies can't fork the compiler and pass it off like in the Zen/Zig case, because having to pass modifications upstream will reveal the origins of the compiler. And also note that anyone can write their own C3 compiler. The language and the compiler are distinct things.

@heavymetalmixer
Copy link

heavymetalmixer commented Dec 17, 2024

Is this a problem? Are there contributors or businesses out there reluctant to contribute to C3 because the compiler is LGPL?

If so then I can consider alternatives, but right now, before 1.0 I like to retain the "poison pill" that LGPL constitutes. This ensures that companies can't fork the compiler and pass it off like in the Zen/Zig case, because having to pass modifications upstream will reveal the origins of the compiler. And also note that anyone can write their own C3 compiler. The language and the compiler are distinct things.

Depending on the company, yeah, they don't like copyleft licenses. Also, there are many people and companies violate GPL-like licenses all the time, like how it happens for the Linux Kernel an the situation with the Duckstation code, so for most devs copyleft licenses are useless.

@lerno
Copy link
Collaborator

lerno commented Dec 17, 2024

I'm not particularly concerned about the occasional violation. I just want to avoid the Zen scenario. And from what I can gather there is no way Zen could have happened if Zig was LGPL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion needed This feature needs discussion to iron out details
Projects
None yet
Development

No branches or pull requests

3 participants