Insomnia (insomnia) wrote,

Software - evolution vs. design

Some really interesting emails have bubbled up lately from Linus Torvalds on software...

He argues that Linux wasn't designed - that it evolved... and that software which evolves rather than is designed is better.

'The problem with "singlemindedness and strict control" (or "design") is
that it sure gets you from point A to point B in a much straighter line,
and with less expenditure of energy, but how the HELL are you going to
consistently know where you actually want to end up? It's not like we know
that B is our final destination.

In fact, most developers don't know even what the right _intermediate_
destinations are, much less the final one. And having somebody who shows
you the "one true path" may be very nice for getting a project done, but I
have this strong belief that while the "one true path" sometimes ends up
being the right one (and with an intelligent leader it may _mostly_ be the
right one), every once in a while it's definitely the wrong thing to do.

And if you only walk in single file, and in the same direction, you only
need to make one mistake to die.

In contrast, if you walk in all directions at once, and kind of feel your
way around, you may not get to the point you _thought_ you wanted, but you
never make really bad mistakes, because you always ended up having to
satisfy a lot of _different_ opinions. You get a more balanced system.'

At the same time, he says some positive things about directed evolution, too.

'Directed evolution - ie evolution that has more specific goals, and faster
penalties for perceived failure, works on the scale of tens or hundreds of
years, not tens of thousands. Look at dog breeding, but look even more at
livestock breeding, where just a few decades have made a big difference.

The belief that evolution is necessarily slow is totally unfounded.

HOWEVER, the belief that _too_ much direction is bad is certainly not
unfounded: it tends to show up major design problems that do not show up
with less control. Again, see overly aggressive breeding of some dogs
causing bad characteristics, and especially the poultry industry.'

How is directed evolution separate from design?

If you want to examine how communities work in the real world, you can't go too far wrong by looking at ants -- a truly evolutionary creation. Do they go in several different directions? Yes... they scout. At the same time, however, they also move in lines too, directing themselves to opportunities. They also raid opposing ant nests en masse and steal their offspring, assimilating their rivals. (Microsoft?!)

Ants are at their best when they are both evolutionary and directed. Take away their direction, and they are at their weakest. Take away the evolutionary factor and all of them will make a line to the nearest ant trap.

The same thing happens on human terms. Give people no direction or focus and they will tend to be without direction and unfocussed, limiting their effectiveness. Give them only strict directions and they will rail against it, or overlook other possibilities. Frankly, most open source projects can use a bit more structure, if not more direction. However, the evolutionary aspect of Open Source is absolutely vital.

All this reminds me of the old argument about light -- it's a particle... er.. no, it's a wave. The real answer, of course, is that it's a wavicle. Doesn't make sense?! Sure it does... Duality. Get used to it.

  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.