There is a problem all software developers have in common: How do I version my program? Starting with 0.1 or 1.0? Where is the end? Version 47.11? Is there an end? Which steps should I take to create versions of my program which make sense?
A clever guy (I guess it was Edsgar Wybe Dijkstra) said once (modified): A program should never overstep the version number 1.0 because this defines the final state of the program and there is no need to increase the version number again.
There are two main problems today:
1. The software development process
This is more and more influenced by the customers (so called users of the programs). During a predefined development plan, which was built according to the customers needs, the customer wants some other features instead of the defined ones, their focus changes and so on. Of course the software developer is flexible and he is (mostly) able to satisfy the customers wishes. Once the program development process is finished, we will find us labeling the program to v1.0. Great! We were working according to the guideline that defines the final state at v1.0.
During this development period it is very easy to start versioning at v0.1 or even at v0.0.1 as long as the program is not delivered to the customer.
One Month later the cutomers comes along and want some changes. May be bugs (I, of course, never had one who mentioned such a curious thing), may be some changes, may be some additions, whatever. How do we handle the next version? Step over to v1.1? I guess this might be the best solution but we are now not working according to the rule from before. Bad thing but what can we do? Nothing! The show must go on and we need an income to be able to go to the next bakery and Semmeln or Mi Xian (米线) for breakfeast.
2. The psychological effect of version numbers
This does not concern the development process itself, it targets the customers of the software. Think about making and selling software to end user customers. And I do not talk about big server application from which you would sell 1 license a month and you live from that. No, real enduser licenses for many customers at low prices. The big advantage of software development is the “production” process (even that you are not “producing” a thing like a car) which is done once and you are able to sell your items without having fixed costs for producing a new copy. But, you have to face another problem: Nobody wants to by your really stable running program at version v0.5.23!
Why should the customer buy such an (in his eyes) ‘unfinished’ version? He was influenced over years that a software can only be good if it overstepped v1.0 and it might even better if it has reached more than v1.0 – let’s say v1.5. Because many software vendors use their customers as guinea pigs to improve their software after getting response from them. However, no one will buy a software labeled v0.5.23. Most of them even do not buy a software with v1.0 version. So you have to decide: Do I want to be cool and correct and lable my software in a way that makes sense (many open source software developers are working like this because they have nothing to loose, the program is available for free anyway) or do I start with v1.1 of my program boosts the popularity of the program immediately?
as far as i know the clever guy you mean was edsger dijkstra and not tannenbaum (latest stable minix release = 3.1 > 1.0).
Right! That’s why I felt kind of weired when I was typing “Tanenbaum” … Of course, “Dijkstra” is man we are looking for. I already fixed that bug – thanks Marius 😉