Software Evolution

June 28, 2023

A couple of months ago I played a game called Xenoblade Chronicles 3. The setting is a world where two factions of child soldiers are battling each other. They have a fixed life term of 10 years until they have a homecoming and their life is recycled and memories are erased. This endless war serves as fuel for the bad guys. In contrast, there are other people that fall outside of this cycle and are able to pass on their memories to their offspring and so on. An ongoing theme in the story is how memories are passed on and how they can transcend time and space. There are architects, powerful computers/AIs, and different worlds tying everything together.

Somehow I was thinking of this as a parallel to software code. Software code is a snapshot of one or many people’s thoughts, but it has no capability to evolve by itself. What gives it life is people modifying it or rewriting it. I was thinking recently about how people like to critique things like “rewrite abc in xyz language,” but maybe people should think of this like darwinism.

In some ways free software is like darwinism and proprietary software is like divine creation. I can’t take credit for that analogy, but in the end it’s all created and used by people with different incentives. The only way for software to live on is through refactors or rewrites, so we should emrace it as a fact of life instead of worrying about what approach is the most efficient. Like many software developers, I want to create some great software that lasts a really long time and is loved by a bunch of people, but in reality, neither of those things are likely. Software lifespan is much shorter than peoples’ lifespan. In some ways, it’s a sad realization.