-
Notifications
You must be signed in to change notification settings - Fork 16
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
Relicense under dual MIT/Apache-2.0 #4
Comments
@cmr This crate is already dual licensed under MIT and the UNLICENSE. Is there any particular reason why the UNLICENSE is not suitable for your purposes? (Similarly for BurntSushi/tabwriter#5, and all my crates.) |
@BurntSushi oops, my script was a little indescriminate about hitting MIT dual-licensed with other things. I would prefer CC0 to the UNLICENSE though, I'm not sure UNLICENSE'd components would be able to be included in the standard distribution, and I won't include UNLICENSE or CC0'd components in Robigalia (which is a shame, because I'd like to use this for our channels atm) |
It's dual licensed. You can elect to use |
The runtime (currently unreleased), "phoma", is licensed the same as the Rust standard library, MIT/Apache-2.0, and I won't include components which are not availble under either the MIT or Apache-2.0 at the licensees choice, or licenses with Apache-2.0 compatible terms that don't require redistributing a license document (for example, the CC0 is not compatible here) at users option. The patent license Apache-2.0 grants is not included with the MIT license (which is primarily why MIT is GPLv2 compatible and Apache-2.0 is not). |
But |
Ignoring the UNLICENSE, I can't then say to my users, "You can use phoma under the terms of either the MIT or Apache-2.0 licenses" if it included |
OK, so I think what you're saying is that all libraries you use must be MIT/Apache-2.0, or alternatively, MIT/X where X has Apache-2.0 compatible terms? Is my understanding correct? And you're also claiming that the CC0 is suitable as X but the UNLICENSE is not. Could you explain why that is? (Or, if it's complicated, a link to someone else explaining it would be fine!) |
Sorry, I had a misunderstanding and have since edited the comments to note that CC0 is not suitable as X. It's not MIT/X, really, it's X where X is compatible with both the MIT and Apache-2.0. For example, the 2-clause BSD license would suffice for the "MIT" compatability. I immediately regret using the word "compatible" though, as it's not quite precise here - the MIT is compatible with the Apache-2.0 license, in that you can freely combine two works that are MIT licensed and Apache-2.0 licensed. What I cannot do, though, is say to my users "If you use phoma, choose either MIT or Apache-2.0, and if you chose Apache-2.0 you only need to distribute a single copy of the Apache-2.0 license with the binary form", and instead need to have a file like https://github.com/rust-lang/rust/blob/master/COPYRIGHT that needs to be redistributed listing all the MIT, BSD, etc copyright notices. It's minor, and I'm not entirely convinced that I want to stick to my guns on this one, but it certainly seems nice to me. |
Why?
The MIT license requires reproducing countless copies of the same copyright
header with different names in the copyright field, for every MIT library in
use. The Apache license does not have this drawback, and has protections from
patent trolls and an explicit contribution licensing clause. However, the
Apache license is incompatible with GPLv2. This is why Rust is dual-licensed as
MIT/Apache (the "primary" license being Apache, MIT only for GPLv2 compat), and
doing so would be wise for this project. This also makes this crate suitable
for inclusion in the Rust standard distribution and other project using dual
MIT/Apache.
How?
To do this, get explicit approval from each contributor of copyrightable work
(as not all contributions qualify for copyright) and then add the following to
your README:
and in your license headers, use the following boilerplate (based on that used in Rust):
And don't forget to update the
license
metadata in yourCargo.toml
!Contributor checkoff
The text was updated successfully, but these errors were encountered: