I finally found some time to check what the GPLv3 is about (10 years after it was released). I knew that it is trying to solve some problems with web services and plug into them viral component of GPL but I never understood it. I put together what it is all about so hopefully my summary will help to somebody to decide what licence to use.
There exists something called ASP Loophole. Which I understood like this:
- You develop amazing desktop application
- You use GPLv2 to develop your application
- You distribute binaries of your application to clients
- Because you used GPLv2 to develop your desktop you have to publish your app with GPL compatible licence and when distributing it to client you must make source code of your app available
- You develop some very useful web service (e.g. google search)
- You use GPLv2 to develop your web service
- You publish your web service to the internet and start charge clients for using it
- Because you never ever publish binaries of your web service you don’t have to ever publish source code of your application
The new GPLv3 is something what tries to prevent Situation 2 and says that you must publish source code even in such situation. The question is if this is good or bad.
Imagine you work in any of the thousands enterprises of the world, lets say some international bank. You create web service, internet banking or anything else for your client. If you touch GPLv3 in your enterprise, whatever you develop and make available via web service to the world, must be made available with source code. Happy persuading your managers and legal department etc. that they should let you use open source. I would call this shooting into your own leg
Another question is how would GPLv3 solve situation of micro services? Because in that case I don’t develop web service published to service. I create multiple web services with GPLv3. In the end I have one API service which does nothing else just calls other web service, doesn’t reference any GPLv3 code directly and we’re in the same situation as with GPLv2. Or have I missed something?