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

Consider switching from Unlicense to MIT to allow code reuse from other crates #43

Open
p-e-w opened this issue Dec 8, 2018 · 4 comments

Comments

@p-e-w
Copy link

p-e-w commented Dec 8, 2018

It is generous that you have decided to dedicate systemstat to the public domain, but unfortunately, there is a flip side to this also: Even permissively licensed code, which constitutes the vast majority of all crates available today, cannot be reused in systemstat.

This prevents code from the MIT-licensed sysinfo crate from being used to improve systemstat. Most notably, sysinfo has full macOS support while systemstat has basically none at this point, and Windows support seems to be a lot better as well. I have studied both crates and prefer systemstat's design overall, but of course there are a few things that sysinfo does better and that could be shared.

My request is therefore that you consider changing this repository's license to one that allows inclusion of MIT-licensed code. I realize that since there are currently no license restrictions at all, I could do this myself in a fork, but I would prefer not to have to fork just for that. Also, I use neither macOS nor Windows myself, so I can't make the relevant changes anyway.

/ref p-e-w/hegemon#3

@valpackett
Copy link
Owner

Is it true that we can't reuse that code? MIT licensed code requires reproduction of its copyright notice — we can do that while keeping the Unlicense for the original code. I guess that would mean it's dual licensed between different parts. That's fine I think??

Technically, you have to reproduce that code's copyright notice exactly even if you use the same license. But in practice everyone does things like putting a comment linking to where that code came from..

Also, we could ask the authors of the code that we want to include for permission to distribute under the Unlicense :)

@hawkins
Copy link

hawkins commented Dec 8, 2018

I've seen large projects include a Licenses.txt with all of their open source components' licenses included in them before. I'm struggling to think of specific examples, but I'm fairly sure I've seen it in a number of AAA video games before.

So I think it's possible we could include that license for a particular portion of the code, but that means any dependents on this crate would have to distribute this section's MIT license. That's normally not too significant a task imo, but since this crate is currently under the Unlicense which does not have a license distribution clause, this is a new burden on users of the crate. Arguably a small one, but still a new one they don't have to deal with today if they want to be above reprise. If that's a route you'd want to go, maybe mark a breaking change on the next release with this section to indicate this license requirement, so dependents don't unknowingly commit copyright violations?

@valpackett
Copy link
Owner

We're at version 0.x right now, so technically every update counts as "could be breaking".

If anyone actually contributes MIT-licensed code and doesn't get permission to relicense it as Unlicense, I'll make a note in the.. changelog which doesn't exist :D And in Cargo metadata.

@p-e-w
Copy link
Author

p-e-w commented Dec 9, 2018

Is it true that we can't reuse that code? MIT licensed code requires reproduction of its copyright notice — we can do that while keeping the Unlicense for the original code. I guess that would mean it's dual licensed between different parts. That's fine I think??

IANAL, but the point is that systemstat's current license (Unlicense) states that there are no conditions whatsoever when distributing the code. The moment even a single line of MIT-licensed code is included in systemstat, this is no longer true. "Dual-licensed" usually means the user can pick, at their option, either of two licenses. That would not be the case here. So either you would need a detailed description explaining precisely which code parts are available under the Unlicense and which are not, or just call it a day and switch to MIT, at which point things become simple.

Note that according to Wikipedia, "The Unlicense has been criticized, for instance by the OSI, for being possibly inconsistent and non-standard, and for making it difficult for some projects to accept Unlicensed code as third-party contributions; leaving too much room for interpretation; and possibly being incoherent in some legal systems."

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

3 participants