The GNU General Public License (GPL), used by many popular free software packages, contains some requirements that makes it hard to use in the real world.

Most importantly, its clause that program modules under the GPL must not be linked with modules under licenses that add any term the GPL does not have, prevent many good software packages from being combined.

There is an alternative license - the LGPL - that has all the power to protect people's own work, but without the extended requirements that serve no other purpose than to force your will on someone else and his work.

Intended audience: People who advocate free software, people who need to choose a license for their free software package, people who want to understand some of the political issues that handicap development of free software.
Required knowledge: You must understand why authors of free software differ in their opinions what to allow others to do with the software they released to the public.

Let us first look at what the GPL basically says:

In practice, this can only work if all free software is licensed under the GPL, which is not the case and never will.


Imagine you want to build a free desktop software. Such a desktop software is built from various tools that are built on top of various libraries (collections of software elements).

If you use the GPL as a license for this desktop (that means, for its applications and libraries), you cannot ship applications built from these sources and other sources under licenses with additional requirements.

The UNIX desktop KDE suffered from this problem: KDE was meant to be under the GPL license (that means, the applications and higher-level libraries), but they used a middle-level library that is license-wise incompatible with the GPL. Shipping such software is illegal (except when you ship sourcecode only, not ready-to-run applications, which isn't the right thing for the end-users a desktop is targeted at).

The KDE folks could have changed their license to a non-GPL one, which would solve the problem with the middle-level license.

But the GPL with its virus character would still damage such a project. For a desktop software framework like KDE, it is a requirement to take existing applications and changce them in a way that the user interface (and other features) are compatible with the rest of the KDE desktop, so that the user finds familiar with all applications on his/her desktop.

But if the application to be integrated is licensend under the GPL, it would in turn be illegal to put it together with the imagined non-GPL KDE system. So, the level of "fault" changes, but the result is the same: You cannot legally ship your complete ready-to-run desktop package.


The GPL works only when all software you ever want to integrate into your system is licensed under the GPL or licenses that are a full subset of the GPL.

In my opinion, and I think recent events support this opinion, this will not work out in practice.

Too much useful software is already released under licenses that are "free enough" for people's needs (free distribution, sourcecode available and distributable in changed form). Too many people and companies contribute free software, but don't use the GPL for various reasons (the virus effect, or the fact that the GPL is rather complicated and behaviour in legal contentions is unknown, or these people just don't care for details, or people who have been alaniated to the idea of the GPL by badly behaving GPL advocates - quite common).

Of course, the other main point about the GPL is still valid. The point that you must not take GPL sourcecode, build software from it and sell it without shipping the modified sourcecode. Some people don't have a problem with this (i.e. the BSD teams), but others have and use the GPL for this reason.

As before, this causes problems for software built from several modules. The GPL enforces you to ship sourcecode for all modules your package is built from, even those packages that were not placed under the GPL by the original developers. This is nothing than a slap in the face for other free software developers. This requirement even applies to the sourcecode written by the person that assembles the modules. He/she doesn't have the freedom to choose a license for their own work that isn't based on your work. They have to GPL it and give our the source. It is not surprising that many people have a problem with that.

If someone builds a product on your sourcecode and you want him/her to be obligated to prodice sourcecode for your modules, the LGPL variant of the GPL might be used. The LGPL enfores that the sourcecode derived from your work is available in its changed/improved but in contrast to the GPL it doesn't enfore shipping the sourcecode for modules that weren't your work.

I think this fundamental difference between the GPL and the LGPL isn't clear enough to many people. Even strict Anti-GPL people like me don't have a problem with the LGPL. My impression from disucssing these points with other free software contributors that people often fail to understand the "virus" effect that makes the GPL different from the LGPL. They want people to be obligated to give out the changed sourcecode for other people's sourcecode that was integrated into a product. They don't really want to enfore this requirments to unrelated modules, but they chose the GPL because "anyone else does" and make the whole problem even bigger.


The GPL's main purpose is to make all software free, and it tries to reach that goal by eliminating all software under different licenses, even if those licenses aren't commercial-style non-copy contracts, but implement just different meaning of "free" and people find no problem with them in practice.

Me and many other developers want as much software under useful licenses as possible. For us, it is unimaginable not to use a product that fullfils all requirements (comes with source, may be redistributed) because these requirements happen not to be the exact one of our pet license. Acceptable or not, that's the question.

We choose licenses for our work that makes it possible for the software to be used in as many places as possible. For many, it's even OK if that use is restricted, but for those developers that don't want this the LGPL is a valid alternative that doesn't damage other software.

Still unclear?

If my point still isn't clear to you, you may refer to the following archive of an email discussion of my page.