2009-01-29

Software Development and Evolutionary Biology

I've finally figured out why, over time, open source will become the dominant form of software development:
  • Open source is, well, open. They can freely share knowledge, experiences, mistakes and achievements without restrictions.
  • Open source projects cross-pollinate, exchange code and rapidly change over time.
  • Open source projects tend to have significant diversity, with multiple competing projects that do the same or similar things.
From an evolutionary biology standpoint, we have more frequent sharing of genetic code, higher rates of mutations, and a broader diversity. Thus, these projects have a better chance of survival.

Contrast this to closed source development projects:
  • Closed source is still open, in that people take their experiences, skills and knowledge with them when they move from company to company. But instead of information being shared on a hourly basis, the sharing of information tends to be on the time scale of years, and the degree of sharing is far lower.
  • Closed source projects resist "contamination" of their code base, and try to prevent any leakage of their code to the outside world. They also try to do the minimal amount of changes necessary in order to maximize return on investment.
  • Closed source projects tend to avoid markets where there is significant diversity. Interestingly, when there is competition, the products involved tend to be far better than in areas that are dominated and controlled by one or two vendors.
As a consequence, closed source projects tend to evolve slowly, become rigid and inflexible, and are unable to adapt to rapidly changing environments.

When you mix open source and closed source together in an ecosystem, interesting things happen. The first is that the competitive pressure resulting from open source pushes closed source projects to act more like open source projects. Closed source projects also tend to initially be parasitic, using open source without contributing much back.

There are exceptions to all of these generalizations, but this feels about right to me. It would be fascinating to see the results of research that looks at software development from the viewpoint of evolutionary biology.

No comments: