I was reading a discussion on Reddit today about the release of CentOS 6, and as inevitably happens when geeks get together to talk about Linux distributions, the topic of stability came up, and not for the first time it occurred to me just how problematic the phrase can be.
The problem is that there are several valid and reasonable definitions of stability, and it is quite often difficult to divine from the context of a conversation which definition a particular person has in mind when they are discussing the stability of a given distribution, platform, or application. Further more, I have the impression that many people have never considered that there might be different meanings than the one that they themselves have adopted.
In light of this, I wanted to talk today about a couple of the meanings of stability, how the concepts differ, and why understanding the nuance of the different meanings is important when making decisions about what platforms to embrace and which to eschew.
The first definition of stability is the one that I think the average person will most associate with the word, and that is “software that doesn’t crash”. We might say something like “Foo is a very stable application”, and mean that when using Foo unexpected failures are a rare event. Having a word with this meaning is important because all software undergoes cycles of active development where Bad Things are more likely to happen, and periods of bugfixes and maintenance where the software becomes more reliable. For a user deciding on a piece of software to use, understanding where the software is in the life cycle, and making decision about where to live in the cutting-edge/well-tested continuum is important.
The second major definition of stability is one that we see used in discussions about many Linux distributions, and is the one that unfortunately is most often confused with our previous definition. In this case, stability means “The packages and configuration of the system change infrequently”, and goes hand-in-hand with longer support cycles and a better guarantee of bug fixes and security patches. When people talk about debian stable, or the stability of a distribution like RHEL, it’s important to understand that this is the definition that they are using. This type of stability is important to businesses, where a distribution with infrequent package updates and a longer timeline for issuing security fixes is important both in maintaining an operational environment as well as ensuring the developers are able to write applications without chasing a moving target.
Differentiating between these two differences is critical when determining what software is appropriate for your use-case. While it is often the case the the versions of software selected for long-term support are chosen to coincide with the bugfix/maintence points in the software development cycle there is no indication that to converse is also true. Many distributions offer a rolling release with frequent package changes and updates while still maintaining a high level of quality control on the packages that are pushed out.