What Makes Software High-Quality?

This work is licensed under the Creative Commons Attribution 2.5 License (or at your option a greater version of it).

Revision History
Revision 167502 April 2007shlomif
Forked the template from a previous work and working on it.
Revision 187104 May 2008shlomif
Finalised the first draft. About to receive feedback.
Revision 187204 May 2008shlomif
Fixed many spelling/grammar/etc. problems, trailing whitespace, etc.
Revision 188206 May 2008shlomif
Fixed many spelling, grammar and syntax problems (thanks in part to Omer Zak). Added some bolds, and id=""'s, added the about section, reorganised the text a bit, and added the note about responsiveness and startup time.
Revision 188406 May 2008shlomif
Changed "a software" to something more idiomatic, and fixed a bad phrasing towards the beginning.


This document will discuss what makes an open source program (and by induction other programs) high-quality. It will cover the parameters that make software applications high-quality and ways to achieve them.

Table of Contents

Parameters of Quality
The Program is Available for Downloading or Buying
The Version Number is Clearly Indicated
The Source is Available, Preferably under a Usable Licence
It "Just Works"
The Program has a Homepage
The Software is Easy to Compile, Deploy and Install
The Software Has Packages for Most Common Distributions
The Software Has Good, Extensive and Usable Documentation
Backwards Compatibility
Good Ways to Provide Support
Speed and High Performance
Ways to Achieve Quality
Having Modular, Well-Written Code
Automated Tests
Beta Testers
Frequency of Releases
Good Software Management
Good Social Engineering Skills
No Bad Politics
Good Communication Skills
A Good Name
Analysis of the Quality of the Various Freecell Solvers
The Analysis Itself
About This Document
About the Author


What is a high-quality software application? I'm not talking about the application that's the most hyped, or the fastest, most featureful, or best. You can often hear endless rants and Fear, Uncertainty and Doubt (FUD) attacks about it. Often, it has competing programs that are superior in many respects. But at the end of the day, it is one of the most popular programs out there and is what many people like to use, what they find as the right tool for the job, and often what they are told (or even forced) to use.

How did I think about it? I am active in the fc-solve-discuss mailing list, which is dedicated to computerised techniques for solving the Freecell solitaire card game, and for discussing other automated solving and research of Solitaire games. This mailing list was started after I wrote Freecell Solver (with a lowercase "c" and an uppercase "S"), an open-source solver, which has proven to be quite popular. However, this mailing list was not restricted to discussing it exclusively, and was joined by many other Freecell solving experts, researchers and enthusiasts.

Later on, I lost interest in Freecell Solver, and have only been fixing bugs in the latest stable version (2.8.x). Since it is open source, and with an aim to be a Bazaar-like project I welcome other people to take over and am willing to help them, but it is still very functional as it is.

Recently, this message was written by Gary Campbell, who wrote:

I think the solver discussion in the Wikipedia should mention that the FCPro solvers give quite lengthy and virtually unusable solutions. No human wants to follow the several hundred steps that usually result in order to get at what's really required to solve a given layout. If someone wants a solution that can be understood, they want one that is under 100 steps. This is a major contribution and it should be stated. There are a lot of "toy" solvers and only a very few of "industrial strength." One of the latter is the solver by Danny Jones. I don't see that on your list. The results he has gotten from his solver pretty much put your solver to shame. The more you hype Freecell Solver, the more criticism you open yourself up to.

Unfortunately, it's hard for me to determine what "industrial strength", "enterprise grade" and other such buzzwords are. But I'll try to define high quality here, and try to show when a program is high quality, and when it is not exactly the case.

I initially wanted to give some examples for software that I considered to be of exceptional high-quality, but I decided against it. That's because it is a matter of taste if this is the case for them, and since it may provoke too much criticism against this essay as a whole. Thus, I'll just give some examples, possibly accompanied by screenshots, of places where one program does something better than a different program, while not even implying that the latter is in fact lower-quality in all possible respects.