Friday, July 13, 2007

I Hate GPL

Those whoever worked with me for quite some time, will be definitely surprized by this heading. Yes. I hate GPL. The only two open source licenses, that I don't like among OSI (Open source initiative) approved licenses are GPL and CDDL license. I don't like CDDL, and I hate GPL. But, I love LGPL.

CDDL: I don't know why this is an OSI approved license. With this license, I cannot change the code and give it to my friend. What freedom do we get by this license?

For those who do not know about GPL and LGPL licenses,

GPL: You will get source code, you can modify it, and you can distribute it for free. If you modify it, or use this code in some other application, the modified code, and the new application also would be under GPL. Those whoever gets it, they get whatever rights you got.

LGPL: It is similar to GPL, but, if you are using this code in different application as a library, then the entire application need NOT be released as LGPL, but, only the library has to be released under LGPL.

For those who cannot understand the minute details of these licenses, they may think both are almost same. But, they are like North and South.

Let's take an example.

The most popular logger for java is log4j. If this has been released under GPL, nobody would have used this library. Because, if anybody uses the log4j library in their application, they have to release the entire application as GPL. So, NO COMPANY will use log4j in their application. But, on the other hand, if it is released under LGPL, then everyone would use it. Because, for LGPL, we have to release only that library under LGPL. We can release the entire application with whatever license we want. (Of course, log4j is released under Apache Software License, the most flexible license, you can modify the code, and sell it for money without granting any permissions on the modified code).

The success of open source is because of the contribution from more people. If more people are using the software, then the no.of people who develop/support also will increase. If we stop selected people from using the software, then we are reducing the developers/supporters of that application. If we stop industry to use a software, then we are stopping the industry to develop/support the software. Actually, industry is the one which has more money, and time to do this development. If we give one good basic application which is very useful for the industry, then industry will start developing it. And, all normal users will get the advanced features for free without any effort.

LGPL makes sure that the developments on that application will come back to open source community, and still industry can use it.

GPL makes sure that industry cannot use this application, and will take so much money and time from normal poor people, and will never kill proprietary softwares.

GNU.org contains one article on using GPL and not LGPL. obviously, that is the most ridiculous article. The link to that article is,

http://www.gnu.org/licenses/why-not-lgpl.html

7 comments:

  1. Completely agree with you on this mate. I mean whats the point of library if I can't link to it under license I want.. It's like having to GPL every image made with GIMP, that would be ridiculous.

    ReplyDelete
  2. Not exactly, If I use LGPL, anyone using my library/app is allowed to reverse engineer my code (no?). This is also a major problem for me :\ GPL/LGPL, to me, both are equally bad. The software industry is being contaminated by them. These licenses are a cancer.

    ReplyDelete
  3. I don't think reverse engineering is anything to do with GPL/LGPL. It depends on the license of the software, and the local laws. In many countries, reverse engineering is legal. But, what is not legal is, doing reverse engineering and copying that code.

    ReplyDelete
  4. Congratulations. Amongst the hours of reading I did online regarding the GPL and LGPL, your article is the one and only resource that put it in PLAIN language. You said it clear and simple: the GPL will preclude any company from using such software since they won't be willing to distribute their own software under the GPL.

    I understand the GPL in that it tries to protect open-source projects from forks that become proprietary and then compete with the original project. But making it impossible to link to GPL libraries in their original form in a commercial product seriously hampers development. Exactly like you said, the industry is driven forward through financial motives. It's very nice to dream of a world where everyone contributes to an IT utopia without monetary gain or opaque proprietary stuff holding it back, but the simple fact is people don't have enough spare time or the willingness to do this to the extent that we could have such fast-moving technology wave as we have now. Time and effort are of actual value, and our de facto way of expressing value is through money, plain and simple.

    The LGPL is wonderful in this respect since they protect their projects from being turned into proprietary derivations, yet still allow the use of the library itself to create something bigger. Such aggregation of smaller parts into works on a higher level is the very foundation of software engineering.

    Also, don't get me started on people who complain of the designation of GPL as "viral" on the grounds of the term's biological definitions or other mumbo-jumbo. The simple fact is as much as "touching" a GPLd project with your code will send this license coursing through your work. Everyone who isn't delirious perfectly understands what people mean when they call it viral and it damn well is.

    Finally, with the Java SE libraries having been released under the GPL things have become way to complicated. They've got a "classpath exception" allowing you to link these libraries in your code while still distributing it under your own licensing terms. But now you have to wonder how everything interacts. You've got JAXB, for example, which is an API and then also has implementations. It's GPL with the classpath exception. Then the API became included in Java SE and the runtime comes with the reference implementation. What licensing applies to what now? To which extent am I allowed to use this? Especially with factory classes that search an implementation which may or may not be GPLd it becomes hard to determine whether you're really "linked" or not.

    Ah, at least the Apache Software Foundation has a wonderful license and plenty of brilliant projects for use. I'm becoming quite a fan of them. And in fact, using their code is the most likely way I would be inspired to contribute to their projects.

    ReplyDelete
  5. Congratulations. Amongst the hours of reading I did online regarding the GPL and LGPL, your article is the one and only resource that put it in PLAIN language. You said it clear and simple: the GPL will preclude any company from using such software since they won't be willing to distribute their own software under the GPL.

    I understand the GPL in that it tries to protect open-source projects from forks that become proprietary and then compete with the original project. But making it impossible to link to GPL libraries in their original form in a commercial product seriously hampers development. Exactly like you said, the industry is driven forward through financial motives. It's very nice to dream of a world where everyone contributes to an IT utopia without monetary gain or opaque proprietary stuff holding it back, but the simple fact is people don't have enough spare time or the willingness to do this to the extent that we could have such fast-moving technology wave as we have now. Time and effort are of actual value, and our de facto way of expressing value is through money, plain and simple.

    The LGPL is wonderful in this respect since they protect their projects from being turned into proprietary derivations, yet still allow the use of the library itself to create something bigger. Such aggregation of smaller parts into works on a higher level is the very foundation of software engineering.

    Also, don't get me started on people who complain of the designation of GPL as "viral" on the grounds of the term's biological definitions or other mumbo-jumbo. The simple fact is as much as "touching" a GPLd project with your code will send this license coursing through your work. Everyone who isn't delirious perfectly understands what people mean when they call it viral and it damn well is.

    ReplyDelete
  6. [continued because my rant is too long]

    Finally, with the Java SE libraries having been released under the GPL things have become way to complicated. They've got a "classpath exception" allowing you to link these libraries in your code while still distributing it under your own licensing terms. But now you have to wonder how everything interacts. You've got JAXB, for example, which is an API and then also has implementations. It's GPL with the classpath exception. Then the API became included in Java SE and the runtime comes with the reference implementation. What licensing applies to what now? To which extent am I allowed to use this? Especially with factory classes that search an implementation which may or may not be GPLd it becomes hard to determine whether you're really "linked" or not.

    Ah, at least the Apache Software Foundation has a wonderful license and plenty of brilliant projects for use. I'm becoming quite a fan of them. And in fact, using their code is the most likely way I would be inspired to contribute to their projects.

    ReplyDelete
  7. Many apologies... the first comment post gave back an error page but apparently did get posted. If possible please delete my last two comments.
    Again, I apologise for this.

    ReplyDelete