It’s a bit of a shame to think that a piece of software that is “done” is considered abandoned. The constantly churning platforms these piece of software is running on doesn’t help. Operating systems are constantly being released with new standards, and security issues crop up and get fix. So it’s natural to assume that a software project that is never touched at all will break at some point.

But I think achieving “done” status for a piece of software is possible. We just need to defined “done” as not being required to change the code. You can still keep up with the platform if you’re still able to build the project, and I think the secret to achiving “done” this way is to be as close to the platform as you possiably can.

I guess the other requirement is choosing a platform that promises to maintain backwards compatability, both for the runtime and the developer tools. But those platforms certainty exist. Think about all those Unix C tools like “grep” or “awk” that haven’t really changed in 50 years, or all those websites from the late 90s that are still around. They’ve been built and deployed multiples times but I’m doubting people are making significant changes in those codebases.

Anyway, some random thoughts I had while browsing the web this morning.