If you haven’t been living under a rock the past decade (I suppose Stonehenge qualifies) you may have walked in on some incarnation of the famous GPL vs BSD flamewar. It’s up there with the most famous flamewars (now *there’s* a research question for a brimming sociology student!) of our beloved Internet society.
Both licensing models have been around for a very long time. I don’t know which predates which, but it really doesn’t matter. The spirit behind both licenses is very similar: free software is good. But they realize this idea in different ways.
In the GPL license you have the four freedoms: to run the software, to have the source code, to distribute the software, to distribute your modifications to the software. What this implies is that when you obtain the software, you have the *obligation* to ensure that these four things hold true for the next person you give it to. After all, someone had to go to the trouble of preserving these rights for *you*, so you have to do the same for the next guy.
The BSD license is different, because it gives *you* the right to distribute the software, but it does not oblige you to make sure that the next guy has any such right. Well, that’s not really a problem, the next guy can ignore you and get the software from the same source that you did (if that source is still available). But if you change it and you give it to him, you can forbid him from passing it on.
So who is right? Well, the BSD camp is. The BSD is no doubt a freer license, it gives you the right to decide what rights to bundle with the software. That is much closer to the absolute meaning of “freedom” than the GPL. Alas, it’s not “completely” free, because you can’t remove the name of the software’s author and replace it with “Leonardo da Vinci”.
What the GPL terms “freedom” is actually fairly subversive, because it *forces* you to do certain things. Most people who are forced to do something call that a “restriction” rather than a “freedom”. It’s true that you have certain freedoms when you get the software, but if you want to pass it on you have restrictions, so they could just as well call it the four freedoms and the four restrictions.
Therefore, if we take the philosophical ideal of freedom to heart, even though both of these licenses promote free software, none of them represent freedom, and the GPL is far less free than the BSD.
Harmless restrictions
Suppose you’re a parent and you give your kid a candy bar and say this is for you and your brother, you can have half of it, and when he comes home give him the other half. Do you think that is going to happen just as you instructed? How confident are you?
Well, your intentions were good. You tried to ensure fairness. But we humans are scheming devils, aren’t we? So our philosophy is a bit of an idealization, we just don’t live up to it.
Is there some way we can find a measure of freedom that is good enough? The fact is that we live with a lot of implicit restrictions without worrying too much about them. If you tell your kid you’re free to wear anything you want, eat anything you want, be anywhere you want, and do anything you want, except you can’t burn the house down most kids would find that a very satisfying degree of freedom, despite the restriction. They would probably say well I wasn’t going to do that anyway, all my toys would go up in smoke.
So what can we do about sustainability?
Freedom in its pure form is a wonderful thing, but it’s not inherently sustainable. You can take something and compare it up against freedom and tell if it’s free, but you can’t use freedom to enforce freedom. That would be absurd.
The GPL model is sustainable. It offers freedom, but with the pragmatic twist that there needs to be some kind of force to keep the freedom in place. In that sense it could even be said to be more free, because the *accumulated* freedom over all people involved is higher than when one person has all the freedom and everyone else has none.
GPL freedom is isomorphic. If OpenOffice needs a way to open jpeg files, and the gimp already has code for this, OpenOffice can just take it. Then two years later if OpenOffice reads jpegs much faster, the gimp can take the modified code from OpenOffice and use it. Both parties have the same degree of freedom, and no freedom is lost along the way, the process is “lossless”.
BSD freedom, on the other hand, is “lossy”. If I get BSD code I have a lot of freedom, but the next guy doesn’t. It’s fairly well known that there is BSD code in Windows. And obviously, whatever Microsoft did with that code, they have no obligation to release their changes. So the code *was* free at one point, but it didn’t *remain* free. Furthermore, even if they didn’t change it one bit, if the original author is no longer around, Microsoft is still sitting on BSD code that is free for *them*, but it’s no longer free for anyone else.
So what can we conclude from all this? Both license models make software free, but only GPL software is sustainably free. The BSD gives greater freedom, the GPL gives more freedom. Choose which one you value more.
For a more in-depth discussion see this essay, not only for itself, but also the many many references it contains to other relevant texts.

i think i agree with you,
one rhetorical question:
since microsoft has used bsd licensed code (and altered the license), why is it so bad the madwifi developers to alter the dual license madwifi to gpl only? why bsd developers were claiming that this is illegal?
Is this really rhetorical or what?
I’m not BSD expert, and “the BSD license” is more of a concept than a text, because there are so many different ones. But as I recall the whole thing revolved around taking code from OpenBSD, and I don’t know what precise license they have. But, if we can assume that this is the license text, then the problem would be the first point in the list. “Redistributions of source code must retain the above copyright notice”, ie. while BSD does not require releasing the source code, *if* you grab BSD code and re-release it, you *can’t* remove the BSD license from it. That’s my understanding of it.
Great summary that hit the nail on the head.
BSD might sound more free, but the one extra rule that the GPL introduced makes all the difference. BSD is a license that is kinda “naive” (and I don’t mean that negative): It assumes that people will give back cause they realize that it is right. The GPL realized that many people will give back, but there’s a bunch of people and companies that need some extra … persuasion.
The GPL gives you the freedom to redistribute the code under the condition that you ensure other people this same freedom. That is, of course, a restriction – but in the long run it helps to maintain freedom.
In a way this idea is similar to modern democracies where you can freely advocate all kinds of viewpoints – unless these intend to fight democracy itself. In Gemany we have a term for this principle which can be translated as “defensible democracy”.
After all, the GPL is not that of a different thing: defensible freedom.
Wonderful piece
You know what? I guess I lived under a rock all this time
Great read Martin, from your article, I would side by GPL tbh. Any law that would give Microsoft the right to “steal” code and retain it as it’s own, is evil to me
If you want to code for Microsoft and other proprietary software companies, there’s no doubt, you must choose BSD: You release the software and anyone can get it and turn it into a proprietary piece in just one step. If you prefer to keep building a community that shares code and improve it over time, choose GPL.
Tio: I don’t know if this is what you’re advocating with the Microsoft example. But a common motivation mentioned with BSD is the fact that you can get your code into a popular commercial product. But as a developer you don’t really win much recognition over this, the code is closed, and you can’t show it off to anyway that you have code in Windows. It comes close to a fact that can’t be proven. So what’s the motivation?
I think this article explains very well the basic difference and it’s implications between GPL and BSD (type) licences. It’s so easy to think “BSD licence is better because it’s more free. Isn’t freedom what it’s all about after all”, while GPL actually brings more freedom to the society.
There’s one minor thing that I’d like to point out in the article. The paragraph five begins “So who is right?”, but nowhere before that is it actually clearly said what about. One would expect there to be a sentece like “the flamewar is about which licence is more free”, or something. The rest of the article ofcourse implies this, but because the question “So who is right?” is so clearly worded, also the claim should be, I think.
> The BSD is no doubt a freer license,
A country without law is not a freer country.
Law are here to protect the freedom. As GPL do.
strange, for a non-sustainable license, BSD products seem to be sustaining pretty well. Look at the huge number of projects under the Apache project – or the Python stuff, or postgresql or perl, python, php or … it would be more appropriate if you stuck to facts rather theorising.
it’s not just microsoft (microtheft?) that has stolen code under the BSD license, the BSD license also allowed Apple to steal a whole OS, all the modification that was done by Apple to the BSD OS source code were never and will never be released back to the opensource community, and we can only blame the BSD license for this, i’m sorry but the BSD license is just plain STUPID (i know i should try to be more objective on this). it’s the only opensource license that allows corporations, which, by design, throughly despise the opensource movement to benfit and abuse it, personally, i’d encourage any opensource project to drop that stupid, stupid license, and get on with any of the 8+ available GPL licenses! just my two cents!
For those who are intereested in in depth comparison there was an old interesting article that discuss BSD vs GPL from several angles. See
Social aspects of the BSD vs. GPL debate
http://www.softpanorama.org/Copyright/index.shtml
I disagree with some statements but it is well researched.
>Both license models make software free, but only GPL >software is sustainably free. The BSD gives greater freedom, >the GPL gives more freedom. Choose which one you value >more.
Very good description and good post.
I work on GPL projects only because I want the work I do benefit others and to pass on my work on as others have passed it on to me. I agree that the definition of freedom is stretched if I tell you HOW to use that freedom but I see the GPL as a quid pro quo: you want my info, you do it on my terms and you carry those same terms on to the next person.
The GPL is a great collaborative tool which has benefitted the company I work for tremendously and even though we are not Google, Im allowed to contribute to some Open Source projects as a way to thank the eco-system.
No one forces my bosses to do this but they feel that is the least they can do. The only thing they ask is that my work be covered by the GPL.
Its not a religion but a great way of making sure everyone benefits.
I appreciate my BSD friends as much as my FSF friends, we need both kinds for sure.
Tante has it wrong. The BSD license doesn’t assume anything. Full stop. You, or they, or whomever, wrote some code and it is his/her/their right to do with it whatever they please. That includes either not sharing it or giving it away with permission that the recipient need not share it. Or not. The only thing to remember about the whole GPL/BSD license squabble is that most of it is hot air from people who don’t know what they’re talking about-perhaps people like me…
My personal take is that, with the GPL, the freedom is granted (forced upon) the code, such that even the coder or others cannot inhibit its distribution once it is released under that license.
With the BSD license the freedom is granted, not to the code, but to the coder (or user). Even if that subsequently entails _not_ sharing said code with anybody. Yes, someone might change the code, maybe even in a way that benefits you if they would share it; but they won’t. That’s not stopping YOU from making your own improvements is it? Isn’t that what one often reads in Linux lists? ‘Why don’t you jump in and help the cause’. Remember, people are also free not to do what you want. That’s the less glamorous but more honest, accurate and mature view of the world. It is certainly not naive.
Which is more free; for the individual or the group ?
The extra restrictions in the GPL require sharing modified code.
Consider a group with no source, they import some source from outside;
– If its BSD everyone in the group gets equal access to the same outside source, not to any resulting inside source (from modifications within the group).
– If its GPL everyone in the group gets equal access to the same outside source AND to the resulting source (from modification) from inside the group.
The result is that the extra restriction in the GPL on the individual increase the diversity of source available to the group.
Result is that BSD grants more freedom over items, GPL grants freedom over more items.
Or put in other ways:
* BSD gives freedom to the indivdual, whearas the GPL give more freedom to the community.
* BSD gives you the freedom to be selfish, GPL gives you the freedom to be selfless.
Freedom is a finite resource, like money, with only so much to go around. If one person gets more, others get less. The GPL tries to spread freedom around more or less equally, whearas the BSD looks only at individual freedom. Under the GPL each individual person might have slightly less freedom, but at least they all get the same.
In the end I guess it comes down to whether you are selfish or not. If you are, the BSD is better. If not, either will do.
stolennomenclature says:
* In the end I guess it comes down to whether you are selfish or not. If you are, the BSD is better. If not, either will do.
I would turn that around:
In the end I guess it comes down to whether you are selfless or not. If you are, the GPL is better. If not, either will do.
I’m in the GPL camp. True reedom isn’t simply allowing for anything, but rather it’s more focused and purposeful. The GPL is closer to this because it defines the four freedoms. Software is not free for the user if they cannot exercise those freedoms, and many BSD-style programs end up as non-free software (e.g. Microsoft, Apple do this).
It’s not free software if you can make it non-free, and it is still free software if you’re not allowed to make it non-free. Isn’t that the obvious restriction on freedom? You have freedoms like the freedom of speech or of religion which are granted to the fullest extent, so long as they don’t encroach on other freedoms. The one restriction is to maintain freedom.
In a simple example, true freedom in driving isn’t the ability to drive wherever you want to or on whichever side of the road. Then, no one would have the ability to drive anywhere safely. Restrictions (rules of the road) are necessary to exercise freedom (driving).
True freedom isn’t anarchy. True freedom is when your freedoms are protected.
GPL is restrictive because it lacks flexibility. it is not comfortable even with some free software license (e.g. MPL, EPL, CDDL etc) therefore GPL may not be the best license for all situations, on the other side BSD license doesn’t encourage collaboration because it allows open source software to be used as property software. In my opinion open source license should make sure that open source libraries and software remain open source, but at the same it should allow attaching property libraries along with open source libraries because i think that people give preference to choice. I believe that an open source license should preserve freedom, encourage collaboration, ensure standardization, and should be flexible. I think license such as MPL and EPL are better license because these licenses have almost all qualities of an ideal open source license.
The author of this post uses the word “freer” to describe a modified BSD license compared to the GPL. A better way to describe the BSD is that is it permissive, not “freer”.
I disagree about which license is more free: the GPL enforces my right to
prevent theft of my software and of my good name with it. If I published
my software under a BSD license, I would have no recourse for the problems
I have had with mis-appropriation, followed by alteration without attribution,
and then distribution in some closed binary-only product.
And let me tell you: such things *do* happen!
The article is from the point of view of a software developer, not a software user. For the software user, both licenses are identical: the use of the software is not restricted in any way. (Both the BSD-style licenses and the GPL restrict only the redistribution of the software.)
Talk of which is “freer” is rhetoric. Interesting and worthy of discussion, but rhetoric nonetheless.
The example with Gimp and OpenOffice is wrong. Gimp is licensed under GPL but OpenOffice is under LGPL. This means that Gimp can use OpenOffice’s code but OpenOffice can’t use Gimp’s code.
@Azrael: That’s correct, I misread the license for OO.
“So who is right? Well, the BSD camp is. The BSD is no doubt a freer license, it gives you the right to decide what rights to bundle with the software. That is much closer to the absolute meaning of “freedom” than the GPL.”
Under this analysis the US was “freer” before that pesky first amendment was introduced terribly restricting the right to sue people for what they say.
Well, the article sums up the things well, but the author is obviously pro-communist GPL. You see, once EVERY software gets GPLed, that will be a communism.
Luckily for pragmatical people, you can easily ignore GPL “obligations” and just use the code any way you want – for smaller pieces, it is highly unlikely that anyone ever finds that out. Actually, in Russia (and I bet in China and India too) there are no practical differences between GPL and BSD-licensed code, at least for game development companies.
The idea that Microsoft can steal code that is free is quite ridiculous. The idea that they should give back is idealistic. The fact that most people who discuss licenses are not trained in matters of law is funny but annoying.
[...] another blog post on this topic earned a fair bit of attention. It described the GPL/BSD dilemma as a question of freedom’s sustainability. So what can we conclude from all this? Both license models make software free, but only GPL [...]
[...] this interesting article here « Quick links FreeNAS 0686c (BETA3) released [...]
All this talk about the relative freedom of the GPL vs BSD license brings up and interesting point:
All of the major linux distributions include some non-free code in the form of hardware drivers (for graphics accelerators, flash card readers, etc). On the other hand, there is a bsd which does not include any non-free code. When BSD is supposed to be so much more commercially friendly, how could this be?
Well, the BSD of which I speak calls the vendors associated with those drivers and asks for programming documentation. Moreover, it refuses binary drivers and NDAs. Imagine if the GNU/Linux community, with all of its immense power, did the same. People would be much more free!
Well, yes and no. I’m inclined to agree with you, but then there is to consider that Linux through its driver policy now supports more devices than any OS ever has. I dislike binary drivers as much as the next guy, but the compromises that have got us here perhaps are worth what they have achieved? I’m far from celebrating yet, my laptop has an ATI card and I’ve cursed that particular binary blob for years. But now things have changed, the specs are being liberated, and maybe if we’re lucky we’ll have a solid driver for ATI cards in a few years.
It’s really a matter of power and you assert that we (as in the Linux community) have enough pull to say our way or the highway. I guess both methods have been tried, I don’t know which has been more successful, I suspect the path of compromise has.
Liberte’, Egalite’, Fraternite’:
http://en.wikipedia.org/wiki/Liberte,_Egalite,_Fraternite
“The Declaration of the Rights of Man and of the Citizen of 1789 defined Liberty in Article 4 as follows:
“Liberty consists of being able to do anything that does not harm others: thus, the exercise of the natural rights of every man or woman has no bounds other than those that guarantee other members of society the enjoyment of these same rights.”
Equality, on the other hand, was defined by the 1789 Declaration as judicial equality (art. 6):
The law “must be the same for all, whether it protects or punishes. All citizens, being equal in its eyes, shall be equally eligible to all high offices, public positions and employments, according to their ability, and without other distinction than that of their virtues and talents.”
Fraternity is to treat others as you would have yourself be treated (The Golden Rule, in both positive and contrapositive form):
Do unto others as you, in your best self, would wish others to do unto you. And what you would consider hateful, with utmost self-respect, do not unto others.
That’s what the GPL is supposed to preserve in software. You can do anything you want with the software as long as it doesn’t restrict the rights of anyone else. Your rights to the software are no more or less than anyone else’s. And both of these rights are given in the spirit of fairness, that you treat other users of the software as you would wish to be treated yourself, and you impose no restrictions on others that you would not with to have imposed on yourself.
After 220 years, is this still a subversive idea?
[...] GPL vs BSD, a matter of sustainability [...]
Very useful post for us. We’re creating an open source solution for use in the developing world and trying to figure out what solution to use. Thanks!
[...] to figure out whether to use the GPL or BSD license. Numerodix had a good simplified explanation on [...]
I’m wondering: why would an open-source fanatic choose BSD over GPL? What if some company decided to use BSD-licensed open-source code to develop closed-source software. That’s not what we want, is it? Is it about getting support from companies?
I’m a big GPL enthousiast. The freedom of software should always be priority number one. And GPL ensures this, unlike BSD.
Like many things, it’s all about tradeoffs.
GPL all the way.
GPL = True Feedom
BSD is not freedom,
if you are not obliged to make sure that the next guy has any such right or freedom
then there is no freedom.
GPL = true freedom its as simple as that.
“but it’s no longer free for anyone else.”
Actually the original BSD code that MS took is still free. Their modifications to that code (ergo the proprietary bits) are not free. Is this any different to MS just writing the code themselves.
Thomas: “to develop closed-source software. That’s not what we want, is it?”
IMHO it is irrelevant what the proprietary vendors do. MS can go on making closed code, it has no bearing on me. I just choose not to use it because it is not free.
What I don’t want is to go around forcing my beliefs on those who don’t agree with what I say. If I’m promoting freedom then I want people to be free to choose what to do. If they want to use closed code then fine. I wont stop them – I might highlight the negatives of doing so but I wont stop them.
Netaxis:
That makes no sense. I am free if I can do what I choose. The GPL protects a restricted freedom – possibly (and I mean possibly) meaning in 100 years time there will be more free code out there for everyone to use.
A better approach would be for everyone, instead of bullying non-free code away with legalese, to stop using/paying for non-free code. Then in 100 years time instead of some code being free and some being non-free, it would all be free. If there is nothing to be gained from releasing non-free code then people just wont do it.