Version Numbers and You

by Charles Miller on July 28, 2003

Seen in the Ruby Application Archive:

FooApp v0.34 FooApp for Ruby with a user friendly API, akin to BarApp, but feature complete and significantly faster.

Dude... if it's feature complete, why is it only version 0.34? (To confuse matters a little more, the long description page lists it as being “Production Quality”)

Too many Open Source projects treat Version 1.0 as some kind of Holy Grail that can only be reached when the project is perfect. I find that highly annoying, because it makes it really, really difficult to tell a sketchy alpha from production code that is just still in pre-1.0 because the author wants it to do everything.

My best advice to anyone thinking of starting such a project: put together a road-map now. List the features you want to see in your program, and then cull it down to three milestones:

  1. The bare minimum you would need to implement before you let anyone see your code.
  2. The bare minimum functionality you would need to implement before people could legitimately make use of your code
  3. As above, but stable and well-documented enough to be used in a production system (for libraries), or by non-programmer end-users (for applications)

Milestone 1 is your v0.5. Milestone 2 is v0.9. Milestone 3 is v1.0.

Note the “Minimum”. If you are over-eager, you will fall into the same trap as the programmer who developed FooApp: a version number that contradicts the documentation in terms of how useful the application may in fact be. Don't cull so far that you're releasing something you wouldn't use yourself, but don't fall into the trap of thinking that 1.0 is some magic number you will achieve when you've implemented everything.

The plan may be subject to change, too, especially if you find features being contributed by interested developers. However, if you start with a plan, you'll find it (and more importantly your users will find it) easier to plot how far you are from the magical stable release.

The idea is to get something by 1.0 that is useful, useable and stable. After you have accomplished 1.0, you can sit down and come up with a similar road-map for 2.0.

Previously: Why I'm Not Afraid of AOL Weblogs

Next: The (d)Evolution of Online Communities: A Case Study