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

License under dual MIT/Apache-2.0 #5

Closed
1 of 2 tasks
modestmicha opened this issue Oct 27, 2020 · 5 comments
Closed
1 of 2 tasks

License under dual MIT/Apache-2.0 #5

modestmicha opened this issue Oct 27, 2020 · 5 comments

Comments

@modestmicha
Copy link

modestmicha commented Oct 27, 2020

I'd love to be able to use this project. Unfortunately, the license files are not present.

TL;DR the Rust ecosystem is largely Apache-2.0. Being available under that
license is good for interoperation. The MIT license as an add-on can be nice
for GPLv2 projects to use your code.

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. However, this is not the
primary motivation for me creating these issues. The Apache license also 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 and unrestricted sharing in the Rust
standard distribution and other projects using dual MIT/Apache, such as my
personal ulterior motive, the Robigalia project.

Some ask, "Does this really apply to binary redistributions? Does MIT really
require reproducing the whole thing?" I'm not a lawyer, and I can't give legal
advice, but some Google Android apps include open source attributions using
this interpretation. Others also agree with it.
But, again, the copyright notice redistribution is not the primary motivation
for the dual-licensing. It's stronger protections to licensees and better
interoperation with the wider Rust ecosystem.

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:

## License

Licensed under either of
 * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.

and in your license headers, use the following boilerplate (based on that used in Rust):

// Copyright (c) 2020 wasm-streams developers
//
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT
// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.

Be sure to add the relevant LICENSE-{MIT,APACHE} files. You can copy these
from the Rust repo for a plain-text
version.

And don't forget to update the license metadata in your Cargo.toml to:

license = "MIT/Apache-2.0"

Contributor checkoff

To agree to relicensing, comment with :

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option

Or, if you're a contributor, you can check the box in this repo next to your
name. My scripts will pick this exact phrase up and check your checkbox, but
I'll come through and manually review this issue later as well.

@MattiasBuelens
Copy link
Owner

Thank you for bringing this to my attention. This project is indeed supposed to be dual-licensed as MIT/Apache-2.0, as per 6cc5256. Therefore:

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.


If I understand you correctly, I seem like I missed some things when initially licensing this repository?

  • I'll update the README to include the license notice.
  • I'll add the LICENSE-{MIT,APACHE} files to the repository.
  • I think the Cargo.toml is already okay? Currently it's spelled as "MIT OR Apache-2.0", does that work or does it have to be exactly "MIT/Apache-2.0"?
  • Do we need the license boilerplate at the top of every Rust source file in the repository? It seems like even the Rust compiler doesn't do that.

@modestmicha
Copy link
Author

modestmicha commented Oct 28, 2020

@MattiasBuelens
Thanks!
Spelling in Cargo.toml is probably okay. The content of the issue is not mine but rather the work of a bot which at one point opened these issues against all rust crates that weren't dual-licensed yet.
I'd guess adding the license files would suffice.

@MattiasBuelens
Copy link
Owner

Can you check that this is now okay with the latest changes? If so, I'll publish a new release. 🙂

@modestmicha
Copy link
Author

LGTM. Thank you so much!

@MattiasBuelens
Copy link
Owner

Published as version 0.1.2.

Thanks again! 😄

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

2 participants