David A. Wheeler's Blog

Tue, 17 Jan 2006

GPL v3: New compatibilities, with potentially profound impacts

Finally, there’s a draft version of the GNU General Public License (GPL) version 3. Lots of people have looked at it, and commented on it in general, so I won’t try to cover the whole thing in detail. ( Groklaw covers the differences between version 2 and 3, for example.) A few highlights are worth noting, in particular, it’s surprisingly conservative. This GPL draft changes much less in the license than many expected, and the changes were long expected. As expected, it continues to combat software patents; it has more clauses about that, but at first blush its built-in “aggression retaliation clause” is surprisingly narrow. It counters digital restrictions management (like Sony’s ham-handed attacks on customers in 2005), but that is unsurprising too. It’s longer, but primarily because it defines previously undefined terms to prevent misunderstanding, so that is a good thing.

What has not gotten a lot of press yet — and should — is that the new GPL will make it much easier to combine software from different sources to create new products. This could result in many more free-libre/open source software (FLOSS) programs being developed, and might have very profound impacts.

A key reason that FLOSS programs have become such a powerful economic force is because it’s easy to combine many different pieces together quickly into a larger solution, without requiring large sums of money to get use rights, and anything can be modified arbitrarily. As more people find use for FLOSS programs, a small percentage end up making improvements (to help themselves), and contribute them to the projects (typically so they can avoid the costs of self-maintenance). After it reaches a critical mass, this can snowball into a program becoming a dominant force in its niche; it’s hard to compete against a program used by millions and supported by thousands of developers, even if you have an unlimited budget.

But this snowballing effect only works if you can combine pieces together and modify them in new, innovative ways. As I noted in my essay Make Your Open Source Software GPL-Compatible. Or Else, it is a serious problem when free-libre/open source software (FLOSS) is released that isn’t GPL-compatible. Since most FLOSS software is released under the GPL, a program that is not compatible with this dominant license creates situations where the same software has to be written twice, for no good reason. Most people have heeded that advice, but for various reasons not all. There’s been a related effort to reduce the number of licenses accepted (or at least recommended) by the OSI, for the same basic reason: license incompatibilities create trouble if you want to combine software components together.

The new GPL text addresses this by allowing a few specific restrictions to be added, such as requiring renaming if you make your own version, or forbidding the use of certain names as endorsements. Two licenses in particular that were incompatible with GPL version 2 — but appear to be compatible with GPL version 3 draft 1 — are the PHP 3.01 license, used by the widely-used PHP language and libraries, and the Apache License version 2.0, used by not only the #1 web server Apache but also by a variety of other web infrastructure and Java components. Both of these licenses include limits on how you can use certain names, for example, and these limitations are acceptable in GPL version 3 draft 1. No one has had a chance to do an in-depth analysis, yet, and there are more drafts to come… but the current direction looks promising.

All is not perfect, of course. One license that causes many problems is the OpenSSL license; it has variations of the old “obnoxious advertizing clause” license that have been thorns in the side of many for years. I think it’s unlikely that this would get changed; such clauses can really harm many FLOSS-based businesses (they can’t afford to put 10,000 names on every piece of advertisement). The GPL isn’t compatible with proprietary software licenses, either, but that is by design; the whole purpose of the GPL is to allow software to be shared between users.

In any case, this looks like a good start, and will probably mean that many more people will be able to use (and create) FLOSS programs in the future.

path: /oss | Current Weblog | permanent link to this entry