Advertisement

Why does a lot of open source software never reach v1.0

Started by June 27, 2010 06:17 PM
20 comments, last by way2lazy2care 14 years, 4 months ago
I am just curious as to why most open source software projects stay in the 0.x version almost forever? If the software is good enough to be used by the general public, and it only has a few lingering known issues, then wouldn't that warrant a major version number >0?
For example, looking at my 17 Firefox add-ons, only 5 of them are >1.0.0.

I have recently released version 1.0 of a project i am working on as i feel that the code is working as designed and there are no half-finished features. There's still a *lot* more i can add, and probably some bugs to fix, but that's what version 1.0.1, 1.1.0, etc are for, right?

I have wondered about this for a while but i only ask now because in the back of my mind i am questioning if making my project 1.0 was the right move to make. Of course, there are no strict rules on versioning, so if i wanted i could call the next version 2.0 then 3.0 and so on. Likewise, i could call each version 0.0.1, 0.0.2, 0.0.3 and on like that, never incrementing the first 2 digits.
There is obviously a sensible way to do it, and although everyone is different, i am doing something like this:
  1.2.3[.4]  | | |  |  | | |  build number (optional)  | | release that includes only bug fixes  | release that includes new features (+ bug fixes if any)  major release that includes many new features and/or large code re-structuring

[Window Detective] - Windows UI spy utility for programmers
That is usually done to keep the software in beta stage, which completely liberates the author of any resposibility or expectation. Basically it says: don't start crying if I feel bored and completely abandon the project.

Especially in the US you don't want to be sued by someone claiming to have lost millions because your free software didn't come with upgrades.
Advertisement
Quote: Original post by XTAL256Why does a lot of open source software never reach v1.0

Because everyone has different ideas of what '1.0' actually is. Open source projects are almost always run by someone as a hobby, so their idea of v1.0 is 'finished, all functionality implemented, good clean code and no known bugs'. Whereas for commercial software v1.0 is almost always 'the first version we gave to the customer' (which in turn usually means 'what we had finished when we reached an arbitrary date').

When you consider it in those terms, it's not surprising that commercial software has more v1.0 releases than open source.
Quote: Original post by Prototype
That is usually done to keep the software in beta stage, which completely liberates the author of any resposibility or expectation. Basically it says: don't start crying if I feel bored and completely abandon the project.

Especially in the US you don't want to be sued by someone claiming to have lost millions because your free software didn't come with upgrades.

I am planning on licensing my software using GNU GPL (as of the next version). I can't get sued if my app causes someone to lose millions, can I?
That's what the disclaimer is for:
GNU GENERAL PUBLIC LICENSE  15. Disclaimer of Warranty.  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BYAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHTHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTYOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULARPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAMIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OFALL NECESSARY SERVICING, REPAIR OR CORRECTION.


Quote: Original post by OrangyTang
Because everyone has different ideas of what '1.0' actually is. Open source projects are almost always run by someone as a hobby, so their idea of v1.0 is 'finished, all functionality implemented, good clean code and no known bugs'.

If that were the case then no open source software would ever have a version 2.0, because if 1.0 is the end then where to go from there? Of course, no software is ever finished, there is always new functionality to add.
And why would anyone have that idea in the first place? Surely they would want to go to 1.0 as soon as they see fit so as to increase the appeal of their product ("Hey look everyone, i'm out of beta now! I'm making progress.")
[Window Detective] - Windows UI spy utility for programmers
You could go the other way with this and say 'Why is the software I bought labeled v1.0 when it clearly doesn't work', being gamers we should all be very familiar with the 'patch it' approach by games companies.

The reason is really down to marketing, selling version 0.8.25 or what ever clearly doesn't look good, but open source aren't selling it and so are not under the same pressure to label it version 1.0 by a certain 'release data'.
Innovation not reiterationIf at any point I look as if I know what I'm doing don't worry it was probably an accident.
Speaking of build numbers, is there any easy way of adding them to your app?

Say, in Visual C++ 2010 Express?

Anything like a BUILD_NUMBER macro which is an integer that gets incremented each time you do F7?
Advertisement
Quote: Original post by Guthur
You could go the other way with this and say 'Why is the software I bought labeled v1.0 when it clearly doesn't work', being gamers we should all be very familiar with the 'patch it' approach by games companies.

But it does work! There are only two known issues in my app, one is not important and the other i rarely come across.
And all of the open source software / Firefox add-ons i use work. There may be some bugs, but there will always be some bugs ("if debugging is the process of removing bugs, then programming must be the process of adding them" [grin]).

Oh, well. Other's can stay in the beta/pre-release stage all their life if they wish, it's their loss. [headshake]

Quote: Original post by Guthur
Speaking of build numbers, is there any easy way of adding them to your app?

Say, in Visual C++ 2010 Express?

Anything like a BUILD_NUMBER macro which is an integer that gets incremented each time you do F7?

Dev-C++ has a feature like that, but i don't think VS does.
I don't bother with build numbers anyway. And you will want to manually update the major/minor numbers so a macro won't help you there. Although i do define the version number in a single header and use it elsewhere (i.e. resource (.rc) file) so i don't have to change it in more than one place.
[Window Detective] - Windows UI spy utility for programmers
Quote: Original post by XTAL256
Quote: Original post by Guthur
You could go the other way with this and say 'Why is the software I bought labeled v1.0 when it clearly doesn't work', being gamers we should all be very familiar with the 'patch it' approach by games companies.

But it does work! There are only two known issues in my app, one is not important and the other i rarely come across.
And all of the open source software / Firefox add-ons i use work. There may be some bugs, but there will always be some bugs ("if debugging is the process of removing bugs, then programming must be the process of adding them" [grin]).

Oh, well. Other's can stay in the beta/pre-release stage all their life if they wish, it's their loss. [headshake]


Does it really matter though ?

The version number is afterall just a number, in the opensource world 1.0 means complete, finished, there was even a bit of discussion when Wine hit version 1.0 simply because it didn't have 100% Windows compatibility yet (It still runs alot of older Windows software better than Vista/Win7 but its not 100% compatible with any Windows version and there is still tons of software that don't work at all or runs very badly)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
This is indeed something that has bothered me for quite some time.

Obviously, the system is completely subjective/arbitrary. We can argue forever about what "version 1.0" really means, but for a lot of software, it blows my mind that thousands (sometimes millions) of users actively use it on a day to day basis, but the version number lingers somewhere between 0.5 and 0.9 for an eternity.

Let's pick one example: DOSBOX. In my opinion, DOSBOX should have hit version 1.0 a long time ago. It is stable, feature-rich, and dependable. As of right now, it shows up as version 0.74. When will version 1.00 come out? Will it arrive 26 releases later?

For my own projects, I try to keep pre-release test builds in the 0.x branch. Once it reaches the point where I start encouraging others to actually use my project, I hope I am into the 1.x branch by then. That's just my perception of a good versioning system.
Amateurs practice until they do it right.Professionals practice until they never do it wrong.
Yes, i agree with TheBuzzSaw but it clearly looks like others have varying opinions on the subject so i guess i'll just leave it at that.

It is, as SimonForsman said, just a number. But i was curious about the reason behind the number, since every project needs a version number,
[Window Detective] - Windows UI spy utility for programmers

This topic is closed to new replies.

Advertisement