What Are the Different Ways Software Gets Released?
If you’re building your first technology project, you’ll need to understand the different ways software gets distributed to your users so that you can make intelligent decisions on what is and is not included in a particular release.
What’s a Release?
Let’s start with defining the term “release”, as it means different things to different people. A release is a set of features and functions packaged up and made available to the users of your product or service. Pretty simple, right? A release typically has the following characteristics:
- A scheduled date
- A version number
- Sometimes a name
A great example from every day life is Apple’s Mac OSX releases. The latest release is called ‘El Capitan’, the version as I’m writing this is 10.11.2, and it was released on September 30, 2015. It had a number of new features, as well as bug fixes left over from prior releases.
Release Methodologies
It used to be that all software was packaged up like the OSX example above. Teams would work for a long time on the feature set, test it all, and then release it all at once. Users were responsible for procuring the latest release and installing it. However, modern software releases are a much more fluid process because it’s so easy to distribute updates. You’ll release your product in one of two ways:
- Periodic – Releases are periodic when there’s a bunch of work packaged up and released at one time. Where you still see this style of release is with operating system updates such as El Capitan, Windows 10, and all of the apps in the various app stores.
- Continuous – Continuous releases are much more common for web applications. This is happening on products you use every day, though you may not have noticed or known what to call it. On a regular basis, new features show up in the interface or identified bugs are fixed. It’s not uncommon for fast-moving teams to release updates multiple times a day using a process called continuous deployment.
What’s Right For You?
As with many things in software, the answer is “it depends.” If you’re building an iOS or Android app, you’ll be forced to use a periodic release schedule because you don’t control all of the variables, such as how long the App Store might take to review it or when your users will install the newest version.
If you’re building a web application, you can use either periodic or continuous release cycles.
Generally speaking, the more often you can release your product the better. By instituting practices early on that let you release more often, you can react more quickly to your user’s demands and / or fix critical issues in your product.
Often times your product will use both. For example, you’ll build the initial version of your product, taking a few months to get it out the door, and then get into a more continuous release process to fix bugs and release new features as they’re ready.
Just Remember
There are as many ways to release software as there are ways to build it. The purpose of this post was to provide an introduction to the topic of releases and set the stage for more a more advanced discussion of each methodology in the future.
- A release is a set of features and functions packaged up and distributed to your users at a given point in time
- Releases can be periodic, continuous, or a combination of the two
- What kind of release cycle you follow is somewhat governed by how your product is distributed
- Generally, the shorter your release cycle the better
Your Assignment
Start paying attention to the technology products you use every day. Are they operating in periodic or continuous release cycles? Why? How do they communicate with you about their new releases? What do you like / not like about each one of them? Take notes on what you’d do differently.