Monday, January 28, 2008

GPL and BSD : impact

One of the many common newcomer questions to Open-Licensed software is why there is such hostility between the supporters of Linux, and the supporters of the various BSD's. Popular examples include the writings from the leader of OpenBSD, Theo De Raadt, who has earned the nicknames of Theo The Rat or Theo The Rant. Other examples include the chants of many BSD supporters that Linux isn't really free.

So, what's the big deal? Well, when comparing the apparent hostility of KDE to Gnome, the explanation was found in the history of the tool kits used to make each desktop enviroment. When comparing the apparent hostility of BSD to Linux, the explanation comes down to the license used for each. The BSD's use a BSD license, which stands for Berkeley Software Distribution, which came from Berkeley university. Linux currently uses the Gnu Public License version 2.

The basis of each license should actually answer this question.

There are several BSD licenses, so many that you'll typically see any particular license under BSD terms listed as a BSD-Style license. Example, the Vorbis and Theora codecs. The terms themselves are fairly simple.

#1: Anybody can access the source code
#2: Anybody can copy the source code
#3: Anybody can modify the source code
#4: Anybody can use the source code
#5: Anybody can relicense modified code


#1: Not everybody can access the source code.

That does seem a little bit more complex. Immediately we see that the GPL has restrictions placed on what can be done with the code. Ergo, the BSD-style license is more free... or is it?

Read the simplified terms of the BSD-License again. Note anything missing? Well, if you didn't, here's what is missing. Any changes that are made to the BSD code don't have to be given back to the author. Anybody can take a segment of BSD code, do whatever they want with it, and never post any changes back, tell the author what they did, or anything else.

Okay, that really doesn't seem like a bid deal, does it? Well, lets put this in perspective. Lets take a popular Linux program such as Amarok. Now, Amarok is a bit resource heavy... okay, it's resource hog. Now, what would happen if somebody took the Amarok code base, re-wrote a bit of the code to reduce memory and processor usage by 10%. Under a BSD-style license the Amarok developers would never benefit from that work. In fact, whoever made the changes could theoretically relicense the music program under a new license that would prevent Amarok from every implementing the performance fixes... even if they reversed engineered the fixes.

The GPL on the other hand starts out with a bit of structure. Under the terms of the GPLv2, only the clients of a licensed program can ask for access to the source code. If you released your GPLv2 program with no cost to everybody, then everybody who can download your program can ask for the source code.

If you released your GPLv2 program at a cost, only people who have paid for the product have access to your source code.

If anybody makes any changes to your source code, they have to send the changes to you.

Using the example of Amarok again, under the GPLv2, if somebody reduced the performance penalty for using the Amarok by 10%, the changes made to Amarok would have to go back to the original authors, and then if they want, they can implement those changes themselves, or even merge the new code in directly.


Corporations like Microsoft love the BSD-style licenses. Case in point is the Microsoft NT TCP/IP stack, which is basically a binary copy of the BSD TCP/IP stack. With a BSD-Style license, while code can not be stolen, rights of ownership cannot be enforced either.

Corporations likes Microsoft hate the GPL-style license. Case in point would be the various lawsuits filed by BusyBox. BusyBox authored code under a GPL-style license, and was successful in getting various vendors using their software to publish the changes. Under a GPL-style license, code can be stolen, and steps can be taken to bring violators back in accordance with written law.

So BSD-style licenses are bad and GPL-style licenses are good.


Again, not that simple.

The choice of license really depends on what the author wants to do with their software. If you want as many people as possible to use your program, you'll probably select a BSD-style license. If you want your software to be used in commercial products, you'll probably select a BSD-style license.

If you care about what happens with software and what changes are made, a GPL-style license is probably more appropriate. If you plan on maintaining your product as a for-sale product, then the GPL-style license is again a good choice.

From my perspective the GPLv2 is a nicely balanced license. You can do whatever you want with the software if you follow a few simple restrictions which are built to ensure that everybody benefits from any changes.

From my perspective the BSD-Style license can be a good one, if some of it's supporters would just shut up. The problem, as I see it, is that the BSD-style license supporters are about freedom at any cost. The problem, as I see it, is that many BSD-style license supporters can't see that that they generally get the raw end of a bad deal.

The problem that many newcomers to Open-Licensed software see is the conflict between those who scream for freedom at any cost, and those who scream for freedom with responsibility.

Between all the screaming though, I somehow feel that many readers will feel like I did halfway through this... tired and wanting to talk about something else.

One of the points I was originally aiming for was how the GPLv2 license was suited for much of the commercial software that is sold today, and the topic on my mind was video games. However... I went into how that would work a while ago with Auto Assault. So... not going to repeat myself.

Hopefully this does give newcomers to Open-Licensed software an idea of some of the behind-the-scenes conflict.
Post a Comment