Saturday, December 16, 2006

Software that grows as it goes

In a previous post, I discussed the key principle of Free Software: that software should be freely modifiable and redistributable.

Now I'd like to discuss a completely unrelated concept called Open Source. Its key principle: that software should be freely modifiable and redistributable.

The Open Source movement is based on the observation that, in some contexts, an appropriately-structured but otherwise freewheeling community of developers can produce some damn good products. The key to this result is a sort of ratchet effect - if any individual can take effective ownership of the code then said code can only get better. Improvements will grabbed by everyone else; crappy code will be dropped and eventually disappear from the communal pool.

Of course, this is a major simplification of the process of software development, but it's close enough to reality that the Open Source community is doing very well for itself, thank you very much. The concept of "forking" - creating duplicates of the codebase, which can then be worked on separately - remains pretty much a nuclear option, and is rarely used. But the availability of this option enforces passable development standards, and where it has been used (for example in the case of the XFree86 window manager) the result has been massively increased levels of innovation and quality control.

In fact, this development model has been so successful that many large companies such as IBM are increasingly supporting Open Source communities by seeding them with paid developers. The companies get software that fits their needs more completely, plus a lot of goodwill; everyone else gets better software. And they only have to pay for the developers once, rather than having to continually spend fortunes on Microsoft software licenses. Everyone's happy, except for the closed-source companies.

Like any other model, Open Source has its strengths and weaknesses. The biggest problem is the chicken-and-egg issue of getting buy-in for any truly revolutionary ideas you may have - until those ideas have debuted, it's hard for potential contributors to realise how valuable they could be. Closed source, as far as I can tell, is a lot better at innovation for this reason.

However, the corresponding strength is very powerful. Open Source's advantage is that the development community scales proportional to the user community. The more users you get, the more contributors will emerge. As a result of this, already-solid products such as the Apache web server, the Firefox web browser and the Linux operating system can be honed to a level of quality that wouldn't be easily possible for a closed-source company. Open Source can be envisaged as a rising tide that eventually beats closed source but that leaves a big gap open for new ideas.

How does this differ from Free Software? Well, they both focus on Quality in software arising from availability of the source code, and are completely compatible in terms of artefacts, processes and philosophies, but beyond that the similarity ends. Free Software is fundamentally a matter of civil rights - FSers are the libertarians of the software world. Open Source, by contrast, is simply keen on this neat development model that has been stumbled upon. FSers see OSers as sellouts who miss the point; OSers see FSers as uncompromising zealots.

So which am I? Really I'm neither - I have yet to contribute anything to the FOSS (Free/Open Source Software) community except in the most tangential fashion. In another sense I'm both - I agree with both groups. However, if I had to pick one, I'd probably go for Free Software. It's my computer and it'll do what I tell it to and like it, dammit!

No comments: