Sunday, July 5, 2009

Nearly the silver bullet for software design or -A wise man has learned from his mistakes, a smart man learns from others.

If we study the world the best method to develop the most widespread complex product seems to be evolution. Genetic individual evolution is familiar to most, the individual receiving the highest progeny spread their genes most. Quite selfevident.
Genetic cooperative evolution is the theory that a behavior or characteristics that benefit the group as a whole, spreads even tho it penalizes the individual.
Then we have memes. A meme is an idea, and as everyone knows an interesting idea is spread more than an uninteresting. As the smallest child knows, someones word is not spread as a perfect copy. Memes therefore possess the three characteristics required for evolution, a method of replication, a replication value and mutation.

A complex very successful example of cooperative genetic and memetic evolution is religion. If there were an original religion, it probably rose from genetic cooperative evolution, as to spend a seveth of the weeks idle, or to not eat meat, certainly is a disadvantage the individual. (Here's a small logical trap, the assumption that religion is a disadvantage to the individual is based on today's religions.)
Religion is also apparently a victim of memetic evolution, as we no longer believe in Zeus, Athena and Apollo, or, for that matter, Odin and Loki. The idea of eternal life is found in most major religions in some form, which is trivial to explain with memetic evolution.

Evolution happens faster the larger the population, as a larger population allows more mutations and a smaller population quickly becomes homogeneous due to the commonization of the, at the moment, 'best' genes.

What the hell has this to do with software? Yeah.. Evolution can be compared with:
The development of parallel products that compete for the user base. Capitalism.
Iterative design, release a close to viable product and expand and refactorize continually.
Open Source, or software communism. As the software is a product of the developers, more developers are equivalent to larger population.

Are there any projects that live by these guidelines? Yes, many! One example is that 40 years ago, an operating system was created to port a game to the PDP-7. It was written in a few weeks, and was worthless as real operating system. But the virus was released, AT & T sent the source code to universities, companies and the U.S. government. It was called Unix. Today Unix is more or less a niche product, but before its 'death' it gave birth to several offsprings, and a bastard, Linux.
The only thing I know, that prevents Linux from being a fully-fledged Unix, as it follows the posix standard, is that the certification is pricy as hell, and applies to the entire operating system, ie each distrubition need separate certificate.
On the top500 list of the world's fastest super computers, more than 85% are running linux, on top 10 on the list 100% are linux-based. Although computers are sold with Windows preinstalled, Linux is the choice for about 4% of users. It is also popular on everything from netbooks, mobile phones to integrated solutions.

Which is a great testament to the soundness of the evolutionary software design principles.

However, the open source model is driven by meritocracy, which means that an optimal solution converges slowly, as either very influential and many developers have to understand both the problem and the solution well. If it converges at all, since the iterative design allows applications to build on 'unfinished' solutions, the problem of switching infrastructure can become to great to be practicly doable. X is a great example..
But perhaps the question is irrelevant? I cannot see how a centrally controlled and marketing-driven software production can create better solutions.

3 comments:

  1. Just for the discussion, how do you get this together?

    "Although computers are sold with Windows preinstalled, Linux is the choice for about 4% of users. It is also popular on everything from netbooks, mobile phones to integrated solutions.

    Which is a great testament to the soundness of the evolutionary software design principles."

    96% uses Windoz, is that an example of "evolutionary software design"?

    /p-a, ;-)

    ReplyDelete
  2. Hah no, but you know as well as i do how microsoft got and maintains its stronghold... Being the first to market (with something usable by normal people), kinda like the railway, steel and shipping tychoons of ye olde age; free devtools, bribing computer resellers to sell only microsoft products, abusing their monopoly to squash competition; their tradition of embrace, extend and extinguish to make microsoft applications the only ones to have the full experience of a format; their habit of spreading fear, uncertenty and doubt to maintain their monopoly... i could go on forever

    In spite of this, linux is growing at a rate that when humorously extrapolated tells that tale of microsoft being overrunt at 2018. Well its all fun and bullshit, but with a grain of truth i believe.
    http://www.wine-reviews.net/wine-reviews/cxoffice-linux/codeweavers-to-overtake-microsoft-by-2018.html

    this, and the fact that linux is getting ahold on every market from supercomputers to embedded devices is a testament to the evolutionary software design principles.

    ReplyDelete
  3. Oh, i didnt mention what the grain of truth is..

    fact of the matter is that windows xp is good enough, microsoft office 2007 or whatever is good enough, there is not much incentive to do an upgrade and then company training for 100$k or whatever.

    what new features can they offer? security? hah! if they cared they wouldnt use windows. they think anti virus programs and firewalls are good enough, and alot cheaper.

    ist word processing more or less a done deal? guess the next big thing in that area might be wave, and thats a free and open standard, good luck profiting on that.
    http://wave.google.com/

    performance? i laugh at them. every new version of windows needs 5x the memory, 5x the hard drive space and atleast twice the processing power, so that 100k$ upgrade ends up costing 300k$.

    theve worked themselves out of buisiness..

    ReplyDelete