Sunday, May 4, 2008

I like my bazaar!

In his article "Why the Linux world should embrace the BSD's", Steve Lake proposed a closer cooperation between Linux and BSD. Although I have the utmost respect for BSD and what its developers have accomplished, I don't see what good it would do. I think his reasoning is flawed and the arguments he uses are - at least partially - invalid.

First, I don't agree that the cathedral is the best development method. There are many good programmers out there and they should not be denied the privilege to submit code. Note that Linus does not blindly insert all submissions. He or one of his lieutenants judge the code on its merits and decide to include it or not. Since many programmers can work on the code it is obvious that development can take place at a much faster pace. Note how the development of schedulers took place. Several different varieties were made, a lot of testing was done and in the end Linux gained overall. That is a far cry from the handgrenade method which Steve suggests Linus uses.

On the other hand, how many ports of Linux were done? It runs everything from mobile phones to mainframes. I don't see cathedral-developed software doing that (I was proven wrong here; there are 58 ports of NetBSD). From a philosophical point of view the bazaar is more democratic, allowing users to participate on every level and determining largely where development is going (Linus has acknowledged that on several occasions). You may call BSD a meritocracy, but you may also view it as a oliarchy.

Second, to me the BSD license equals to software theft. It is well known that BSD software enabled Microsoft to "steal" several key components, without doing anything in return for the community that developed it. Speaking of "sleeping with the enemy".. To use an analogy, the BSD license equals to a naked woman standing in the middle of skid row at night screaming: "Rape me! Rape me!". I don't mind anyone using my code (including Microsoft), but return the improvements that were made to the community or individual that developed it. My software was used in at least two different commercial products and the developers always submitted their modifications, which resulted in several key improvements. BTW, I use the LGPL - I'm not a Stallman groupie.

Third, I have nothing against a cooperation between both projects, but I do see legal issues. E.g. swapping code can be beneficial to both projects. May be the BSD group can live with the fact that Linus will use the GPLv2 for that code, but I'm not so sure that Linus can live with the fact that his code is published under a BSD license. That is what it boils down to in the end, even after accepting that the BSD and GPL communities have very different philosophies concerning development and licensing.

Finally, I'm desperately trying to see what he is actually proposing. What should this "partnership" do? Should it end in a complete merger of both projects? And why? Simply because "there can be only one"? Why not a merger between Microsoft and the FOSS world? Hell, let's turn over all the code we got! Then there is only one that (should) fit all. So, why not stop this silly game and let there be only Microsoft Vista? Aero isn't that bad..

Your answer will tell you why Linux and BSD should exist beside each other, why there are KDE, GNOME and Enlightenment and why the Tiny C compiler was developed (although a perfectly good GCC already existed). It is the classical error of cathedral proponents. A bazaar means choice, shopping malls, not the bleak shops of the Soviet era and - most of all - no high priests and Politbureau's. Being someone who has seen with his own eyes what dictatorship and elitarism can do to people in particular and society in general, I like my bazaar.


Niemueller said...

> On the other hand, how many ports
> of Linux were done? It runs everything
> from mobile phones to mainframes. I
> don't see cathedral-developed software
> doing that.

NetBSD supports more than 54 separate architectures.

In any case, the "bazaar/cathedral" dichotomy is an ideologically-inspired caricature, introduced by Eric S. Raymond to denigrate the efforts of Stallman and the GNU Project.

FOSS projects of any complexity, regardless of license, necessarily incorporate an element of (meritocratic) hierarchy. What the *BSDs *do* have a strategic focus that enables them to compete on equal terms with Linux in serverspace.

> Second, to me the BSD license equals
> to software theft.

Then presumably they'd have died out years ago?

Don Guitar said...

I'm with you Beez. Bring on the bazaar.

lazylionsby said...

Creativity is best nurtured in an environment that embraces diversity. Conformity to a strict set of values is like turning back the time to Dark Ages. I love my Renaissance, in any form it takes. And Linux feels so much like Renaissance to me. Humans are creative by nature, so let's just allow us to tinker with the code and give back to the community.

r_a_trip said...

I agree. GNU/Linux and the *BSD's should exist side by side. Cooperation is good and there are several instances where this happens, but wholesale joint development isn't going to happen nor would it be beneficial.

The first and ideological chasm of GNU/Linux's "quid pro quo licensing" and *BSD's "Attribution licensing" is practically insurmountable. The GNU/Linux camp wouldn't be to pleased to have a BSD licensed copy of GNU/Linux available and the *BSD camp won't go copyleft, so bridging the licensing issue poses a Herculean task.

The second practical chasm is the development methodology. GNU/Linux's strength lies in its chaotic and organic development, resulting in best of breed code. It's a bumpy ride, but it yields large improvements in relatively short time. The structured design of the *BSD's delivers dependable code which stays relatively stable over consecutive releases. In an environment where rapid change is not a plus, the *BSD's are a perfect fit. Combining the two is impossible. Either GNU/Linux loses the organic best of breed approach or the *BSD's become less stable. In both cases we lose.

On the many ports of NetBSD. It is a core goal of NetBSD to run on as many architectures as possible (be highly portable), so 58 ports is to be expected. That is the big plus of strictly hierarchical development, state what you want and work towards "ticking that item off the list". But it is also a weakness, because it doesn't lend itself for sidetrips in uncharted territory. Only the stated goals are achieved and "random" improvements outside the scope of its mission never materialise.

GNU/Linux also has a goal, but it is unstated. It is to scratch itches as they arise with the best available code at the time. That is why the development methodology is "hodge podge", but it ultimately delivers on scratching those itches. The downside is considerable less stability near the bleeding edge.

Anonymous said...

I completely agree with your comments in your article. It seems the article you are responding to is using the number of GNU/Linux distributions around as a reason to rubbish the Bazaar style of development.

This is complete rubbish. As everyone knows the main difference between the the BSDs and GNU/Linux is the license. I will rather contribute to a project that I know will continue giving back to the community, not one that could be locked up at a moments notice or no notice at all.

I bet this is the reason why GNU/Linux (kernel and GNU programs) has much more developers than the BSDs. A consequence of this (a good one too) is that there a lots of ideas floating around. Not all the ideas can be implemented in one single project and thus there are forks. And thats why there are different distributions. Each distribution picks the ideas they think are best and package them for their users.

I will hate to have an operating system that does not meet my needs (be it free or not). And that is why I use GNU/Linux, because the options are limitless (well, may be not limitless but about 100 times what you get in the BSD world).

The Beast said...

As you said the writer is only partially invalid, having such a huge amount of distros as the GNU\Linux do creates too many incompatibilities at some point, such as the package management systems. I find it stupid to have such a variety, the major distros could have agreed on a single one or at least create a new one to suit everyones tastes and optimize it.
Also i'm sure some distros could merge, not only because they could have similar goals but also because bigger developing teams mean faster and better development. The big number of distributions could mean that something may be developed in many distributions at the same time yet the developers are unaware of the fact thus wasting time by doing twice the work they could have done.