Linguistic Problems of GPL Advocacy
Reader Chemisor advances a theory in his journal that a linguistic misunderstanding is at the root of many disagreements over different licensing philosophies, in particular BSD vs. GPL. The argument is that GPL adherents desire the freedom of their code, while those on the BSD side want freedom for their projects.
"It is difficult to spend a week on Slashdot without colliding with a GPL advocate. Eager to spread their philosophy, they proselytize to anyone willing to listen, and to many who are not. When they collide with a BSD advocate, such as myself, a heated flamewar usually erupts with each side repeating the same arguments over and over, failing to understand how the other party can be so stupid as to not see the points that appear so obvious and right. These disagreements, as I wish to show in this article, are as much linguistic as they are philosophical, and while the latter side can not be reconciled, the former certainly can, hopefully resulting in a more civil and logical discourse over the matter."
Click below for Chemisor's analysis of the linguistic chasm.
The first disagreement I wish to address concerns the statement "BSD projects are free, but GPL projects stay free." GPL advocates cannot understand why the BSD advocates are not getting this point, and BSD advocates make accusations of Communism, which are then argued to death by both parties. The problem with the statement above is the different interpretation of the word "project." I, and I suspect many other BSD advocates, generally separate the concept of "project" from "code." While code is what projects are made of, I do not see it as valuable as the useful product a project provides. When I write a program, be it a site scraper, or a todo program, or a UI framework, I think of my project as the entity that matters. The fact that I may have copied some code from one to another is of no concern to me.
A GPL advocate sees an entirely different situation. To him, it is the code that comes first, and the applications built from that code are a secondary consideration. Even a single line of code is precious, whether it contains a complex spline formula or i += 2;. As an aside, I would expect this mindset to be more prone to reusing other people's code instead of reimplementing it. Where I would scoff at a piece of code, call it utter garbage, and rewrite the damn thing from scratch, a GPL advocate would probably wrap the garbage in another API that he finds more palatable. In my opinion, this leads to bloat from wrappers, instability from the garbage that is still there, and loss of skills. What programmer from the current generation is up to the challenge of reimplementing libjpeg? But, I digress. I am here to explain, not bash, so please excuse this little rant.
The two different viewpoints outlined above lead to different interpretation of the expression "stay free." To a BSD advocate, his project will always "stay free," and to assert otherwise is ridiculous. Once it is published, what could possibly make it go away? I have projects that I wrote fifteen years ago which are still hosted on ibiblio.org FTP site and mirrored around the world. I no longer maintain them and think them useless, but they'll persist forever, and anyone at all who wants to download them still can download them. The fact that some company can take it, write a little bit on top of it, and sell it, does not in any way affect my project.
To a GPL advocate, the project is not important; the code is important. So he looks not just at the project distributions he has made, but also of other projects that may incorporate any line of code he ever wrote. In his mind there is no distinction between his original work and its encapsulation in a derived work. He still thinks of both as "his code," and as an entity that must stay free. Naturally, any non-free derived work will anger him, because his code in it will no longer be free, even though his own copy of that code and his entire project will still be free.
The code/project distinction also leads to a different view of what it means to "use" a project, although this point is seldom argued explicitly. A GPL advocate makes a rather arbitrary and vague distinction between a human using his code and a computer using his code. Consider a situation where a user has a GPL-licensed program that converts a JPEG image to a GIF image and his own program (which he sells, or distributes under some other incompatible license) that can only view GIF images. It is legal for him and his customers to call the GPL program from the command line to convert JPEG images and then view them with his program. Suppose he gets fed up with this sequence and writes a shell script to do both operations in sequence. Is this legal? Probably. But what if he cuts out the conversion part of the GPL program and embeds it in his viewer? That would make his viewer a derived work, and so illegal to distribute under anything but GPL.
From the GPL advocate's view, this is perfectly logical. It is his code, and he wants all instances of his code to be free. The instance can not be free if it is embedded in another executable that is not free, since it can not be easily modified, which was Stallman's gripe and the reason for the GPL's existence. From the BSD advocate's view, the situation is absurd. His project is still free, and he does not really care how a user wants to use it. A shell script calling the converter is no different than a closed source program embedding it. They are simply different ways for a human to use the program. Whether the object code for the project stays hackable is also irrelevant, since the human's use of the project through a derived work project is just another way of use.
These different views of derived works are another bitter point of contention. GPL code can only be legally embedded in GPL projects, and if a non-GPL project wants to use GPL code, it must either not do that, or become a GPL project. This is why BSD advocates call the license viral, and thus elicit vehement denials from GPL advocates, who retort that nobody is forced to use GPL code, which lead to useless arguments over the meaning of "forced" or "viral" with no meaningful result. It must be reiterated that the GPL advocates look at code, while the BSD advocates look at projects, and the "viral" debate can only be resolved by examining both viewpoints. A GPL advocate sees a derived work as "his code" combined with some "other code" in a package, and his concern is that the package always be openable. "His code" always remains his code, and he sees any use or distribution of the whole package as a kind of use or distribution of his code. As a result, he feels justified in placing restrictions on how a user may use or distribute the derived work, even though he "owns" only a small part of the whole package. This is following the philosophy of copyright and intellectual property, which, curiously, is a favorite target of derision of these same people. A copyrighted work can never be wholly owned by the user, it is only rented, and so subject to control by the original creator.
A BSD advocate sees a derived work as his project being used by another project. The derived project is wholly owned by whoever wrote it, even if it uses other people's code. This is similar to the property laws of the real world. For example, suppose I sit on the curb and give away free lemons. A kid next door might get the bright idea to get my lemons, make lemonade, and sell it. The lemonade is clearly a "derived work," since it is made from my lemons, but it is absurd to suggest I have any right to tell him what price to put on his lemonade or how much sugar he can use in it. By the laws of private property in the real world, my ownership was relinquished at the time when I handed him my lemons. Just as I do not own his lemonade, neither do I own the derived works he makes from my BSD-licensed software.
These distinctive views of ownership combine with considerations of money, and GPL's anti-business mindset, resulting in accusations of Communism, and worse. But I'll save explaining that for another article. For now I will simply suggest that GPL advocates should change their language a bit, to make themselves more easily understood by people who do not subscribe to their philosophy. Specifically:
"BSD code is free, but GPL code stays free."
It would be better instead to say:
"BSD code is free, but the GPL ensures all derived works are also free."
or
"The GPL ensures your code will never be used by a closed-source application."
These alternatives clarify that you are talking about derived works, rather than the original project, which, of course, will always stay free anyhow. Also, do keep in mind the other points brought up in this article and make at least some effort to ensure you are speaking the same language before becoming too upset. I will never agree with your philosophy, but at least you'll know you were understood.
The first disagreement I wish to address concerns the statement "BSD projects are free, but GPL projects stay free." GPL advocates cannot understand why the BSD advocates are not getting this point, and BSD advocates make accusations of Communism, which are then argued to death by both parties. The problem with the statement above is the different interpretation of the word "project." I, and I suspect many other BSD advocates, generally separate the concept of "project" from "code." While code is what projects are made of, I do not see it as valuable as the useful product a project provides. When I write a program, be it a site scraper, or a todo program, or a UI framework, I think of my project as the entity that matters. The fact that I may have copied some code from one to another is of no concern to me.
A GPL advocate sees an entirely different situation. To him, it is the code that comes first, and the applications built from that code are a secondary consideration. Even a single line of code is precious, whether it contains a complex spline formula or i += 2;. As an aside, I would expect this mindset to be more prone to reusing other people's code instead of reimplementing it. Where I would scoff at a piece of code, call it utter garbage, and rewrite the damn thing from scratch, a GPL advocate would probably wrap the garbage in another API that he finds more palatable. In my opinion, this leads to bloat from wrappers, instability from the garbage that is still there, and loss of skills. What programmer from the current generation is up to the challenge of reimplementing libjpeg? But, I digress. I am here to explain, not bash, so please excuse this little rant.
The two different viewpoints outlined above lead to different interpretation of the expression "stay free." To a BSD advocate, his project will always "stay free," and to assert otherwise is ridiculous. Once it is published, what could possibly make it go away? I have projects that I wrote fifteen years ago which are still hosted on ibiblio.org FTP site and mirrored around the world. I no longer maintain them and think them useless, but they'll persist forever, and anyone at all who wants to download them still can download them. The fact that some company can take it, write a little bit on top of it, and sell it, does not in any way affect my project.
To a GPL advocate, the project is not important; the code is important. So he looks not just at the project distributions he has made, but also of other projects that may incorporate any line of code he ever wrote. In his mind there is no distinction between his original work and its encapsulation in a derived work. He still thinks of both as "his code," and as an entity that must stay free. Naturally, any non-free derived work will anger him, because his code in it will no longer be free, even though his own copy of that code and his entire project will still be free.
The code/project distinction also leads to a different view of what it means to "use" a project, although this point is seldom argued explicitly. A GPL advocate makes a rather arbitrary and vague distinction between a human using his code and a computer using his code. Consider a situation where a user has a GPL-licensed program that converts a JPEG image to a GIF image and his own program (which he sells, or distributes under some other incompatible license) that can only view GIF images. It is legal for him and his customers to call the GPL program from the command line to convert JPEG images and then view them with his program. Suppose he gets fed up with this sequence and writes a shell script to do both operations in sequence. Is this legal? Probably. But what if he cuts out the conversion part of the GPL program and embeds it in his viewer? That would make his viewer a derived work, and so illegal to distribute under anything but GPL.
From the GPL advocate's view, this is perfectly logical. It is his code, and he wants all instances of his code to be free. The instance can not be free if it is embedded in another executable that is not free, since it can not be easily modified, which was Stallman's gripe and the reason for the GPL's existence. From the BSD advocate's view, the situation is absurd. His project is still free, and he does not really care how a user wants to use it. A shell script calling the converter is no different than a closed source program embedding it. They are simply different ways for a human to use the program. Whether the object code for the project stays hackable is also irrelevant, since the human's use of the project through a derived work project is just another way of use.
These different views of derived works are another bitter point of contention. GPL code can only be legally embedded in GPL projects, and if a non-GPL project wants to use GPL code, it must either not do that, or become a GPL project. This is why BSD advocates call the license viral, and thus elicit vehement denials from GPL advocates, who retort that nobody is forced to use GPL code, which lead to useless arguments over the meaning of "forced" or "viral" with no meaningful result. It must be reiterated that the GPL advocates look at code, while the BSD advocates look at projects, and the "viral" debate can only be resolved by examining both viewpoints. A GPL advocate sees a derived work as "his code" combined with some "other code" in a package, and his concern is that the package always be openable. "His code" always remains his code, and he sees any use or distribution of the whole package as a kind of use or distribution of his code. As a result, he feels justified in placing restrictions on how a user may use or distribute the derived work, even though he "owns" only a small part of the whole package. This is following the philosophy of copyright and intellectual property, which, curiously, is a favorite target of derision of these same people. A copyrighted work can never be wholly owned by the user, it is only rented, and so subject to control by the original creator.
A BSD advocate sees a derived work as his project being used by another project. The derived project is wholly owned by whoever wrote it, even if it uses other people's code. This is similar to the property laws of the real world. For example, suppose I sit on the curb and give away free lemons. A kid next door might get the bright idea to get my lemons, make lemonade, and sell it. The lemonade is clearly a "derived work," since it is made from my lemons, but it is absurd to suggest I have any right to tell him what price to put on his lemonade or how much sugar he can use in it. By the laws of private property in the real world, my ownership was relinquished at the time when I handed him my lemons. Just as I do not own his lemonade, neither do I own the derived works he makes from my BSD-licensed software.
These distinctive views of ownership combine with considerations of money, and GPL's anti-business mindset, resulting in accusations of Communism, and worse. But I'll save explaining that for another article. For now I will simply suggest that GPL advocates should change their language a bit, to make themselves more easily understood by people who do not subscribe to their philosophy. Specifically:
"BSD code is free, but GPL code stays free."
It would be better instead to say:
"BSD code is free, but the GPL ensures all derived works are also free."
or
"The GPL ensures your code will never be used by a closed-source application."
These alternatives clarify that you are talking about derived works, rather than the original project, which, of course, will always stay free anyhow. Also, do keep in mind the other points brought up in this article and make at least some effort to ensure you are speaking the same language before becoming too upset. I will never agree with your philosophy, but at least you'll know you were understood.
Is it...
The GPL sucks?
or
The BSD Sucks?
oh well. emacs still sucks. go vi.
It's not just semantics. GPL-advocates such as myself recognize the value of more permissive licenses such as the BSD license and the LGPL. BSD-advocates often fail to understand why the GPL is so successful.
Freedom is free.
Face it, this is the internet. Everyone has read your arguments, the counter arguments to you arguments and the counter counter arguments and so on ad infinitum. They've made a decision about this stuff and advocacy won't change that.
If people disagree with you, the correct course of action is to troll them for the lulz.
echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
A shell script calling the converter is no different than a closed source program embedding it. They are simply different ways for a human to use the program. Whether the object code for the project stays hackable is also irrelevant, since the human's use of the project through a derived work project is just another way of use.
Complete bollocks. Is the freedom to modify code not the entire point of GPL licenced software?
No one is forced to use your code. If they don't want to abide by the license they can write their own code.
This clause should be included in any contract, license or law:
1. Thou shalt not over-analyze the fucking wording of the contract!
Seven puppies were harmed during the making of this post.
Whether this is true or not is up for debate. Only time will tell, the whole software industry is still young. Always good to have linguistic clarity though, I appreciate the post.
Qxe4
I think the differences between the two camps go far deeper than simple semantics. I don't think you can sum up the conflict as a Mars-Venus miscommunication thing. There are some deep philosophical differences between the two camps. GPL guys are more evangelistic than BSD guys. BSD guys are more Laissez-faire about codes than GPL guys.
There's really no direct political comparison, but the closest example to BSD vs. GPL in that context is a Libertarian vs. Social Democrat example. BSD guys know that someone can take the code, not give back anything; the principle of real freedom, as they see it, is more important than whether or not anything is "given back". The public good is an indirect benefit, in their view. GPL guys, however, take somewhat more of a socialist-lite view, with the public good of "giving back" of more importance than total freedom to use the code however the end user sees fit.
Basically, both camps have some very different definitions of what "freedom" is... just like any other kind of politics.
Life is hard, and the world is cruel
Without being a full-time developer, or terribly invested one way or the other in the licensing issues (I've put the GPL on a couple pieces of code, I bet they've never been used by another person), the first thing I think of when I hear these licenses is something like this:
- BSD ensures freedom of the *producer* of the code to do what they want.
- GPL ensures freedom of the *recipient* of the code to do what they want.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
Would have been better if you removed your bias, but you did well resisting it in any case.
It is true that GPL advocates consider it important that the user of the software be able to modify the software and redistribute the results.. and that includes the copies of the software the are embedded in some other software.
How we know is more important than what we know.
While I agree with some of the author's points regarding linguistic disagreements obscuring philosophical disagreements, and sympathize with the stated desire to bring clarity to this ongoing flamewar, the actual article spends as much time pettily denigrating the pro-GPL position as it does clarifying the disagreement, thereby undermining the substantive aspects of the argument in favor of partisan score-making.
Or, in short: good job, you've obscured any actual insight with smug self-righteousness.
In what purported to be a rational theory, the rant about GPL-advocates being too lazy to rewrite poorly-written routines and instead simply wrappping APIs around them in the effort to dogmatically reuse code seemed out of place and detracted from what had been up to then a rather promising start.
I'm sorry that Chemisor seems to misunderstand the purpose of the GPL and the culture it grew out of.
The GPL is not communist. It is not anti-business. The GPL simply prevents someone from taking shared code and no longer sharing. If you use GPL-licensed code in your product, you have an obligation to give others the same freedoms you received when you redistribute the work.
This is an up-front permission, however. Nothing prevents someone from looking at a GPL'ed application or library and then doing the work themselves to implement the same functionality, nor contacting the copyright holders of the code and negotiating a custom licensing agreement.
BSD is also a very valuable license, but with different goals in mind. There is no reason for the antagonism between proponents of both licenses.
Nah, they'll take your TCP/IP stack and stamp "(C) Microsoft corporation" on it.
Just kidding.
While this doesn't concern the BSD license in itself, we can analyze WINE and the spinoff project Cedega.
In the beginnings, Wine was X11 licensed, and it meant the derived code could be closed. And that's what happened with WineX, now called Cedega. While the WineX guys promised they would return the code (specifically the DirectX code), DirectX development in Wine froze. Years later, Cedega still hasn't returned the code, and Wine just barely came out from it.
This is the kind of issues that the GPL addresses.
Now let's analyze the other side of the coin: MySQL. It was designed as LGPL, and it was used in a wide variety of projects. Later, the MySQL guys decided to move from LGPL to GPL, demanding huge amounts of money from anyone who used MySQL for commercial purposes. So people now are switching from MySQL to PostgreSQL - which is BSD licensed.
(now I wish there was some alternative version of the LGPL that forced derivative work to REMAIN in that license so that people could use it in proprietary products - but still giving back any changes to the library itself - so we could avoid bad moves like the MySQL one. Best of both worlds, eh?)
So, what does PostgreSQL do to remain free? It's the complexity. No one in his 5 senses would fork the Postgre code and make it private. The project is mature and complicated enough so that it remains free. (But then again, so is Freebsd, and look at what happened with Apple Mac OS X).
Both the GPL and BSD licenses have their weaknesses - but if I'm starting a new end-user project and want all the community to benefit from it, I'd chose the GPL license without thinking it twice.
For my part (and only for my part. of course) my rationale for GPL is simple: I give you permission to use what I've made. You effectively pay for that right by giving identical permissions to use your related code back to me, and by extension to anybody else. It is a quid pro quo.
I don't dislike the BSD license at all. Anybody want to use it is fine by me. But there is no "I used the BSD license so you must too" requirement - the defining part of the BSD licence compared to GPL is that there is no such requirement. So don't get mad if your BSD code ends up as part of a GPL'ed project. It's what you chose to allow after all.
Trust the Computer. The Computer is your friend.
Consider the GPL - it's approved by both. But Red Hat doesn't publish Free Software, it publishes Open Source - and software written by Richard Stallman isn't Open Source - it's Free Software, and RMS is happy to explain the difference.
I'm squarely in Stallman's camp; my audio project Ogg Frog is definitely Free Software, not Open Source.
You see, the distinction isn't the license - it's the purpose behind making the project either Open or Free.
As Stallman explains, Open Source is about efficiency - volunteer coders, and "many eyeballs" finding and correcting bugs and security holes. Free Software is about creating a community - Stallman has made it very clear he hopes to get back to the way things were back in the day, when source was shared openly with no non-disclosure agreements, copyrights or licenses.
Unfortunately, the English language has a problem: Free can mean "as in Freedom", or "without cost". When I speak of my Free Software project to non-techie people, they think I'm just not going to charge money for it, and question my sanity. They have no clue about the meaning behind Free Software.
Spanish doesn't have that problem: Free as in Freedom is "Libre", free as in beer is "gratis". But those words don't make sense to English speakers.
I have developed a convention, but it's too subtle for most to take notice. Perhaps they will if you join me: I capitalize the "F" if it's "Free as in Freedom", but use lowercase for "free as in beer". I think that emphasizes the difference, and maybe if we all wrote it that way, more people would understand.
Stallman is a great man, IMHO, but he has a marketing and image problem: very few non-technical people have the first clue as to what Free Software means. Most think it means "freeware".
But Open Source doesn't have that problem; many who don't know source code from Shinola do understand what Open Source is all about.
Thus I long ago gave up trying to describe Ogg Frog as Free Software in casual conversation. I only say that when speaking to others who will likely understand. Most of the time I describe it as Open Source, but feel guilty in doing so. I feel like Matthew in these verses:
(BTW - there's no Ogg Frog to download yet, not even CVS or Subversion. Out of consideration for my non-technical target market, I'm not releasing anything until it reaches it's planned 1.0 feature set, and is reasonably bug free. At least for non-technical users, I feel The Cathedral is better than The Bazaar.
Request your free CD of my piano music.
But these are just word games, like when Microsoft wants to be known as innovative, or Google want to be known as the opposite of evil. In reality, people and companies still have to read the license terms in detail, and choose what works best for them based on the fine print.
Maybe it's just late and I glazed over something, but it seems like he missed the primary difference between the two licenses: WHO the license is free for. With BSD code, it's the developer; developers can do just about anything they want with your code. For the GPL, it's the end user; they are guaranteed to be able to modify/update/fix any incarnation of your code*.
Certainly there will always be the (rather pointless) philosophical question of which is more 'free', but what's the point? They're both pretty darn free, but take their freedom in different directions. Why not just choose the one that fits your vision of your project best, and understand that other licenses have their merits too?
*For those keeping track, this was the primary purpose of the GPL3. It ensures that GPLed software on protected devices can be updated.
Pretty good analysis you've got there. That's speaking as someone who is not a coder, and takes no part in these discussions, but I have watched them several times, never coming to a definite conclusion. That is, I don't favor one side over the other. It would make me pretty angry and sad to find out that Microsoft were making tons of cash from a piece of code that was originally GPL or BSD or whatever. Only because I see it as the big guy profiting from the little guy's work. But I also love the BSD way of thinking, which is absolute freedom. Here, I wrote this. Do whatever you want with it. I don't care. Whatever. I suppose that my political tendencies cause me to lean more towards BSD licensing.
That said, I only found one thing I don't agree with: the lemons analogy. I don't think GPL coders tell other people how to use their code, only that it should be GPL. You could create a bomb with my code, for all I care, as long as the end result is also GPL. That's because (I assume) GPL coders believe that if what you're writing builds upon their previous work, you should give it away with as much freedom as you received it.
So, the analogy would be more like, you give out lemons for free, with the sole restriction that whatever product is made from these lemons should be given away for free, as well. So if these lemons were GPL, the kid would have to... like give the lemonade away? Or sell the lemonade and give away the recipe he used to prepare the lemonade to whomever asks for it. Also, you would be forced by the GPL to divulge the source of your lemons, if anyone asks, because they didn't come out of yourself, so you didn't create them. You're just the distributor, kind of like ibiblio. So that would be like you have to point to the tree you got them from... or the store you bought them at... or something like that.
I just want to mention a variant of the GPL that is often used and rarely noticed. All those standard header files included when compiling with GCC are Runtime GPL. If you take the point of view that the GPL is viral, you can think of the Runtime GPL as the completely non-viral GPL.
Using some variants of the GPL linking exception, it becomes possible to release code that must stay Free (as in Libre) in derived works without requiring every last bit of the derived work to be Free.
It as close as you can get to a compromise between the BSD and GPL licenses as far as I am aware. The biggest downside is that neither side believes the license to be trustworthy. It is too GPL for the BSD folks, and not GPL enough for the GPL advocates.
Insert self-referential sig here.
I really think the GPL vs. BSD license debate really comes down to the differences in the point of view of who or what is actually "free".
In the case of the GPL, it is the code that is free; it is born free and stays free. And modifications will still keep it free. For BSD, it is the person who obtains the code that is free; the person can more or less do whatever he/she sees fit with the code.
So, I think there is a fundamental philosophical difference of which entity the freedom is assigned to.
Then don't use it, and deal with it. It is also impractical for me to build a Ferrari, I don't steal them.
The LGPL still has conditions to use of the code. You may, for example, not forbid disassembly of code linked to LGPL code... The "GPL with linking exception" is better if you want no restrictions on code linking to your code.
They should make the Latin translation of GPL and BSD licenses the standard. It's a nice old language that no one really adds words or meanings to. I think that'll fix the gratis/libre issue. If it worked for the Catholic Church, it should work for the rms...
However, small companies can take, modify and sell media players based on mplayer if they like, the only stipulation being that they have to follow the terms of the GPL when doing so...
Actio personalis moritur cum persona. (Dead men don't sue)
That sounds remarkably similar to the argument the RIAA uses to go after file sharers. Not that there's anything wrong with that.
It seems to me that there is enough room for both licenses in this world. There's no need to pit them against each other as enemies. In the end it's the author's code, and if he wants to make a license that requires you to film yourself doing a back flip and send it to him before you can use it, then so be it!
All this shit about communism and Laissez-faire is ridiculous. Both licenses are built upon US copyright law.
LS
There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
That's it... /. is over. Here we have a car analogy in a flame war about software licenses which mentions Apple, Microsoft and media players.
Now what is there to live for?
I don't therefore I'm not.
As far as I'm concerned the author totally misses the point with the GPL.
I don't care about "my code being free" the way he expresses it. What I care about is to create a level playing field between free and proprietary software and nurture the existence and proliferation of free software. With BSD-style licenses the proprietary software developers always have an upper hand in the race for consumer mindshare and userbase since they can take any BSD code but doesn't need to (and most often doesn't) contribute anything back. They can always stand on our shoulders but we can't stand on theirs so they will always be a head higher.
For free software to proliferate, which is a personal goal for me for many good reasons (freedom to tinker, freedom and savings for enduser, privacy protection, establishing of standards, sharing of wealth, better for developing nations, faster inovation etc) we need a bigger userbase which currently is occupied by proprietary software.
We will not achieve that by remaining upstream providers for proprietary projects, which BSD-licensed projects often become.
The BSD-licenses have their place in certain projects where it is more important to advance the technical field for both proprietary and free software than advancing the marketshare of free software.
Without marketshare we are always bound to play catch-up with standards, hardware support etc. and as a community remain marginalized. The GPL, with it's restrictions against inclusion in closed projects, helps us to gain marketshare.
I've been dealing with BSD licenses for decades, and GPL licenses since Richard Stallman and his comrades first created them. I'm sad to say that this original post is absolutely full of strawmen. People like *THIS*, who skew the basic terms of both sides, are much more of a source of GPL/BSD license flaming than almost any of the actual software authors and license advocates. It starts with is original statement 'BSD projects are free, but GPL projects stay free'. BSD projects are under the control of the project owners. GPL projects are under the control of the users. The difference is _that_ simple.
He continues iwth his skew: When he says 'But, I digress. I am here to explain, not bash, so please excuse this little rant.', right after insulting the free software process of nabbing snippets from one project to use on another in the GPL world, it's adding insult to injury. This rant is inexcusable, and ill-founded. Most projects do not benefit from a complete rewrite, because few programmers are capable of doing as thorough a job as a few years of evolution and community involvement can provide. If you think I'm kidding, take a look at all the software building tools published, and at how GNU-make continues in such widespread use because the problems that the new developers think are so devastating pale in comparison to the ones we solved 10 or 20 years ago with basic Makefiles, and we know how to scale them and manage them.
Then there's "GPL code can only be legally embedded in GPL projects, and if a non-GPL project wants to use GPL code, it must either not do that, or become a GPL project." Complete nonsense: there hundreds, if not thousands, of dual-license projects in broad use. It's awkward, but effective.
And there's "By the laws of private property in the real world, my ownership was relinquished at the time when I handed him my lemons." Complete nonsense. There is a sign up that says 'If you make lemonade from this, you have to share'. Plenty of apartment-sharing situations and households work this way: when mom or dad shows up with the groceries, and the other one cooks, everyone gets some of the food. It's part of why they bring home the groceries: the teenager does not get to take all the lemons from the refrigerator and make and sell lemonade and expect dad to buy more lemons everyday.
His following claim that "The derived project is wholly owned by whoever wrote it, even if it uses other people's code." is also complete and utter legal nonsense. Copyright doesn't work that way: duplicating paragraphs, or pages, or chapters out of another work can indeed be a violation of copyright. Copyright law is tangled, and such complete disregard for its actual use simply obscures it. Software copyright is particularly nasty: If you look at a typical closed source license, such as a Microsoft End User License Agreement, you'lll see a complex and far more intrusive set of copyright restrictions.
I've worked with BSD licenses on a number of projects: they do have their uses, but this is just insulting to the GPL community. And it makes the BSD license users look bad because it claims to speak for the rest of them, when there are plenty of better reasons to use BSD licenses. (Controlling one's own project, and making money by selling enhanced proprietary components, is a legitimate business model, for example.)
But I won't code for free. That's the real difference.
I'm happy to let you use things I've written, but if you're not willing to reciprocate with what you do with it, you'll need to cut me a cheque.
Then don't sell the code - sell a maintenance contract, or some other service around the code. For the video player you mention:
Embed the GPL'd code into a product. Make the product shiny, stylish and nice (hardware). Sure everyone will know HOW the product works - but people will pay for a **whatever** that looks/feel nice and/or works well.
Red Hat are doing OK. Even Sun Microsystems are doing it now.
The GPL isn't "anti-business", it can work. Just stops you making money from software like Microsoft do. You need to "add value" to the product.
The GPL isn't really about some abstract "protect the code" idea - it IS about protecting the end user. GPL'd code cannot come with a "ransom note":
PaY mE mORe MOn eY oR yOU wOn'T gET t hE pATchES tO m aKE tHi S WOr K pROpeRL y, oR sTAy SeCU re
If the success of your project is predicated on the obscurity of the implementation then the GPL is useless for that. There are legitimate reasons for this, but they are fairly rare. Most business case around software are quite compatible with the GPL.
The whole "linguistic" discussion (free, viral, stays free, whatever) is missing the point. You shouldn't choose license from which has the best sound-bites, but from which best supports your goals. Here is a seven year old article about how to choose a free software license that should be much more useful. The specific choice of licenses may have changed, but the reasoning hasn't.
Well, I'm a programmer myself. If you are saying that I'm not "adding value" to the product, you don't value my job. Prior to saying that I should be stopped from "making money from software" make sure that you are able to implement all of applications you use yourself, or make sure that you're comfortable with using only "free" ones.
And no, people won't pay for GPL'd program if they know they can have it for free, no matter whether it works or not. Even Slashdot uses CentOS, though they can probably afford sufficient number of RHEL subscriptions. And as I have already said, not every product can live off the support.
If you succeed in making programming not profitable, then I just start violating GPL. And luckily for me, a Russian citizen, no Russian court is going to do anything against that, because GPL status in Russia is still unclear (we're not bound to contracts that are not written on paper, and license agreements in foreign languages are invalid if signed between two Russian subjects).
Coding etudes
I got this far -
"A GPL advocate sees an entirely different situation. To him, it is the code that comes first, and the applications built from that code are a secondary consideration."
Before I stopped reading because the writer is an idiot. This is both inssulting and a straw man argument.
Well, not really, but he uses non-copyleft free software licenses when he believe they best serve the cause of free software.
For example, the compression code from gzip was separated out in the zlib library, and made available under such a permissive license, because it was deemed more important to remove dependency on software patents (which affected the compress and gif file formats) than on non-free software.
So the license "hate" between BSDL and GPL is mostly one way only, from BSD-fanatics. If you want to be loved by everyone, go with BSDL. Even Microsoft will love you.
I've grown a passive disliking of the GPL that's probably quite unfounded. The reason why? Whenever there's an argument about licensing there's always someone shouting about the GPL the loudest with lots of facts and statistics.
It's quite similar to politics where the best argument doesn't always win *if* you lose the voters while trying to explain it to them. Of course in most cases licensing shouldn't be a political decision but a case-by-case breakdown of the features of each license.
as long as they provide the source for the tcp/ip stack and bundle it with windows, i don't mind.
The problem with BSD is that they can get away with it.
As long as they put in some about box the sting that used to be required by the old BSD back then, they are OK.
You won't get the source.
The BSD team may subsequently fix and upgrade the stack, you don't know if Microsoft had followed the upgrade, and you don't know which modification were made to the code so you won't be able to replace the stack with a fixed one either.
Whereas GPL components have a specially crafted license that guarantees that the code will keep all attached freedoms, and make sure that, wherever the piece of code ends, the users will still be free to hack it.
BSD tries to give the greatest freedom *to developer* helping them leverage existing opensource code, without restricting what they can do with it (minus a textual mention that used to be required in the old BSD), even use it in completely closed projects. You, the developer, have the right to do whatever the fuck you want to do with a piece of code, even if that means blocking those freedom for everyone else and making sure you're the single person that can do whatever you want to do.
GPL tries to secure *users'* freedom : no matter what the developer tries, the code will remain free and the user will still have his basic freedoms guaranteed. Wherever the code ends up, you as a user, will still have the freedom to do whatever the fuck you want with it (as long as you pass along that freedom to the next in chain).
Now whichever is best for you between BSD of GPL is a matter of preference :
- Will you mind that someone else will take your code, stamp "(c) Microsoft" on it and no further improvement will be exchanged between the community and that fork ? Preventing forever users to do whatever they want with it ?
- Or is it important for the piece of code you pick to give, the developer total freedom to do whatever you want with it, even use it in a closed source project ?
I personally prefer the GPL because of the guaranteed perpetual freedom (for users to hack it) that comes with it.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
The author is right that the confusion between what the two licenses do is a linguistic problem, but it doesn't have anything to do with the meaning of "code" vs the meaning of "project" -- it just has to do with the definition of freedom, which nobody can agree on.
Some people think the BSD version is "more free"; others think the GPL version is "more free". But people usually ignore the contested meaning of the word and assume that their preferred meaning is the only one, which leads to them screaming things like "how can you be against more freedom?!".
Incidentally (and very interestingly), the same debate applies to political ideas of freedom: political libertarians tend to define "freedom" in the BSD sense; political progressives tend to define it in the GPL sense.
No jokes, please
Then don't use it, and deal with it.
It is also impractical for me to build a Ferrari, I don't steal them.
Ofcourse you can decide what license your code has. You can make it closed source if you like. But then you can't claim your code is more free, can you? You restrict others with your choices.
I know you're not talking about closed source but about GPL, but when I read your post, I realised that this exact same argument works for both. BSD grants freedom to people who want to use your code in their project. GPL and Closed source restrict that freedom. Closed source does it to keep freedom only to the original creator of the code, and GPL restricts freedom of derivative projects (to a much lesser degree, obviously) in order to ensure freedom for everybody else.
But either way, your "deal with it" means that derivative projects have to deal with a limited freedom.
Contracts are bi- or multi-lateral actions in which every party gives up something in exchange for something else. Copyright license is not contract.
"My opinions are my own, and I've got *lots* of them!"
Some code for the mind, some for the heart, and some for the wallet.
BSD licensing is predominantly for the mind: sheer pursuit of technical excellence, don't bore me with politics and philosopy.
GPL licensing is for the heart, for abstractions that may not play well in the head of another. Technical excellence is fine, but societal "improvement" is the driver.
Proprietary is for the wallet. And let's not kid ourselves: something as tedious as getting the printer driver to work right is something I would need to be paid large frogskins to get excited about. Glad someone else beat their head against those details.
The challenge is to relax and admit that there is not a single motive that models "Why folks do code".
While respecting RMS, I can't reach the religious level of devotion to an idea like the GPL without a fully-worked philosophical system showing how he arrives at proprietary software being "unethical". Un-bright, perhaps.
I use software from all three major flavors of license, and they all have their time and place.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
If you succeed in making programming not profitable, then I just start violating GPL. And luckily for me, a Russian citizen, no Russian court is going to do anything against that, because GPL status in Russia is still unclear (we're not bound to contracts that are not written on paper, and license agreements in foreign languages are invalid if signed between two Russian subjects).
In Soviet Russia, GPL violates you!
That is the situation where GPL leads us to. Inability for small companies to profit from mplayer code means that only large companies like Microsoft or Apple will be able to sell closed source video players.
Cry me a freakin' river. Your problem is that you're lazy and want someone to hand you a market.
Here's a novel concept: find something and make a plan to get people to want it. When every TV had rabbit ears, someone figured out how to get people to pay to watch it. When water was free, someone found a way to sell it. The difference between those people and you is that they got off their butts and made it happen. They didn't sit at home whining that someone else was already giving something away.
Can't compete with free? That's your problem. Either give people a reason to pay you anyway, or move on to a market that's not already wrapped up. I hear kids are buying video games these days. Could you do something like that, or would that be too much work for you?
Dewey, what part of this looks like authorities should be involved?
Isn't it nice to have the power to define your enemy? Given a sufficiently inaccurate definition, anyone can be reviled. It's called "Straw Man."
Where I would scoff at a piece of code, call it utter garbage, and rewrite the damn thing from scratch, a GPL advocate would probably wrap the garbage in another API that he finds more palatable.
Wow, kicking the article off with an unsupported ad hominem attack. You're really not seeking common ground here, are you?
I'm not going to analyze the whole piece, because this emotional little rant doesn't warrant it. But the ending is just as illuminating:
I will never agree with your philosophy, but at least you'll know you were understood.
"I will never agree with your philosophy" is the sure sign of a zealot. "At least you'll know you were understood" implies that blame for the vitriol between the contemptable jihadists on both sides can be layed entirely at the feet of your enemy.
This is not a religious war except for those who make it one. Don't frame your argument against the least rational or most distasteful (to you) of your enemy's positions. Seek the most rational, most appealing, positions and try to agree with them first. Then frame a discussion around why a rationally self-interested individual would choose each proposition. It will make a more interesting article, not add to the stick-throwing and name-calling, and as a result you will look less like Bill O'Reilly and more like Socrates.
All that said, the fact that you made an attempt at all and were willing to put it out there to be scrutinized at all is commendable.
Stop-Prism.org: Opt Out of Surveillance
If the viral GPL gains sufficient foothold, than there will be NO part of the market that is not considered a commodity, and there will be no place for the vast majority of programmers to make any money, and software will die.
That's ignorant. Something like 95% of programmers are employed to write in-house software for their companies to use, and those jobs are perfectly safe from "the viral GPL". The only people who would stand to lose are the ones writing commodity software in the first place.
Dewey, what part of this looks like authorities should be involved?
You are essentially whining about the nature of free market compeititon.
It is the nature of the market to make EVERYTHING a commodity. Even if
it is tied up in patents and copyrights, eventually even those are meant
to expire. Someone will build a better mousetrap. Someone else will do it
cheaper. You don't even have to worry about a bunch of STUDENTS replicating
your idea and giving it away.
The fact that Apple can't stagnate or it will become irrelevant is what
causes Apple to continue trying to push the state of the art. The fact
that they are driven by external forced to improve is HOW IT SHOULD BE.
Yeah, if what Apple wants to sell you can already be cobbled together by
a bunch of freshman CIS students then they shouldn't have "some god given
right" to be able to base their business off it. They need to move on andprovide genuine innovation.
This situation where programmers can make money selling you this years
rehashed version of a 20 year old idea with no real improvements is
what the problem is. Hopefully Free Software will help kill that.
A Pirate and a Puritan look the same on a balance sheet.