Software Version Numbers Explained
Release vs. Build Numbers
First of all, I have to say that the conventions used for determining software versions vary from company to company, and being a software developer myself, I doubt I use the same conventions as anyone else. For the most part, they are the same, but there are little discrepancies everywhere so you can never be 100 percent sure.
To understand what software version numbers mean, you first need to understand what the process is that software goes through before it is finished (and of course, software is never truly "finished"--rather, it is updated and made better). When a developer comes up with an idea for a program (or is requested by a customer to make a specific program) then the first stage of development begins, which is the conceptual stage.
This first stage is when a program is nothing more than a few ideas floating around. The developer might go over them a time or two, make some changes, and do basic planning as far as what is to be accomplished. The main goal of this stage is to get the program from ideas into plans. No version numbers are used at this time.
This is arguably the most important stage of the program, which involves getting a little deeper into what things the program is actually going to accomplish, disregarding how these things are going to be done. The planning in this stage is more fleshed out than the ideas from before, and much more organized. However, any actual coding or development of the program has yet to take place. Therefore, no version numbers are used in this stage, either.
My personal favorite, this is when things get down and dirty and you begin to see actual parts of the program taking shape, usually in the form of application code, depending on the languages being used as well as the function of the program. This is usually the second longest stage, and is where these "version numbers" begin to mean something. In this stage of development, the program will never be available to the public because it is too unstable or unfinished to be of use to anyone. This is where "build numbers" come into play. The pre-release builds usually have numbers like 0.1, 0.2, 0.3, and so forth. Any version number that is less than 1.0 means that the program has not yet been released. Generally, a program will make it to about version 0.9 by the end of this stage, and then it is pretty much ready for its first release at version 1.0.
This kind of overlaps with the development stage, because testing is a constant process that takes place as the program is being coded. Once a certain part of the program is finished, that part is tested to be sure it works. If it doesn't work, the programmers get busy fixing its problems before moving on to a different part of the program. Minor revisions to the program are what up its build number. Let's say that I'm developing a program similar to Windows Notepad, and the function that opens files causes errors if the file is not a .txt extension. We'll assume this program is currently at version 0.4. Once this error has been fixed, the next time the program is "built" or compiled in order to be tested, the build version goes up by 0.1. The version that finally has a file open function that works will be called version 0.5, because the problem with version 0.4 has been fixed.
Once all the development and testing is complete, it's finally time to make a release version. You tidy up the code one last time, put the "icing on the cake" so to speak, push the version up to 1.0, and put your program out on the market. But then, after quite a few people have bought it, you get e-mailed about a minor glitch that occurs on systems that have an older DLL version of a DLL that your program requires. Now you've got to release a new version to fix this, which you'll likely call version 1.1. This number is now a release version, because the public now has access to it. So in this stage, the program is never truly "finished" because you will always have new things to update on it.
After version 1.5 or whatever it is now has been on the market for a while, and people seem to be losing interest, it's time for an updated version. Instead of just fixing a few minor things, it's time to completely re-do everything and make it ten times better than it was before. Now, when it is released, it will be called version 2.0, because it's twice as useful as the original. It will have better features, or at least a lot more of them. It will probably cost a lot more than the original version, although now you have a contingent of people willing to pay more because they know how good the original was, and can't imagine what the new version will be like. And of course, if there's a patch or something that you release sometime after the update, it will be called version 2.1.
This is pretty much the end of the continuum. The program will continue to be updated and added to, and maybe even get to version 3 or 4. However, some software companies decide to let out "pre-release versions" that normally aren't available to the public. They might be for certain members of the company or affiliate companies, or maybe just to get customers excited and sell more copies when the whole thing comes out. Usually this only happens with fairly large releases, such as an enormous 3D game or a popular email client. These stages are explained below:
This is sometime during the development stage when the programmers have accomplished quite a bit and want to show it off without releasing it to the public. They might decide to release a "beta" version, which means that it is the version that the software testers (beta testers) have to test. Therefore, beta versions are not guaranteed to be stable; that is, they imply a use-at-your-own-risk policy, but users who are brave enough to trust the company can have a go at seeing the new features of the program without actually having to buy it (most pre-release versions are free, but only available to a select few individuals). The second type of releases are called "RC" versions. The RC stands for release candidate, and this type of release happens more towards the program's completion. In fact the reason they are called release candidates is that the developers are considering releasing that exact version, but they want to test it out on a smaller portion of customers to see what the reaction is or how well the product is going to sell.
I hope this helped to clear things up.
More by this Author
This is an interesting question to be sure, and one I hope to answer by the end of this hub. In order to answer it, I will briefly go over each section of instruments, and a few instruments in each section, explaining...
Are you among the select few who actually enjoy logic games (i.e. Sudoku) on a regular basis? I have found that most people who don't even enjoy logic games are aware of the Sudoku craze, or know of someone who enjoys...
This hub is a complete guide on the Guitar Hero series of games and the various levels of difficulty associated with each. It explains why the difficulty exists and all the different kinds of notes and crazy things to...