Does finished software really exist?

A blog post titled “The beauty of finished software” went viral a week or two ago, and it puzzled me a bit. The blog post wasn’t terribly long. It was just a few paragraphs extolling the virtue of something it called finished software. And then it lumped two very different things into the category of finished software. In this blog post, I will explore the concept and explain why being finished software isn’t always a good thing.

Dissimilar examples of finished software

The existence of Wordstar 6.0 implies Wordstar 4.0 isn't finished software
Wordstar 4.0 isn’t finished software. Otherwise, version 6.0 wouldn’t exist.

The original blog post cited two very different categories of software. The first example they gave was Wordstar 4.0, a popular word processor from the 1980s.

The second example they gave was a set of userland utilities for Unix-like operating systems, commands like cd and ls. The author called it finished software, but they noted the software is still getting minor updates. I went and looked it up; there’s a project right now to rewrite the GNU coreutils, which includes ls, in Rust.

So this second example falls short of what you can call finished. Arguably it is feature complete. But someone is maintaining the software and producing bug fixes for it. Or rewriting it in Rust. I was going to say their theoretically won’t be any new features added to it, but I don’t think that is correct. Many of these utilities have the ability to utilize file compression utilities. In the event of another utility catching on, these tools will be updated to support them. gzip was the go-to compressor for many years, but then bzip got popular.

So I don’t think I would put that collection of utilities in the category of finished software. It’s nearly finished, but bug fixes are still occurring, and unforeseeable circumstances could lead to additional new features needing to be added at some point. And then there’s that whole thing about rewriting it all in Rust. It’s nearly finished, but I don’t think it’s possible to know for certain that no future changes will ever be needed.

True examples of finished software: qmail and djbdns

I think tools like qmail or djbdns are closer to finished. Those programs haven’t received an update in around a decade, though they remain pretty widely used. The author may consider them finished, with the caveat that if the standards change, they may need minor revising. As long as the standards don’t change, they’re feature complete, and will only need the very rare security update.

So maybe those tools belong in the category of finished software.

An ideal state, maybe

The trouble with any piece of software that tries to be finished is that it has to make certain concessions to reach that state. Back in the bad old days, when I was a system administrator, I found myself working on a project to build a DNS server. I thought djbdns was cool and wanted to use it, but quickly found I couldn’t do what the boss wanted me to do if I used it. The boss had his ideas of how things should be, and his boss had ideas about how things should be. The more conventional solution, BIND, could readily thread the needle between their requirements. It may have been a bad design and therefore djbdns just wouldn’t do it, or it may have been a matter of BIND having better documentation.

There are similar reasons why sendmail and Microsoft Exchange are more popular than qmail.

Daniel J. Bernstein, The author of those utilities, made a clear decision that if he had to sacrifice certain functionality to gain security, he was willing to do it. If he had to sacrifice popularity to gain security, he willing to do that too. I don’t fault him, but I’ve never been in a position to be able to stick to my guns like he can. And I think most of us are closer to my position than his.

Now let’s talk about Wordstar.

Wordstar doesn’t want to be finished software

For a time during the 1980s, Wordstar was the standard everyone used to judge word processors. It was the Microsoft Word of its day. I was going to say things were different in the ’80s, but then I thought of competing word processors that fight for whatever share of the market Microsoft isn’t able to hold. And I’m probably under counting. Apple, Google, Corel, and a couple of open source projects are still trying to stay in the game. The difference is for part of the 80s, Microsoft was one of those niche players while Wordstar was king.

Wordstar 4.0 was not supposed to be the last version. In fact, it wasn’t the last version. Its developers didn’t see Wordstar as finished. For example, Wordstar 4.0 lacked the ability to track and create footnotes and endnotes. I wouldn’t have been able to use it in my 200-level and 300-level college classes if I’d wanted to.

Wordstar had to thread the needle between a diehard user base that wanted as little change as possible and a booming market of newcomers. They needed to add features and try to make the program more intuitive, and they didn’t quite get the balance where it needed to be. Wordperfect passed it by in the DOS market for a time, then both of them got crushed by Microsoft Word. But Wordstar 4.0 from 1987 retained a following even as the product faded from the market.

The perfect word processor

There are people who will argue that Wordstar 4.0 is the perfect word processor. And there are famous people who still use it. There are also people who use the Unix text editor vi to write books. Neither one would be my ideal tool for trying to write a 200-page book. I’d be more willing to try it with Wordstar, but I’m not sure I would ever finish it. The book, that is.

Wordstar doesn’t want to be finished. Some software does. Software that implements a standard protocol wants be finished, or at least doesn’t mind being finished, as djbdns and qmail show. Games want to be finished.

But application software? That’s a lot tougher. Even vim, the open source implementation of the Unix editor vi, receives updates on a very regular basis. Now, everything I learned about it 20 years ago is still completely true, but they aren’t finished adding things to it yet. So vim isn’t finished software.

And most application or productivity software isn’t. I’m also not certain that’s a bad thing. Software developers need to make a living. So while I found the concept of finished software interesting, and worth exploring and worth writing 50% more copy as the person who introduced the concept, it’s a niche thing. It’s not something most software can aspire to be. And I don’t think it should.

If you found this post informative or helpful, please share it!

One thought on “Does finished software really exist?

  • January 17, 2024 at 10:10 am
    Permalink

    I did an entire podcast on WordStar history last year. And it is funny to hear someone look back on WordStar 4.0 as “finished” software. For one thing, WordStar 4.0 was really just an improved version of NewWord 3.0, a breakway project created by programmers who were laid off by WordStar’s parent company. The WordStar folks tried to move past their original product by adapting a completely different code base and selling it as WordStar 2000 but the existing customers largely balked. WordStar then bought out NewWord and had then refactor their code into WordStar 4.0.

Comments are closed.