| Introduction | State | Development | FAQ | Feedback | Help || SourceForge page |
| Headings |

Version Numbers
>=================<

[skip] What can be wrong with Version Numbers? That's just Names!

Never shalt thou underestimate a name's might ;-)

There's much that can be wrong with version numbers.

If you are lucky, improper version numbers are only misleading and confusing. But they can be more than this: Version numbers can be even harmful to the project! And, as most authors do not care about "marketing", sadly quite a lot Free Source Software suffers from that.

There are two possiblities how version numbers can be harmful: The less critical one is that they can give a wrong impression of the program's maturity level and development efforts. If the version numbers changes only in the fourth or fifth position, users will think that no serious development takes place. They won't try out the new version, and maybe even switch to some other project that seems more promising in their eyes. Also, too "conservative" version number changes keep the version numbers very low; often programs have version numbers of the kind 0.x.x for years, and people believe they are still early development versions, although the programs are quite mature already. It's even more confusing when programs start with quite large version jumps, and then they gradually get smaller and smaller (especially when the maintainer changes), and then we have constructs like: 18.1.9.17e.

The other way how version numbers can be harmful is that they can even hold off new releases! Authors often have some idea about what splendid new features a new major release should have, and won't release it until all of them are implemented. Moreover, often more and more features come in, and the release is hold back for ages.

[back] So what is the right way of version numbering?

I guess there is no "right" way. Every numbering scheme has some drawbacks.

However, I considered several existing and also some completely new numbering schemes very thoroughly lately. I came to the conclusion that probably something like what (AFAIK) Apache uses makes most sense. Our postulates are these:

We admit that all this sounds quite confusing... Maybe this little figure will clear it up a bit:

                      ...               ...
                       |        _.-3.3.1 (stable)
                       |     .-' 
                       | _.-3.3 (beta)        _.-3.1.3 (stable)
                       |'                  .-'                                   _.-1.10.2 (mature)
                       | _.-3.2 (beta) _.-3.1.2 (stable)                     _.-'
                       |'           .-'                                  _.-'
                       |        _.-3.1.1 (beta)                      _.-'
                       |     .-'                                  .-'
                       | _.-3.1 (beta)                        _.-1.10.1 (mature) 
                       |'              _.-3.0.2 (stable)  _.-' 
                       |            .-'                .-'
                       |        _.-3.0.1 (beta)    _.-1.10 (stable)          
                       |     .-'               _.-'
                       | _.-3.0 (beta)        |
                       |'                     | _.-1.9 (beta)
2.3.2 (beta)-.         z                      |'   
              `.       z                      |      _.-1.8.2 (stable)
    2.3.1 (beta)-.     z                      |   .-'                             _.-1.6.3 (mature)
                  `.   |                      |.-1.8.1 (stable)               _.-'
          2.3 (beta)-. |                    .-'                           _.-'
                      `|               _.-1.8 (beta)                  _.-'
                       |              |                           _.-'
         2.2 (alpha)-. |              | _.-1.7 (beta)         _.-' 
                      `|              |'                  _.-'
                       z              |               _.-'
         2.1 (alpha)-. z              |           _.-'
                      `z              |        .-' 
                       z              |    _.-1.6.2 (stable)
         2.0 (alpha)-. z              |_.-' 
                      `z            .-' 
                       z        _.-1.6.1 (stable)
                       z     .-' 
                       z _.-1.6 (beta)
                       |' 
                       |        _.-1.5.1 (stable)
                       |     .-'              _.-1.4.3 (stable)
                       | _.-1.5 (beta)     .-' 
                       |'              _.-1.4.2 (beta)
                       |            .-' 
                       |        _.-1.4.1 (beta)
                       |     .-' 
                       | _.-1.4 (beta)
                       |' 
                       |        _.-1.3.1 (beta)
                       |     .-' 
                       | _.-1.3 (beta)
                       |' 
                       |
                       | _.-1.2 (beta)
                       |' 
                    {  z
                    {  z _.-1.1 (alpha)
                    {  z' 
           unstable {  z
                    {  z _.-1.0 (alpha)
                    {  z'
                    {  z
                     trunk

Headings

What can be wrong with Version Numbers? That's just Names!
So what is the right way of version numbering?

Found typos? Tell us! Have questions? Ask us!


Get netrik at SourceForge.net. Fast, secure and Free Open Source software downloads