created: 27 Jan 2009
modified: 31 Oct 2013
created: 27 Jan 2009; modified: 31 Oct 2013
created: 27 Jan 2009; modified: 31 Oct 2013
status: in progress; belief: possible
created: 27 Jan 2009; modified: 31 Oct 2013; status: in progress; belief: possible
FLOSS software like Unix has been analogized to a virus whose ease of copying ensures such software success as it spreads and is modified by users. “Viral” is a bit pejorative (and indeed, that’s why the GPL’s foes employ the term), and it might be better to call it “evolutionarily fitter”; it’s easy to see why Mark Pilgrim coined “Freedom 0”:
In the long run, the utility of all non-Free software approaches zero. All non-Free software is a dead end.
A closed-source program or library can, by definition, only be worked on by its owners and those the owners permit; while a FLOSS program can be worked on by its owners and anyone in the world with bare access to the source. A closed program developed by a firm dies when the firm dies, and businesses lose interest or die all the time (FLOSS programmers may lose interest, of course, but they die less - humans outliving corporations is vastly more common than the converse, especially in the technology industry). A FLOSS program can be revived from bit-rot at any time, and is much more likely to be using standardized and open formats for its data. The lack of friction of FLOSS licenses & cultural practices means it can be used by more people and stored in more places (“lots of copies keeps stuff safe” as the archivists say). For all these reasons and more, we can expect that (in a statistical sense) the older and more stable an area of computing is, the more inroads FLOSS can make in it; entire areas of endeavour slowly become either free or Free. When was the last time most programmers paid for their compiler or text editor? When was the last time anyone paid for DOS? Closed software, to justify its continued maintenance (and hence existence), must at every point be able to capture enough value from its consumers that it is worth more than the expensive programmer maintaining it costs (along with all the overhead of such organizations, a decent profit, etc.); hence, it always is in a slippery slide to oblivion, combined with the inexorable competition from the very-slowly-catching-up FLOSS equivalents:
The fossil record–the La Brea Tar Pit–of software technology is the Internet. Anything that shows up there is free for the taking (possibly illegal, but free). Executives at companies like Microsoft must get used to the experience–unthinkable in other industries–of throwing millions of dollars into the development of new technologies, such as Web browsers, and then seeing the same or equivalent software show up on the Internet two years, or a year, or even just a few months, later…Never mind how Microsoft used to make money; today, it is making its money on a kind of temporal arbitrage. “Arbitrage”, in the usual sense, means to make money by taking advantage of differences in the price of something between different markets. It is spatial, in other words, and hinges on the arbitrageur knowing what is going on simultaneously in different places. Microsoft is making money by taking advantage of differences in the price of technology in different times. Temporal arbitrage, if I may coin a phrase, hinges on the arbitrageur knowing what technologies people will pay money for next year, and how soon afterwards those same technologies will become free. What spatial and temporal arbitrage have in common is that both hinge on the arbitrageur’s being extremely well-informed; one about price gradients across space at a given time, and the other about price gradients over time in a given place. So Apple/Microsoft shower new features upon their users almost daily, in the hopes that a steady stream of genuine technical innovations, combined with the “I want to believe” phenomenon, will prevent their customers from looking across the road towards the cheaper and better OSes that are available to them. The question is whether this makes sense in the long run. If Microsoft is addicted to OSes as Apple is to hardware, then they will bet the whole farm on their OSes, and tie all of their new applications and technologies to them. Their continued survival will then depend on these two things: adding more features to their OSes so that customers will not switch to the cheaper alternatives, and maintaining the image that, in some mysterious way, gives those customers the feeling that they are getting something for their money.1
But besides the slow stochastic expansion of the FLOSS success story, there’s a use of evolutionary metaphors I haven’t seen before: to explain the multi-decade fragmentation of FLOSS licenses.
Why are there so many2 different & conflicting FLOSS licenses? There seem to be many more than there are active programming languages, which is, on the face of it, mysterious: how could there be so many distinct legal uses? Most programmers couldn’t care less about the tiny details distinguishing the Artistic license from the BSD-3-clause license, etc.!
The obvious explanation is that many are just historical, or are copies in all but name of another license; others differ on how to handle the difficult issue of software patents; still others add idiosyncratic clauses (like the TeX license) such as forbidding use by entities connected to the United States Military. And some are there to make their mark, or they have commercially valuable incompatibilities with other licenses (such as the CDDL’s conflict with the GPL).
But those explanations can’t explain why the fundamental divide in FLOSS licenses is that of copyleft, licenses which require derivatives to be under the same license, and those which allow converting derivatives to other licenses (be they more or less restrictive). They can explain a number of instances and oddities, but why does the entire ecosystem3 cleave down the middle so neatly?
Are such legal devices as copyleft needed or even desirable? Are BSD licenses ‘more free’ than the GPL? BSD licenses seem to work well enough - the Haskell community has standardized on BSD, even requiring BSD or freer for the Haskell Platform - so what good is the complicated4 GPL?
Frogs and Game Theory
Let us consider the case of poison-dart frogs. They famously store poison in themselves and have bright colors advertising this. Now, this is a good trick for them since it means the big predators will leave them alone. It’s a good enough trick that warning coloration can be found all over the animal kingdom. But it’s also bad because they might poison themselves, and besides they still have to pay to constantly produce those colors and poisons. The frogs would like to have their cake and eat it too.
So you get free-riders - frogs which cut out the poison and just wear the poison colors. Everything is gravy for these frogs: the predators leave them alone and they have a small edge over the genuine article. But of course, fake poison frogs aren’t an evolutionarily stable strategy (ESS). Predators do eat poison-colored frogs if they get hungry or stupid enough, and if they’re all fake, then the predators will learn this & the poison colors cease to be a deterrent.
And then conditions are ripe for real poison-dart frogs to make a comeback! But just when they are triumphant and all the predators have learned to ignore them, along comes hopping a defective frog with poison-colors, but no actual poison…
So a ‘pure’ population of real or fakes is not stable. (This is a specific example of Prisoner’s dilemma thinking; a population of defecting players can be invaded by a few cooperators, and a population of cooperators can easily be infected by free-riders/defectors.)
What happens? Eventually things reach an equilibrium with enough real poison-dart frogs to keep the predators honest and a reasonable number of fakers. If things get out of kilter for a while, evolution will bring it back into whack.
So for frogs, a mix of reals and fakes constitute the ESS. What insight does this give us into software licenses?
Well, remember that the stated purpose of the GPL is to prevent users and modifiers of a software package from not making their changes public. The GPL is trying to compel them to make their work public, just as the original was public. Instead of having a public domain of software, which is increasingly smaller than the private domain as the private domain always takes and never gives5, one has a public domain that grows. By and large, commercial users & modifiers do not want this. Consortiums like the OpenGL or X.org commercial groups are rare and fractious. Even with the club of the GPL, companies may not contribute back very much at all - by one estimate, just 29.5% of companies which do development on FLOSS software even ‘plan’ to contribute back anything at all.
So in our analogy, let’s consider frogs to be software projects. Our predators - snakes, spiders - are those who would copy a project and then contribute little or nothing back. (This is a hostile action because it can starve a project of interest and contributors, even if there is no ‘direct’ harm.) What evidence we have suggests the ‘natural’ ESS is one with mostly defectors and a very few rare cooperators.
So, suppose every project used the Affero GPLv3. This license is poison to any company which doesn’t want to release source, as it blocks Tivoization and it also plugs the ‘services’ hole in the GPL6. This poison comes at a cost - even non-predators may fear the poison7, and contributors may be confused by the license or at philosophical odds with it.
In this scenario, every frog is producing poison, if you will. It is inefficient. (One wouldn’t expect a country to train every citizen as a soldier; more efficient to just train a few well). But at least the frogs don’t have to worry about predators, as the syllogism is simple for a predator - All FLOSS projects are poisoned; all poisoned projects are not prey; QED, all FLOSS projects are not prey.
Further, even existing BSD projects will be protected by the GPL projects; the large number of GPL users minimizes as much as possible the costs of using the GPL8. Just the possibility of a BSD project switching to GPL will deter all but the largest predators.
If FreeBSD threatened to switch to GPL, Apple will laugh; they have, are, and will be, maintaining their own personal fork. But if the predator doesn’t have enough resources, then it will be hobbled. Maintenance, the software engineers, make up the majority of the lifetime cost; the initial writing is cheaper! This threat is quite real; the Wine project changed from non-copyleft to LGPL specifically to punish free-riders who were causing it “some harm”.
People put off by the Affero GPLv3 or employed by those who dislike it, or just annoyed at the increased difficulty of contribution will set up projects of their own. Now the second step kicks in - of course they aren’t going to use the Affero GPLv3. They’re going to use public domain or BSD or some other non-copyleft license. And for a while, they’ll be safe. The old conventional wisdom about FLOSS projects will take time to die. And they will prosper and grow with their slight edge over more encumbered projects.
But if no frog produced poison/copyleft, then sooner or later, all the snakes will slither in and start gulping as they please. If the project is lucky, maybe they’ll even be tossed a few tiny tidbits as thanks (think Apple’s occasional contribution to FreeBSD).
But either way leads to suboptimal outcomes. The best is a mixture - some BSD, some GPL etc. It may be confusing, but it works.
the users, the justifications, & the licenses themselves↩
The GPL is admittedly much more difficult to understand than the BSD licenses. Even once you’ve grasped the elegant legal judo move at its heart, the details are many and niggling. Other copyleft licenses can be even more difficult to understand; it’s the rare Wikipedian who fully understands the GFDL and Wikipedia’s use of only part of the GFDL and the FSF amendments to it that allow a one-time transfer of GFDL works to Creative Commons’s CC-BY-SA license.↩
The straight GPL license technically only requires public changes if the source code or compiled binaries are distributed. If the code & binaries always remain on one’s own private servers, the GPL never applies. The paradigmatic example here is Google: despite using & modifying millions of lines of GPL code, its FLOSS contributions are relatively small (yes, even counting things like the Google Summer of Code). This is because Google users always connect to Google’s servers for searches or emails &etc., and never download ‘the Google search engine’ or anything. With no public distribution of executables or libraries, the GPL doesn’t apply, and so Google goes on its merry way complying with the letter (if not the spirit) of the GPL.↩
Erik Möller of the Wikimedia Foundation has written an essay on how Creative Commons ‘noncommercial’ clause can damage perfectly benign uses besides the abusive multinationals most people choosing the NC clause are no doubt thinking of.↩
There are costs to using a novel license; if it’s not OSI-approved, for example, a project might discover that no Linux distribution will carry no, nor any legal organization protect it or go after license infringers.↩