GPL Aftermath Part 1: Commercial Support, ExtJS

As a follow up of my Why GPL? Or: How the GPL eats the kittens it protects post, I’d like to discuss a few comments and explain some misconceptions, my own included.

The first comment was by 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.

To paraphrase: When looking for commercial support for a given type of software, Kevin found that GPL-licensed software is way more attractive than more liberal licensed projects, eg. Apache License. I can’t confirm that, as in most cases vendors don’t list prices on their pages. Usually they ask you to contact their sales team instead. It would be interesting to hear from others about their experiences with commercial support for open-source software.

Next up, a comment by Alan Knowles:

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.

While I can understand the critique of changing the license from very liberal (BSD), to less liberal (LGPL) to viral (GPL), I doubt the bad intentation Alan suggests. Looking at the licensing-history of ExtJS and the reasoning behind the changes, it looks more like inexperience than “bait and switch”. Inexperience in the sense that Jack didn’t expect other companies to exploit his work and the license, unlike eg. the people at SpringSource (see the Why GPL? post).

Still, the GPL doesn’t seem like the right choice for ExtJS. As Dean explains:

You can use as much GPL’d code in your web application as you wish. If you sell your web application to other entities (meaning they get a copy of the code to do what they want with it) then that’s considered distribution and your code is now GPL’d.

Web applications are not distributed and you do not need to share your code.

From this point of view, you can use ExtJS in your web application, and the point here is to protect the work against other companies. As Jack put it:

Ext JS 1.0 is released under the LGPL, minus the Assets license as mentioned above. Shortly thereafter 2 major publicly traded corporations (names withheld) embedded Ext JS into their development frameworks. With no mention of Ext JS except in credits files that no one ever saw. No support for all the work that had been put into the framework. Neither one of them even contacted us. How can that be possible? Can they do that? How can we compete with them taking such a large chunk of our potential customers?

Which makes me wonder why Alan and co. had to fork ExtJS. It would be more obvious if Jack’s license of choice would have been the AGPL, as Jose Maria Arranz points out:

I agree, this is the reason AGPL v3 (Affero GNU Public License) was invented for. AGPL is the GPL for web (network based) applications.

If you want to ensure that everyone who uses your open-source software in a closed-source web application buys a commercial license, the AGPL should be the license of choice. It basically excludes the “using” case that the GPL leaves open. The GPL FAQ explains the type of usage:

If the program is expressly designed to accept user requests and send responses over a network, then it meets these criteria. Common examples of programs that would fall into this category include web and mail servers, interactive web-based applications, and servers for games that are played online.

If a program is not expressly designed to interact with a user through a network, but is being run in an environment where it happens to do so, then it does not fall into this category. For example, an application is not required to provide source merely because the user is running it over SSH, or a remote X session.

So while you can use and modify GPL-licensed ExtJS code without having to GPL your web application, the AGPL would exclude that, too.

The second part of the GPL Aftermath will deal with the Open-Source Java and how Sun handles that, also discussing the “GPL+classpath exception”.

Thanks to everyone who commented here and on DZone’s Javalobby!

-Jörn