Friday, February 06, 2009

Stupid GPL Tricks

James Farmer goes on a somewhat wide-ranging, and a few years too late whinge over the GPL and its application in Wordpress. Basically, I think he's running into a legitimate area of edge-cases -- redistributing plug-ins, themes and styles for a GPL'ed web framework. The spirit and intent of the GPL is clear from the GPL (2.0) FAQ:

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.

The FSF wants you to write GPL plug-ins for GPL apps. I find the text of the license to be less strident:

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

As far as I know, there is no caselaw going down to this level of detail in interpretation of the GPL. My "I am not a lawyer" interpretation is that this is "you probably won't successfully be sued for distributing your non-GPL Wordpress plugin."

Now, for real businesses, this is not sufficient, so they tend to avoid GPL software if they're getting into this ambiguous zone. I had a discussion once with Zope Corp. about integrating SchoolTool with a product they were developing for the State of Virginia. Because SchoolTool is GPL, they didn't want to get in any situation where by the strict interpretation of the linking and plug-ins clause, they'd be obligated to GPL code they didn't want to. And this is from a company that open sourced their crown jewels (Zope) over a decade ago, under a permissive open source license. IBM, as another example, uses and distributes a ton of open source software, but they avoid the GPL as much as possible.

What businesses want is open source software licened under a more permissive license, like the BSD License or MIT License, which are designed to let James redistribute modifications the way he wants to with no ambiguity. The GPL's intention is to not allow it.

Most open source web infrastructure, Apache, PHP, Python, Ruby, Rails, Zope, Django, etc., is under a permissive license for this reason. In practice this has worked out fine. People outside the open source software development community seem to overestimate developer affection for the GPL. A lot of developers avoid it, and many of the most successful projects would never use it.

But the GPL does what it does is meant to do, it protects the free software community. The restrictions it creates are features, not bugs. I certainly believe that without an indigestible core of GPL-ed free software projects the entire movement would have been swallowed up a long time ago. GPL is one of the most brilliant, unintuitive inventions of our time. People will be talking about the significance of the GPL long after every piece of software you use has been forgotten.

So... in summary: real business don't sell things that are GPL edge cases and ideally James would go back in time and pick a BSD-licensed platform to build upon.

No comments: