The Next Generation of Open Source?

There is a trend with the license choice of new open source projects. Take for instance the LLVM compiler infrastructure. It has been started because GCC is licensed under the GPL and therefore companies cannot integrate parts of it into their commercial product. If they were to do so, the whole commercial product would have to be free software under the GPL as well. Companies do not want to open source their products.

At this point there are a couple options:

  1. The company does not use the GPL software and keeps their product closed. They write whatever they need themselves. No additional free software is created.

  2. The company illegally uses the code. No more free software is created.

  3. The free code is so good and irreplaceable that the company will use the GPL code and make their software free software as well. Their business model needs to be changed. Free software is created!

  4. The company looks for some other library that does the same but is not free software (GPL or similar) but mere open source (MIT, BSD or similar). They incorporate the open source library into their product and perhaps add some improvements to the upstream code base. Some open source software is improved.

Option 3 certainly sounds pretty appealing. But that is probably the least likely way it could work out. So there is still 2, but when the company does not follow a license, there is not much one can do anyway. Other than suing, but that will likely not yield to any more code for the free project in question.

The options 1 and 4 are what a for-profit company will likely do. And number 4 is how LLVM was created. Paid developers at Apple and Google have written code that was then open sourced under an MIT-like license. Apple uses parts of LLVM in Xcode, and I believe that Microsoft also uses parts of LLVM in Visual Studio.

My current point of view is that if I publish my software as GPL, volunteers might contribute to it. This happens with the thinkpad-scripts and that is GPL-2+ code. If I publish under the MIT license, it might attract the same volunteers as well. Perhaps the one or other does not contribute to non-GPL projects, I do not know. Some company might be interested in my code and use it in their products. Chances are that they contribute back to my software. So by using a more liberal license, I might end up with more contributions than by demanding copyleft.

Even worse, there are now two incompatible versions of the GPL, version 2 and 3. That would have been bearable if almost all projects would have moved to the new version or stayed at the old version. But the GNU projects have moved to version 2, projects like Linux and git have stayed on the GPL 2. I have just listened to a talk by Rob Landley who said that the purpose of the GPL has changed, it is not just an improvement of the old license. This lead to fragmentation. And before the GPL 3, there was "the GPL" (i.e. GPL 2) and as a programmer you could just take whatever code, check whether it was compatible with GPL (version 2) and integrate it into your projects. It was the "terminal node in a directed graph of licenses". This totally makes sense. But with the incompatibility of the GPL 2 and 3, there is no "universal receiver" any more. To be truly compatible, one can be a "universal donor" with a license like MIT or BSD.

All in all I feel that releasing software under MIT/BSD license increases the chance that one actually gets useful contributions back from other people. The worst thing is the complexity that licensing now has, there are so many incompatible choices that I cannot see what to choose.


More stuff to read: