'OK, everyone. Stop typing, this software is DONE,' said no one ever
Some times it really is, though
Open Source Insider I recently received an email from an old shared hosting provider. The host wanted to "upgrade" my account to a new server. I had long since stopped using the account for all but one client site that ran a legacy version of Django. I built it ages ago, but it was done. It worked fine and the client was still happy with it. No big deal, I thought, they'll move it to a new server and it'll keep on running.
Then I discovered my account was going to be involuntarily upgraded from CentOS 6 to CentOS 7. Without diving into a full review, let's just say that's a major change. There was no way that my app was going to be moved and still work.
That's why there was a "migration guide", which is software hosting speak for: "You're going to have to do a crap ton of work to continue using our service." I opted to use my own migration guide to migrate to a different company, one of the many cheap VPS hosts that have come along in recent years.
I mean, if I have to update a piece of software anyway I might as well move it to something that gives me full control over the entire stack.
What I found so interesting about the experience was that in communicating with the company it became very obvious that they saw nothing wrong with randomly upgrading the server.
I call it random because CentOS 6 is a perfectly good operating system that will be supported until November 2020. There's no hurry to update. As I review operating systems I happen to know that CentOS 7 introduces a whole slew of very useful tools for sysadmins, though, and this I suspect was the reason for the update – the company's engineers wanted to use those tools across the board.
This sounds totally normal and even reasonable to those of us who work and live in the world of software, but it's actually totally dysfunctional and insane. To see just how dysfunctional this is, it helps to reframe things in terms of stuff in the real world.
Imagine you hire a plumber to build you a new shower. They do and you are happy, you pay them and everyone goes their separate ways. Five years later you come home from work and your old shower is gone and there's a new one, but it's now in the kitchen instead of the bathroom and it only has cold water because hot has been deprecated. There's a note on the door with some suggestions on how you can use it just like you used your old one.
Plumbers do not do this because that would be crazy. In most professions when you are hired to do something and you do it, then the project is said to have reached a status known as "done". There is no coming in afterward to change everything and then forcing your customers to accept it.
But there is no "done" in software. Software is never done. I am unaware of a single software project that is considered done. There are plenty that are done because they've been abandoned.
For instance, many people say that Openbox isn't developed anymore because it's done, which I'd tend to agree with, but it may also be that the developers just lost interest. The project at least has never formally come out and said, hey, this is done.
That would be considered crazy in software because under the current rules of software culture things can never be "done". If things were done no one would upgrade, if no one upgraded we'd all be out of jobs. That's how the current software industry works.
And that's generally how new industries go for a while. Presumably it took some period of heavy innovation and iteration before the current hammer came to be. But then there was a hammer and not a lot of thought has been put into hammers since. Hammers are done.
Software desperately tries to avoid a state of done. Yet done seems to come of its own accord. Look at the release notes for any major software product over time and you'll notice that most are heading toward a done moment. But when that moment nears, someone steps in and rewrites it from scratch to "improve it".
In most cases, though, what works now works well enough. Even lowly, much-maligned Windows XP still works well enough. The only reason it's insecure is that its creator decided to stop making it secure.
The site I hosted with that company didn't need an upgrade, it was running fine with almost no attention at all. It was done. Which is exactly why the software gods stepped in and forced it back into development.
Sure, I rewrote it working with the latest release of Django, but you know what? Now it's done. ®