26 Jul 2006 ncunningham   » (Journeyer)

A conference was held in Ottawa last week, at which one software engineer (GregKH) confidently proclaimed "Linux is evolution, not intelligent design". What he of course meant was that Linux doesn't develop by people sitting down and making great and intricate plans about what they're going to do, then starting to do it. Rather, the vast majority of work on the Linux kernel is people making small improvements here and there to what already exists.

But is that evolution? When we normally talk about evolution, we are talking about the process by which all life came to be, the Darwinian theory of random mutation and 'natural selection'. Clearly, this is a very different beast. No one is going to claim that the developers of computer programs do their work by making random modifications and then waiting to see if the end result works better. If they did, we wouldn't expect them to be employed for long, we certainly wouldn't pay them the salaries they currently earn, and our technology would be nowhere near as advanced (or reliable) as it is.

More than that, our process of software development does involve intelligent design. People sit down and (at least in the ideal case) think carefully about the changes they're going to make, the best way to make them, and then do careful testing of the resulting patch.

And the process is not entirely one of incremental improvement. In my work on Suspend2, I've done several reworkings of different parts of the subsystem, first carefully designing the new way of doing things (eg storing metadata or implementing a cleaner internal API), then rearchitecting and reworking the code to match the design. These changes don't fit into an evolutionary model because they involve the addition of new code that's initially useless (no reason for 'natural selection'), and then break the old code in order to switch it over to the new implementation (not incremental).

Greg isn't alone, however. Many people would refer to the development of Linux as evolution. So how did people come to call incremental development 'evolution'? My guess would be that a superficial similarity has been seen and taken as an accurate summary of the whole process. In short, people aren't thinking carefully about what they're saying, just saying and accepting statements because they 'sound right'.

What about you and I? How superficial is our examination of the things we hold as true? I call myself a Christian. Do I do so merely because Christianity as I know it 'sounds right', or have I seriously examined its claims, so that I can say "I know whom I have believed, and am convinced that He is able to guard what I have entrusted to Him until that day"? In the same way, if you believe in evolution, is it just because people have told you it's true, or have you carefully examined the theory?

(This is a revision of my pastoral note for this week, for the congregation I serve).

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!