Why GPL? Or: How the GPL eats the kittens it protects

The GNU Public License is the best known for its viral aspects. Among the prominent GPL licensed software is of course the Linux core and MySQL. Recent newcomers include the JavaScript framework ExtJS and the application server SpringSource Application Platform. The primary motivation for choosing a viral license like the GPL for people or companys behind the product is to protect their business.

In the case of SpringSource the competitors are now IBM and Oracle (who recently bought BEA). IBM is well known for buildining their own products upon open-source software. If SpringSource would release their Application Platform under the Apache License, like the Spring Framework, there would be nothing to stop IBM from selling a new product that builds upon the Application Platform, without contributing back to the project, be it code or money.

In the case of ExtJS, choosing the GPL license was a vital move for Jack Slocum to protect his works against blatant copies. Again, the motivation was to protect Jack’s own business, which should be also in the interest of anyone using ExtJS.

The ugly thing with the GPL are the side-effects, as any strong medicine provides. As a license, the license text must be robust enough to withstand in court. As such, involvement of lawyers is inevitable. Therefore, understanding the license text is, to say the least, difficult. Considering the most common answer of lawyers – it depends! – its not trivial for lawyers either. Eventually a judge has to decide how a certain phrase has to be interpreted, which explains that the GPL is now at version three.

The negative side-effect here is that it’s nearly impossible to clearly tell when you are allowed to use GPL licensed software without GPL licensing the software using it. A few examples:

  • Is everyone running a LAMP stack without a commercial license for MySQL breaking the GPL license?
  • What means “using” GPL licensed JavaScript, and when is it more then just using? Is including ExtJS code via script tags in my web application enough to require the application to be GPL licensed? Or writing code that uses GPL code? Or code that loads my script that uses GPL code?
  • What does “distribution” mean in the context of a web application? Is it relevant? Not?

I’ve met Mike Wiesner of Spring Source yesterday at the Java User Group Cologne event and talked with him about the motivation behind GPL licensing their Application Platform and about using GPL licensed software like MySQL. According to him, MySQL AB, the company behind MySQL, argues that its okay to use MySQL, including the MySQL-JDBC-Driver, in a non-GPL application, as long as the application doesn’t use anything specific to MySQL. In other words, as long as you just use the JDBC API for reading and writing data, without anything specific like the LIMIT statement, you’re fine. The issue with that: No court has yet decided that this interpretation is correct. While the risk of just using it, like anyone else, is low, it’s far from being a desirable situtation.

In the case of the Application Platform Mike argued that just using it as the application server for your application is fine. If you create a product that builds upon it, you need to commercial license to be able to distribut it as part of your product. On the other hand, you can distribute your product without the platform, and let your customer install it himself. Of course that again is just an interpretation that you shouldn’t rely on.

I hope this gives a good idea of the more obvious issues with GPL licensed software.

Next up: How to deal with the copyright of external contributions to open-source software.


No more comments.
  1. Kevin H

    I think the article is very well written. After seeing how apache projects end up in commercialware time and time again, and at prices that are mind blowing for enterprise usage, the more interested I’ve become with GPL projects. I have found that GPL projects have a lower price points than apache projects when comparing their commercial counterparts. This lower barrier to entry for commercial endevours is very nice. I would have to pay 3x in a support contract for an apache licensed software than an equivalent commercial license with support from a GPL vendor. From an Enterprise (commercial) point of view, I’d rather see a GPL offering than an apache offering.

  2. While everyone has the right to decide on their licence, what annoyed alot of people about ExtJs’s changes was that it was more of a bait and switch.. Gather a large community based on the code being BSD, then LGPL style, then switch it to GPL and force everyone to pay.. – for something they have help build. Which is why forking ExtJS (see. roojs) was the only option for those dependant on it.

  3. jaro

    What people sometimes do not realize is that GPL license only covers the acts of copying, distribution, modification and under some condition running (if program output can be considered “work” – probably another program, but not data) of program.

    So you are safe with usage of GPLed libraries for commercial purposes, as long as you don’t need to distribute any part of the GPLed library. If you need to distribute your work using GPLed library, then the library cannot be part of the distribution, but may be downloaded by some automatic script from the internet.

    Of course you may use GPLed libraries for internal company applications. They don’t need to be distributed, and you may even charge customers for using your application based on GPL in this way.