|
|
Subscribe / Log in / New account

The GPL and library code

The GNU General Public License (GPL) is an unforgiving beast; if you distribute something derived from GPL-licensed code, the whole derived product must be distributable under the GPL's terms. This provision effectively prevents the use of GPL-licensed in proprietary, closed-source products. That is an inconvenience for proprietary software vendors, but is clearly what the authors of the GPL intended.

In fact, the terms of the GPL work very well for some software vendors as well. Consider this press release from MySQL AB, Sleepycat Software, and Trolltech AS. These companies claim that their 2003 software licensing revenues were up 65% over the previous year. Not bad for companies which make their software available for free.

Each of these companies is a provider of "library" code - tools which can built into an application to give it new capabilities. MySQL and Trolltech make their offerings available under the GPL; Sleepycat has its own license which requires source availability (though in a weaker form than the GPL). In each case, however, there is a twist: for a fee, the company will make the same software available under a license which allows closed-source distribution.

When this model works, it works well. The free software community gets access to high-quality software, and the company gets the benefits of the free development process. At the same time, the company is able to extract money from others who are making money with the code. This model will only work in some situations; the software in question must be attractive as a component of a larger application, and external contributors must be willing to transfer copyrights or otherwise allow their work to be distributed in closed-source form. But, when those conditions apply, the dual-licensing model appears to work well.

There is one interesting problem which occasionally comes up, however; licensing this sort of library code under the GPL can block its use with other software which is available under a free, but GPL-incompatible license. This conflict has been highlighted by the fact that the GPL-incompatible PHP license means that PHP and MySQL 4 cannot be used together (or, more correctly, an application combining the two cannot be redistributed). Since MySQL and PHP are a popular combination, this restriction hurts a lot of people; it also led to a number of distributors sticking with the older MySQL 3 release, which did not have this problem. The GPL-incompatibility of the new XFree86 license is another high-profile example; in that case, the license conflict may be the final straw that signals the end of XFree86 as a viable project.

MySQL AB has now acted to mitigate the problem of free but GPL-incompatible licenses; the company has extended the MySQL client library license with the "MySQL FOSS License Exception." This exception provides a series of licenses which can be applied to parts of derived works involving the MySQL client libraries; it includes the PHP license and several others. With this extension, the PHP license conflict is no more.

The stated intent of the GPL is to ensure that all derived products remain free software. This extension of the license is clearly compatible with that goal; it still does not allow the covered code to be distributed in a non-free manner. If this sort of exception is adopted more widely, it may point toward a need for a new form of the GPL. If the end result is more free software, that would be a good thing.


to post comments

The GPL and library code

Posted Mar 18, 2004 1:55 UTC (Thu) by nan (guest, #710) [Link] (1 responses)

"... it also led to a number of distributors sticking with the older MySQL 3 release, which did not have this problem."

Wasn't MySQL 3 distributed under the GPL?

The GPL and library code

Posted Mar 18, 2004 2:14 UTC (Thu) by scottt (guest, #5028) [Link]

The server was but the client library wasn't.

Wow

Posted Mar 18, 2004 2:34 UTC (Thu) by yodermk (subscriber, #3803) [Link]

This is exactly what I suggested a couple weeks ago. Glad someone is listening!

The GPL and library code

Posted Mar 18, 2004 3:49 UTC (Thu) by npj (guest, #4267) [Link]

Isn't there still a problem with the MySQL 4 + PHP case?

Clause 3 of the MySQL license exception includes that you may "not include or aggregate any part of the MySQL Server".

The license exception then says later: 'As used in this document, the term "include or aggregate" means to embed, integrate, bundle, aggregate, link, distribute on the same media or in the same packaging, provide with instructions to download or automate any of the preceding processes.'

So wouldn't the "on the same media" clause prevent a Linux distro from shipping both MySQL server and MySQL 4 client libraries for PHP ? Any further, wouldn't the "automate any of the preceding processes" clause prevent automatic single-command installation of PHP + client libraries + MySQL 4 server by apt / yum / urpmi ? If so, isn't that a problem ?

The GPL and library code

Posted Mar 18, 2004 7:27 UTC (Thu) by kitsilano (guest, #14833) [Link] (1 responses)

Hasn't Trolltech solved this problem long ago with the QPL?

The GPL and library code

Posted Mar 18, 2004 11:11 UTC (Thu) by veelo (guest, #4694) [Link]

If I recall correctly, the QPL was their first licence, which was GPL
incompatible. It caused the Harmony initiative, which was to be an LGPL
reimplementation. Trolltech solved the conflict by dropping their QPL and
switching to the GPL.

Exception statements

Posted Mar 18, 2004 10:19 UTC (Thu) by mmutz (guest, #5642) [Link] (4 responses)

> If this sort of exception is adopted more widely, it may point toward a
> need for a new form of the GPL. If the end result is more free software,
> that would be a good thing.

Thank you! This comment was an eye-opener.

More and more code in KDE uses the Qt exception clause which permits
linking the program with any version of the Qt library, not only the GPL
ones. This is in part b/c there is no GPL'ed Qt for the Win/32 platform,
but also b/c installing two versions of Qt (one GPL and one under the
"commercial license") is impractical on the Mac and X11 platforms, too.

I think this points to a serious issue of the GPL, and one that will drive
some people away from it: You can't depend on non-free libraries. The
exception clause will work well in many cases, but fails if you want to
use a GPL'ed library which doesn't include exception clauses for the set
of libraries you depend on.

This leads to the funny situation that GPL'ed KDE programs carrying the
exception clause, but using GPL'ed libraries that don't have that
exception clause - IOW, pure Free Software - is effectively banned from
the Windows platform (which arguably needs it the most :).

This turns the original advantage of GPL'ed libs (that Free Software gets
a benefit over proprietary software by being able to use that library)
into a serious disadvantage for those preferring GPL libs over Lesser GPL
ones, by partitioning the Free Software landscape into software packages
that have the exception clause for a particular library, and those that
have not.

Of course, you are allowed to link and compile against "system libraries",
even non-free ones, and one could follow the reasoning that Qt is a
"system library" for KDE applications, but where do you draw the line? The
Qt library is surely not a system library for readline, or gpgme.

I'm not sure how to "fix" this problem. Surely, not requiring /unrelated/
GPL'ed libraries to inhibit the use of non-free libraries in an otherwise
GPL'ed application (or higher-level lib) is one model. The obvious problem
is, of course that the "application" could then conceivably be packaged
into a huge non-free library, and be combined with GPL'ed libraries using
a thin GPL'ed application. However, I fail to see the attraction of this,
since as soon as the huge library (ie. the better part of the application)
makes use of the GPL'ed library, the "unrelatedness" argument is void and
the huge lib subjected to full "GPL-derived treatment".

Personally, I'd like to see a model which would allow me to write a
GPL-with-Qt-exception application using a GPL'ed library (but not
Qt-releated library, such as gsasl, or gpgme) on Windows.

Exception statements

Posted Mar 18, 2004 13:09 UTC (Thu) by pivot (guest, #588) [Link] (3 responses)

> I think this points to a serious issue of the GPL, and one that will drive
> some people away from it: You can't depend on non-free libraries. The
> exception clause will work well in many cases, but fails if you want to
> use a GPL'ed library which doesn't include exception clauses for the set
> of libraries you depend on.

It's not a serious issue of the GPL, it's an issue with those that choose to license the software under the GPL. Eg. Trolltech might have licensed Qt under the LPGL, avoiding the scenario you describe, but they chosed not to.

Exception statements

Posted Mar 18, 2004 15:25 UTC (Thu) by mmutz (guest, #5642) [Link] (1 responses)

> It's not a serious issue of the GPL, it's an issue with those that
> choose to license the software under the GPL. Eg. Trolltech might have
> licensed Qt under the LPGL, avoiding the scenario you describe, but they
> chosed not to.

For obvious reasons. The MySQL/TrollTech business model won't work with LGPL'ed libraries, of course.

The problems I described are problems with the GPL, exactly because they force a certain type of software to be licensed under the Lesser GPL to be more widely available to end users (just as you suggest). But the Lesser GPL was created to allow for wider dissemination of Free Software among developers (there is no point in releasing an application, as opposed to libraries, under the GPL).

If TrollTech needs to distribute Qt under the Lesser GPL, so that GPL'ed software can run under Windows, then that is a problem with the GPL, no?

Exception statements

Posted Mar 18, 2004 19:03 UTC (Thu) by stevenj (guest, #421) [Link]

If TrollTech needs to distribute Qt under the Lesser GPL, so that GPL'ed software can run under Windows, then that is a problem with the GPL, no?

Nope, that is the design of the GPL: if you put your code under the GPL, it is precisely in order to prevent it from being combined with proprietary code (e.g. Qt for Windows).

This is entirely separate from the MySQL issue, which was combining with incompatibly-licensed free-software code. Their solution, which seems like a kind of GPL + pseudo-LGPL-for-free-software-only, is interesting...the main question is whether it opens up some loophole or other problem that is not immediately obvious. I'd like to see the FSF's legal counsel comment on it for this reason.

Exception statements

Posted Mar 30, 2004 17:40 UTC (Tue) by hazelsct (guest, #3659) [Link]

There's another alternative: TrollTech could simply be more consistent and dual-license Qt for Windows... Blaming the GPL for the fallout of a TrollTech marketing decision -- which happens to be inconsistent with their policy on other platforms, and also inconsistent with the press release they co-authored and this LWN article -- is unhelpful at best.

The GPL and library code

Posted Mar 18, 2004 14:46 UTC (Thu) by maney (subscriber, #12630) [Link]

If this sort of exception is adopted more widely, it may point toward a need for a new form of the GPL.

Oh, heck no, Jonathon. What it points out is that needless multiplication of more or less open licenses is a bad idea. I find myself drawn, in trying to find the words to express how misguided this notion is, to paraphrases of certain aphorisms. Occam, Franklin... I think it comes very near to being as good applied to free software - those who would give up that freedom in order to avoid a little temporary annoyance...

I find the need to intentionally make allowance, if one chooses to do so, for other licenses that are around to be a positive feature of the GPL, not a drawback. At times like this I find myself wondering if Stallman isn't irritating because his constant harping on essentials of freedom remind us of the compromises we would accept in order to gain those temporary conveniences.

The GPL and library code

Posted Mar 18, 2004 15:42 UTC (Thu) by smoogen (subscriber, #97) [Link] (1 responses)

And the problem would also go away if PHP was GPL/LPGL licensed. Why is it that MySQL had to budge?

[This from a card carrying Postgresql member who has rarely had anything nice to say about MySQL?]

The GPL and library code

Posted Mar 19, 2004 10:42 UTC (Fri) by komarek (guest, #7295) [Link]

I'm glad somebody wrote this. Why is it that PHP isn't dual licensed?

-Paul Komarek

GPL 24, world 11

Posted Mar 23, 2004 13:24 UTC (Tue) by Max.Hyre (subscriber, #1054) [Link]

Or GPL 25, world 9, when you lump the LGPL in with the GPL.

When I get discouraged by license proliferation, it's useful to check out Freshmeat's license statistics (scroll to the very bottom). The numbers above are in thousands of projects under each license.

The GPL and library code

Posted Mar 26, 2004 7:34 UTC (Fri) by r3tep (guest, #20460) [Link]

Solution to MySQL's license: Use PostgreSQL.


Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds