← Back to home

Software Release Life Cycle

Honestly, you want me to dissect the sterile, predictable march of software development? Fine. But don't expect a parade. It's a process, a sequence of stages. Some call it a life cycle. I call it a slow descent into obsolescence, punctuated by the occasional, desperate plea for user feedback.

Stages in Development and Support of Computer Software

This entire… process… the development, the testing, the distribution of something as ephemeral as a software product, say, an operating system, it’s a progression. A series of defined steps. You’ve got your pre-alpha, your alpha, your beta, and then, if you’re lucky, a release candidate. All leading to the grand finale: the "gold" release. Public consumption. Like a sacrifice.

This diagram, a rudimentary sketch of this predictable cycle, attempts to illustrate the flow. It’s charmingly simplistic, like a child’s drawing of a rocket.

Pre-alpha

This is the primordial soup. The very beginning. All the messy, unformed activities that happen before anyone bothers to formally test anything. Think requirements analysis – trying to nail down what people think they want. Then software design, sketching out the skeleton. Software development itself, the actual building, and then the initial unit testing, where developers poke at their own creations, hoping nothing breaks too spectacularly. In the chaotic world of open-source software, you'll see various flavors of pre-alpha. You have your "milestone" versions, collections of features released as soon as they’re vaguely functional. A testament to impatience, really.

Alpha

Ah, the alpha phase. The first formal foray into software testing. Alpha, the first letter of the Greek alphabet, signifying the first step, the inaugural attempt. Here, developers, bless their naive hearts, typically employ white-box techniques, peering into the very guts of the code. Then, other internal teams, with a slightly more jaded perspective, might apply black-box or gray-box methods. This shift to black-box testing within the confines of the organization is what they call an "alpha release." It's like showing your messy rough draft to a colleague before you've even proofread it.

This alpha software, understand, is not meticulously vetted by the creators. It's a gamble. It can harbor serious errors, leading to instability, crashes, the dreaded data loss. And don't expect all the promised features to be present. They're usually still in the ether. For proprietary software, public alpha releases are rare. But for open-source software, it's practically a tradition. The alpha phase typically concludes with a "feature freeze," a declaration that no more new features will be shoehorned in. The software is then deemed "feature-complete." This is the point where, after the internal "alpha test" – the acceptance testing at the supplier's site – the software is teetering on the edge of being unleashed upon the world.

Feature-complete

This is the state where all the intended bells and whistles are, theoretically, present. All the primary features are implemented. But it’s not done. Not by a long shot. There are still bugs, performance hiccups, and lingering stability issues. This milestone is usually hit at the end of the alpha phase in development. It means the code is largely written, but the real work – squashing those persistent bugs, optimizing performance, and ensuring some semblance of stability – is yet to be fully addressed before it can even dream of becoming a release candidate, let alone a gold standard.

Beta

And then comes beta. Named after the second letter of the Greek alphabet. It’s the stage after alpha, naturally. A beta version is generally feature-complete, but it’s still riddled with bugs, both known and lurking in the shadows. Expect performance issues, the potential for crashes, and yes, the ever-present risk of data loss. The primary focus here shifts from simply identifying flaws to mitigating their impact on the user. This is where usability testing often comes into play. The act of releasing a beta version to users is called a "beta release," and it usually marks the first time the software ventures outside the development organization. These beta releases can be "open" or "closed." Open means anyone can get their hands on it. Closed means it's by invitation only, a more exclusive circle of potential testers. Some developers, in their infinite marketing wisdom, might call this stage a "preview," "preview release," "prototype," "technical preview," or even "technology preview (TP)." Others opt for the more alluring early access.

Beta testers, these brave souls, are the ones who actively report the problems. They're often actual customers or representatives of those who might become customers. They usually volunteer their time, though they might be rewarded with early versions of the product, discounts, or other sweeteners. It’s a symbiotic, if slightly masochistic, relationship.

Perpetual Beta

Then there's the "perpetual beta." This is where software never truly graduates. New features are continuously bolted on, and a final "stable" release is a distant, often unattainable, dream. With the Internet making distribution so effortless, companies have grown rather… flexible… with their use of the term "beta." It’s become a convenient catch-all for "still not quite finished, but please use it anyway."

Open and Closed Beta

As I mentioned, betas can be open or closed. A closed beta is a select group, hand-picked for rigorous testing. An open beta is a free-for-all, a wider net cast to catch more bugs. Private betas are suitable when the software offers some utility but isn't quite ready for mass consumption due to scaling issues, lack of documentation, or missing critical features. Testers are expected to report bugs and, if they’re feeling particularly ambitious, suggest new features. Open betas serve a dual purpose: showcasing the product to potential buyers and, crucially, leveraging a vast user base to uncover those obscure, elusive errors that a small, dedicated testing team might miss.

Release Candidate

A release candidate (RC), sometimes referred to as "gamma testing" or "going silver," is a beta version that could be the final product. It's deemed ready for release unless a significant, show-stopping bug decides to make a dramatic appearance. At this stage, all the planned features are in place, coded, and have endured multiple beta cycles without any critical flaws. The development team agrees that no new source code will be added. However, there might still be minor tweaks to fix defects, updates to documentation, or adjustments to test data. It's code-complete, meaning the core is built, but the finishing touches are still being applied.

Stable Release

This is it. The "stable release." Also known as the "production release." It’s the final release candidate that has successfully navigated all verification and testing phases. Any remaining bugs are considered minor, ignorable annoyances. This is the version that goes into full production. Some Linux distributions, like Debian, offer long-term support (LTS) releases. These are based on thoroughly tested full releases and only receive critical security updates. It’s the software equivalent of a well-worn, reliable armchair.

Release

Once it's out there, it's generally called a "stable release." The formal designation often hinges on how it's delivered: physical media, an online download, or a web application. Usually, the released software is bestowed with an official version name or number. Pre-release software, of course, might have its own internal project code name or version number, a secret handshake among the developers.

Release to Manufacturing (RTM)

"Release to Manufacturing" (RTM), or "going gold," signifies that the software is ready for its journey to the masses. This build might be digitally signed, a digital fingerprint assuring the end user of its integrity and authenticity. The RTM build is the "gold master" or GM. It’s then sent off for mass duplication, if physical media is involved. The term itself is borrowed from the music industry's mastering process. RTM precedes General Availability (GA), when the product is actually presented to the public. A golden master build (GM) is typically the final build of a software piece during its beta stages, especially for developers. For platforms like iOS, it's usually the final build before a major release, though exceptions do occur.

RTM is most common in retail software contexts, where the software is bundled with hardware and destined for mass distribution. It signifies that the software has met a certain quality threshold for retail. In other scenarios, it might simply mean the software has been delivered to a client or customer for installation. The term itself doesn't dictate the delivery method or volume; it merely attests to its readiness for widespread distribution. The deliverable from the engineering team is often the "golden master media," used for duplication or to create the image for web distribution.

General Availability (GA)

Satya Nadella of Microsoft, presenting the gold master disc of Gears of War 4. A rather symbolic gesture, isn’t it?

General Availability (GA) is the marketing stage. It’s when all the commercialization efforts are complete, and the software is officially available for purchase. This availability, mind you, is contingent on language, region, and whether you prefer digital or physical media. Commercialization involves everything from security and compliance testing to localization and ensuring worldwide accessibility. The gap between RTM and GA can stretch for weeks or even months, as all these commercialization activities are meticulously carried out. At this point, the software has truly "gone live."

Release to the Web (RTW)

"Release to the Web" (RTW), or a "Web release," is simply a method of software delivery via the Internet. No physical media are involved. These web releases have become increasingly prevalent as internet connectivity has expanded.

Support

Throughout its supported lifespan, software often undergoes service releases, patches, or service packs. These are sometimes called "interim releases" or "maintenance releases" (MR). Take Windows XP for example; Microsoft issued multiple service packs for its 32-bit and 64-bit editions. These service releases are essentially collections of updates, fixes, and enhancements packaged into a single, installable unit. They might even introduce new features. Some software is designed with the expectation of ongoing support. Anti-virus suites and massively multiplayer online games are prime examples, demanding continuous support. Microsoft even offered paid updates for Windows XP for years after its official support ended, a testament to its longevity. Support eventually ceased on April 8, 2019.

End-of-Life

When software is no longer sold or supported, it has reached its "end-of-life." It's discontinued, retired, deprecated, abandoned, obsolete – a relic. Yet, user loyalty can sometimes prolong its existence, even long after its supporting platform has faded into obscurity, like the Common Desktop Environment or the old Sinclair ZX Spectrum.

After the end-of-life date, the developer typically ceases all new feature development, bug fixes, and vulnerability patching, whether those issues were known before or not. Support, as you might imagine, is non-existent. If the developer chooses, they might release the source code, allowing a community of volunteers to keep the platform alive. It's a digital afterlife.

History

The terminology of "alpha/beta" testing, surprisingly, originated at IBM. It’s believed that similar terms were in use by IBM personnel as early as the 1950s, perhaps even earlier. The "A" test was for verifying a new product before its public announcement. The "B" test was the verification before releasing it for manufacturing. And the "C" test was the final verification before general availability. As software became a more significant part of IBM's business, the "alpha test" was used for pre-announcement verification, and the "beta test" signified readiness for general release. Martin Belsky, a manager on some of IBM's early software projects, has been credited with coining these terms. IBM themselves eventually phased out the alpha/beta terminology in the 1960s, but by then, the terms had already gained considerable traction. Notably, IBM used "field test" for customer testing, not "beta test."

Later, major public betas emerged. Customers would purchase "pioneer editions" of software, effectively paying to test it. Stephen Manes, in 1984, remarked on Bruce and James Program Publishers' "brilliant marketing coup" of getting people to pay for product testing. In September 2000, Apple released the Mac OS X Public Beta. Between 2005 and 2006, Microsoft offered "community technology previews" (CTPs) for Windows Vista. And from 2009 to 2011, Minecraft was in its public beta phase.

In February 2005, ZDNet published an article highlighting the peculiar phenomenon of beta versions lingering for years, often used as if they were production-ready. They pointed to Gmail and Google News as prime examples, which remained in beta for extended periods despite widespread use. Google News finally exited beta in January 2006, followed by Google Apps (now Google Workspace), including Gmail, in July 2009. Since the advent of Windows 8, Microsoft has rebranded its pre-release software as "previews" instead of betas. The builds released through the Windows Insider Program, launched in 2014, are all termed "Insider Preview builds." The term "beta" itself has become rather fluid, sometimes indicating something closer to a release candidate, or simply serving as a time-limited demo or a marketing ploy.

See also