« Oldschool | Main | Howto: Answer A SIMPLE Question »
License to Code…
By insanity | July 10, 2008
Update: If you think licensing doesn’t matter to you as a programmer… check out this article about how the PwnageTool developers may have lost control of their source code. Licenses do matter!
You know, I really haven’t been alive for that along. Less than 3 decades still. And yet, I am often in awe at how …naive… other people are.
Here, have a look at this article: Linguistic Problems of GPL Advocacy
The basic gist of this is that BSD licenses are superior to GPL licenses, as a GPL license makes claim to software that the GPL-licensing programmer never actually wrote.
The article makes a few key points:
- BSD advocates value the freedom of the “project”, where-as GPL advocates value freedom of “code”
- GPL encourages reuse of crappy code (?!)
- The GPL license is Viral
- GPL is anti-business in its views on code ownership and responsibility
- The comparison between the two licenses could be better summarised as “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.”
So lets get started…
Code vs Project freedom
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?
[snip]
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.
First point up for grabs. The author asserts that GPL programmers focus on their code as being the thing they want always free, rather than the project. This is a deliberate misnomer with which the author attempts to convey the idea that GPL programmers are essentially code-obsessed, to the detriment of everything else. The statement reveals the depth of misunderstanding the author not only has about the GPL license, but also about the capabilities of their pet BSD license.
Software freedom can be broken up into two categories. Freedom for users and freedom for developers. GPL and BSD are written with different audiences in mind! GPL is guarenteeing freedom for the user. As a user, I can do anything I want with the code. I will always be able to do anything I want with the code, and nothing or nobody can take that right away from me. As a developer however, I am restricted as to how I can use GPL code, and MUST provide source code to any program i write that uses GPL code. BSD on the other hand grants full freedoms to the developer. A developer can take the BSD licensed code, make some minor improvements, then repackage and sell the software without ever giving their improvements back to the community. There are some very detailed articles written about this, like perhaps the one at the GNU: http://www.gnu.org/philosophy/free-sw.html
The diifference can be distilled into the following: BSD is a fire-and-forget license. Once you release code under the BSD license, it is no longer under your control at all. In fact, anyone can control it now. There are no legal requirements for any user (user = programmer using code) to contribute back your source. GPL on the other hand, is a fire-and-maintain license. You release code under GPL… if anyone uses it to create their own project, your original code will be improved, and those improvements will be accessible to you for reintegration into your own systems. Every use of GPL code in public means that everyone who uses your code can benefit.
Those crappy GPL coders…
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.
This is commonly called “Not Invented Here” syndrome. It is not as much of a strength as the author makes it appear, as there are many good occasions when the code you rewrite ends up being just as badly bloated as the version you just criticized and discarded. You are also trading in known bugs for your own custom set, etc. So, rewriting isn’t an advantage.
The other argument for code reuse (especially if you can link it to a shared library as opposed to a static version as is often done in linux) is that when you fix one bug you fix them for all applications using that library. Or if you speed up the implementation, all applications using that library benefit from the speed up. Therefore, rather than having 12 different implementations of how to read metadata from image files, each with their own bugs, advantages and quirky behaviour, we can all contribute and code against a common library meaning we end up COMBINING effort rather than simply competing.
Of course, the disadvantage is that it is difficult to change the library api once it is released… but there are ways to work around this however!
“A virus has been detected”
Just for something different, this statement is actually correct. The GPL license is viral, in that any code it touches must naturally become GPL in order to fulfill the legal requirements. Why is this the case though? Now, this is one of the primary points the author rants against. In the author’s mind, a person using GPL really has absolutely no right to dictate the conditions of how their code is used once they release it to the public.
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.
The key rift between the author’s clever analogy and actual reality, is that he never really cares about the lemon in the first place. The author is clearly thinking of something where his contribution to the next project is minimal, and the improvements over his product are easily reproducible. This is not the case in the world of software. Let’s look at linux for example. Every company that repackages and sells linux, is essentially making money of EVERY programmer who ever contributed a piece of software, a line of code or even a design idea to linux since it was born. The company is profiting (hopefully!) from many many hundreds of man-years of development that has already gone into making the various interfaces used. Now, it is obvious that the company will not hunt down all these individuals and pay them for their contributions. They couldn’t ever hope to, as the software would be too expensive, and the developers too numerous for this to be possible. So insted, the GPL encourages a different form of payment: the programmers are “paid” by the company contributing their improvements back to the ecosystem. In this way, the programmer is essentially paid by getting more useful, stable and valuable software.
Now, we know companies are all honest and caring. Right? No of course not! Every company out there is trying to make money, and to do this they need an edge on their competitors. Even linux-based companies! So, it is easy to see that given a choice, no company would reveal their fixes, changes and upgrades to any free software base. After all, if they are depending on software to give them an edge, as soon as they release this, every other company now has the same “advantage” they did… so goodbye edge. The Free Software Foundation realised this, hence why the GPL code ENFORCES fair sharing of fixes back to the original community.
By contrast, the BSD license makes no conditions at all. Imagine if you will, that you are working with a colleague that you teach many new things to. You do his assignments, and help with his projects, and all he ever does is say “thanks” (if your lucky). This is what the BSD license allows! I can take any BSD code, make some bugfixes, combine it with a few other BSD projects, make more bugfixes, and release the new and improved version. Worse still, I can then charge $10,000 for this new version, and never give out the source code. How do the original programmers benefit from this? A programmer may have just given away 10 years of hard work and testing… and they will never see any return on it now that it’s under the BSD license. If the people who reuse my code are not forced to return changes and improvements made, then I am essentially giving them a free ride. And every improvement I make is further increasing their value, while bringing nothing extra to me. GPL is viral because it needs to be.
None of your business
These distinctive views of ownership combine with considerations of money, and GPL’s anti-business mindset, resulting in accusations of Communism, and worse.
Here we strike the most unsupported claim. This website does a pretty good job revealing the truth of the GPL license:
The GPL provides a substantial business advantage apart from alternative proprietary licensing: assurance that contributed code can’t be used by others who hide further improvements. This is part of the reason so many companies contribute to Linux and GNU even though they compete with other contributors. Each knows the others can’t release an improved product without making the source available and so must accept a level playing field. BSD and similar licenses are only more “business friendly” for companies that want to release proprietary software. For the overwhelming majority of companies who don’t (and even for those that do in areas where they don’t offer proprietary products) the GPL a better deal.
So quite simply, BSD is good for if you want to become the next Microsoft, and lock everybody into your propriatey software. GPL does not condone, and will not allow this kind of monopoly and stupidity to happen. GPL creates an environment where code is NOT the valuable content. If everyone has access to the same code-base, companies need to find new ways to distinguish themselves, with other useful things such as services, support, and general good-will.
GPL and closed source
“The GPL ensures your code will never be used by a closed-source application.”
After the long-winded rant against many GPL practices, the author at least closes with an accurate statement. GPL is specifically designed to prevent closed-source use for the simple fact that it is seen as detrimental to the computing community in general.
As a programmer myself, this prevention makes me more likely to contribute towards a GPL licensed project than any other, as I can guarentee that at the end of things, the company can never lock me out of my improvements by forking the project, closing it up, polishing it a bit, then trying to sell it back to me. If I am giving a company my spare time to help them fix THEIR bugs or improve their product, then is it too much to ask for reimbursement? Apparently many other programmers feel the same way… it is no accident that many huge projects all use GPL licenses.
Topics: Blind-leading-blind, Personal, Programming, Public Perception | 5 Comments »
July 10th, 2008 at 3:26 pm
To be honest with you, that whole article, and your dissection of it, is really an article and dissection about morality and ethics itself. Bear with me here (I studied ethic so I hope I know what I’m talking about).
Some ethicists believe that if you take something of someone elses and modify it in any way, that it is then no longer the original entity, and thus is a new entity that belongs to the modifier – the programmer.
Say a programmer finds a GPL (or even BSD) piece of code on the net, finds a bug and fixes the bug. In some peoples mind, that code is now their own because they have modified it for their own purposes. I’m not saying I agree with this logic, but for some people it’s fact.
Also one thing that the author seems to ignore, is that a good programmer won’t write code to fit a license, they’ll write the code to do what it needs to do, and then apply whichever license they have to apply.
July 10th, 2008 at 3:27 pm
Also, on another note, Not Invented Here can sometimes be a good thing. We have a 50/50 mix of Not Invented Here attitude when we’re re-using applets.
July 10th, 2008 at 3:30 pm
Also, that article about NIH is one of the worse Wikipedia articles I’ve ever read.
July 10th, 2008 at 4:01 pm
Heh. I definitely agree with you that the wikipedia article is a very long winded way of explaining the topic. Still, saves me typing =D
In my mind, “Not Invented Here” is never a good attitude to have however. I have no issues with ditching code if it a) is badly written, b) is not efficient/fast/clean enough for my intentions, c) is overly complex… etc. etc. Basically, if the code doesn’t suit what you need it to do, definitely write your own. But rejecting code simply because your company did not create it is quite wasteful. And in the context of the article written, the claim sounds more pure ego.
Definitely this is ethics related though. Licenses are a way of sharing working and contributing. Even more, this is also a discussion about economics, something which gets many GPL advocates in trouble. GPL is not so much granting freedom, as establishing the currency (e.g. code, patches) and restrictions (e.g., no ability to close-source) that one must abide by to play in the GPL market.
To a certain extent, if a programmer doesn’t care about licenses, then they should use BSD licenses as they clearly have no interest in control of their code. If they choose this however, they really need their GPL bitching rights taken away, as GPL is a different market-place, and a different appeal to other types of programmers.
But the choice to use or not use GPL will have a significant effect on the code they are allowed to use, especially if they are building on open source projects and intending to release it.
A little known thing about most licenses, is they only kick in when you redistribute your source outside of your company. So you can easily use GPL software in all kinds of illegal ways inside your company, as long as you don’t redistribute it!
January 6th, 2009 at 8:30 am
[...] – bookmarked by 1 members originally found by valenessa on 2008-12-10 License to Code… http://equima.pfpfree.net/?p=26 – bookmarked by 3 members originally found by PantherMarie88 on [...]