Version Numbers

The approach we take for version numbering is very similar to the way the Linux kernel handles it. With this approach, it is easy to tell what's going on just by looking at the three-part version number.

Full Version Number A full, three-part number indicating a specific implementation of phpShop. This is specified in {x.y.z} format. Our examples will be {1.0.6} and {1.1.2}.

Major Release Number The first number is the major release number (that's the {x}). Currently, this is 0 which means we haven't had any major releases yet. We're working on our {2.0.0} release which is a rewrite and deserving of a new major release number.

A major release of phpShop should have a high-level set of specific goals that it is meeting. For phpShop 1.0, this will be reaching a stable release. For later versions, this may include implementation of more modular libraries and api behind the code, a templating system for the user-interface, and so forth.

Minor Release Number The second number is the minor release number (that's the y). The minor release number will tell you whether a release is a stable or development branch of phpShop. Even numbers (0, 2, 4...) mean that it's a stable release, and odd numbers (1, 3, 5...) mean it's a development release.

A minor release of phpShop should have a lower-level set of specific goals that it is meeting. These goals should, somehow or another :), be a subset of the goals for the major release of which it is a part. Basically, the minor releases allow for the major goals of a major release to be broken into a more discrete, attainable set of objectives.

Release Incrementor Lastly, the final number in a three-part version number for phpShop is a release incrementor (that's the {{z}}). In a stable branch, new versions of phpShop will be release as bugs are found and squished. In a development branch, new versions of phpShop will be released as progress is made toward the goals set for the next major and minor release. New releases will happen as needed in a stable branch. In a development branch, however, they should happen frequently, as more progress is made toward the next minor release.

Important points

  • Versions with a even minor release number are stable.
  • Versions with a odd minor release number are development.
  • New incremental releases in a stable branch should ONLY CONTAIN bugfixes. New features should always be implemented in the current development branch.

A Final Note - Timeline The goals and objectives for each minor release should be carefully chosen so that a new minor release can take place every three to four months. This is so that our users can see actual improvements and will stick with us as we work to make phpShop a better e-commerce application.