Why is there no contributor agreement?

Hey guys,

I just came here after trying to get the lastest news about Forge and Bukkit development. The last days were pretty interesting, but also pretty noisy around the internets, but I tried to read up on Sponge before starting to ask questions.

One thing I’m really interested in: Why is there no Contributor Agreement for Sponge? Is it assumed that all code that a developer contributes via a pull requests has the MIT license too? Or is it just that I didn’t find the agreement yet?

I do read Sponge FAQ - Google Docs and got to the point where a sentence states “If we avoid GPL, we will not have this problem […] A Contributor License Agreement is not necessary”, but I really don’t understand what that means in the context of a pull request… If I contribute code to the project, my work is not automatically put under MIT and if I choose to apply the GPL to my code (or don’t use any license at all because I want to keep all my work under my control) and it gets added to the projects sourcecode, the legal situation will not be different from the current situation, or is it?

I really like to see an open sourced server for Minecraft with a solid technical base, but I also want to understand the organizational base before diving into the plugin development.

Also, I’m not a native english speaker, so if I wasn’t clear enough with anything, please ask and I’ll try to expand my point… :blush:

No GPL code will added to the project. If you re-license new version of your code, it will not apply to your older versions nor your code will merged to project.

In other words: If you release something under MIT, you give it away. You can release it under some other license (of course), but anyone else can do same.

@bensku But mainly it depends that no non-MIT licensed code will be merged from any incoming pull requests, right?

1 Like

For code to be used coming from non-MIT licensed it would need to be re-licensed, if one submits non-MIT licensed code it will not be used. if you give your code away using a pull request it is assumed to use MIT, or public domain, because you’re really giving it away to the pull.

Hm, well. I’m not sure if a pull request really means “giving your code away”. IANAL but as long as there is no license on the code, my understanding is that all rights remain with the author of the work…

Anybody here with better understanding of the law or even a real lawyer?

No one here is a real lawyer, you’ll find coders, gamers, administrators, artists, but no lawyers; trust me we’ve looked. We are in despite need, so everyone pester your buddies in law school, even if someone here has taken Gr12 Law on such things: speak up!

This is where the dispute is, because with other things, such as photographs, if you post without licencing it becomes public domain.

1 Like

Too bad, sometimes it would really help to have a lawyer around. :sunglasses:

Ok, maybe some more devs will speak up here on this topic. Will keep checking when I come back to the forums.

NOTE: I don’t have a law degree, but I’ve been involved with software law a couple of times before so I’m familiar with all this.

Then you are breaking your own license. You are sending code to the repository that you know is MIT licensed. Because you are allowing your code to be added as such, then you are accepting that your contribution is being made under the MIT license, and once you have done that, there is no going back.

Note that while the GPL is compatible with the MIT license, the same is not true the other way around. You cannot use GPLd code in an MIT licensed codebase without making the whole codebase GPL.

You can say “I want this code to be licensed under the GPL v3 now”, but then they could just use the code that was licensed under the MIT license before - it’s irrevocable if being used legally, as it allows you “to deal in the Software without restriction”.

It might be worth adding that into the CONTRIBUTING.md file, actually - making it explicit that any PRs can only contain code that you are allowing to be licensed under the MIT licence. I might just do that.

No, you don’t. You still own the code you write - you are just stating what your conditions for use are. The MIT license is clear that you can do what you like with it, include sub-license, as long as attribution is given, and that the copyright statement stays in tact. You are effectively saying that you can do anything with the code, but that you still own it, and that your copyright statement must appear.

A copyright transfer agreement would be giving your code away to someone, or something else. They could then do what they like without your permission. Indeed, they could then stop you from using your own code - because they can enforce copyright against you. This will be why there is no CLA/CTA - because this transfer of copyright means that the code is no longer your code.

No it doesn’t, it follows the same rules - country dependent. No license = all rights reserved - see Berne Convention - Wikipedia. There are a few cases where you are right, but they are few and far between.

3 Likes

great explanation, thank you.

1 Like

Great summary, @dualspiral. Much more clear than my posts. :+1:

This is the point that I am not sure about. At this point I forked the repo, so my repo also contains the MIT LICENSE.txt - so there is no issue when I create a pull request.

But what about someone with a bad intent? Maybe one contributes a patch via http://issues.spongepowered.org/ and that code gets merged into the codebase without even a pull request and no forked repo. Just a plain text file with code. Before adding the code to the Sponge codebase the author would have to grant the project the irrevocable permission to use this code.

I know, that example is a bit constructed and theoretically… but after the big bukkit drama over the last days, maybe it’s a good thought experiment to think it through. Just to make sure it’s complete nonsense.

I did some small contributions to an Apache project, and there you have to read, understand and sign the Individual Contributor License Agreement available at https://www.apache.org/licenses/icla.txt before you can work on anything, even documentation changes on the project wikis. There’s this paragraph:

You hereby grant to the Foundation and to
recipients of software distributed by the Foundation a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare derivative works of,
publicly display, publicly perform, sublicense, and distribute Your
Contributions and such derivative works.

That sounds like a proper way to contribute your work to a project without having the project worry about my intentions. When I contribute my work and I sign such an agreement, the project can use, reproduce and distribute my work. Same for everything based on my work.

Ok, time for bed now. All this legal thoughts make my brain hurt. :smile: My Sponge workspace is set up, I hope I can dive into some more technical things in the next couple of days.

I think it’s important to make sure the discussion is out there - and I see your point about the CLA. As I say, it should probably be at least mentioned in the CONTRIBUTING.md, at least it’s there then. Glad I could help straighten some of it out though!

This is not completely correct. It really depends on the CLA itself, and most of them are not a full copyright transfer, but a non-exclusive copyright license. Meaning that they are allowed to use, sell, distribute, re-license, whatever, but are not able to stop you from using, selling, distributing or re-licensing your own code. But it also means that you can’t stop them doing that.

But again, this all depends on the CLA in use. So, note to every other developer thinking about contributing to an open source project that has an CLA, read the CLA carefully. You might be giving away more rights than you might be willing.

Fair point - I kind of mixed CTA and CLA into one - it certainly does stand if it’s a copyright transfer agreement, but a contributor license agreement can be a bit more relaxed.

I’ve had to deal with these things when submitting academic papers too - they are usually CTAs though…

What I don’t understand is why we wouldn’t want a CLA/CTA anyway. That seems like it would’ve prevented the CraftBukkit DCMA from having any legal merit because if we transfer or irrevocably license contributions to the project, nobody can say “Hey you misused my contribution” we can just say “You signed a document telling us you gave permission to do whatever we needed with the code”.

1 Like

It’s yet more legal cruft to sift through, can turn off potential contributors, and is redundant with a proper license anyway.

1 Like