| This is a really good article. There's one part in particular that struck me: "Despite the assumption of some newer open-source developers that sending a pull request on GitHub “automatically” licenses the contribution for distribution on the terms of the project’s existing license—what Richard Fontana of Red Hat calls “inbound=outbound”—United States law doesn’t recognize any such rule. Strong copyright protection, not permissive licensing, is the default." In other words the fork + pull request + merge flow does not work on a project unless you have an explicit step like a CLA, or an alternative solution. We faced this problem early on in ZeroMQ, that asking contributors to take this extra step increased the work for maintainers (to check, is this the first time person X contributes, and have they made a CLA?) It also scared off contributors from businesses, where this often took approval (which took time and was often denied). Our first solution in ZeroMQ was to ask contributors to explicitly state, "I hereby license this patch under MIT," which let us safely merge it into our LGPL codebase. Yet, again, another extra step and again, needs corporate approval. Our current solution is I think more elegant and is one of the arguments I've used in favor of a share-alike license (xGPL originally and MPLv2 more these days) in our projects. That works as follows: * When you fork a project ABC that uses, say, MPLv2, the fork is also licensed under MPLv2. * When you modify the fork, with your patch, your derived work is now also always licensed under MPLv2. This is due to the share-alike aspect. If you use MIT, at this stage the derived work is (or rather, can be) standard copyright. Admittedly if you leave the license header in the source file, it remains MIT. Yet how many maintainers check the header of the inbound source file? Not many IMO. * When you then send a patch from that inbound project, the patch is also licensed under MPLv2. * Ergo there is no need for an explicit grant or transfer of copyright. I wonder if other people have come to the same conclusion, or if there are flaws in my reasoning. |
It also seems to have some kind of threshold for code size, because for small contributions, it says that CLA was not required.
You can see it in action from users' perspective in pretty much any repo under https://github.com/Microsoft/, if you search for "MSBOT" in pull requests. E.g.:
https://github.com/Microsoft/PTVS/pulls?page=1&q=is%3Apr+MSB...
(note the labels)