AI::GA implements a (hopefully) generalized genetic algorithm. It does this by using an array of allowed tokens as individuals. The user has to provide a fitness function. There, the actual representation is implemented. If you have a string of chars, you can simply join them. If you want to have real numbers, you should probably use a bitwise representation and calculate the real values in your fitness function.
Evolutionary Point of View
I really appreciate well written as well as provocative assays :-)
In my early days of getting to know the world of Free Software I had very much the same feelings: why the h*ll would those Gnome and KDE programmers join their efforts and build a better thing. Over the years I experienced that free software is following a evolution that is pretty close to the one found in earths biology. And funny enough nobody is complaining about too many lifeforms on this planet ;-)
I think you need a vast amount of coders to come up with a good solution by starting several projects many of which might come to an unsuccessfull end.
One -obvious- solution would be some kind of rating, but who is supposed to do that? I think that the rating kind of works already by having some programs being more popular than others (what ever mechanis might me responsible for that).
The major problem that I see is that projects do not really die. How are you to find out whether a program is so mature that it doesn't need any updates anymore or whether it is simply dead? If the freshmeat archive would be cleaned of all those projects it'd be a lot easier to find the program you're looking for...
Different Kinds of Development
The tips mentioned in this article are worthfully ... no doubt. But it's just like the guidelines in programming books telling me how to design a program well: it only counts if you _know_ where you're going.
In the company I work and code we usually first have to develop the alorithms before we can develop the program and that's a hard one.
How do you design a prog before you know what it will be like and thus how do you set the deadlines for that? For the coding I somewhat figured out that I have to rewrite everything from the scratch (even w/out copy'n'paste!) from time to time, whenever the prog has become hard to maintain.
What would you think of the deadline question in that case?
regards (and thx for the article as well)