Greytower Technologies

If the navigation is not visible, this link will take you to it.

 

Revision Numbering

As with many others things, we have chosen our own method of numbering revisions. The scheme is used on a variety of items, such as stand-alone software modules, software packages, documents, and so forth.

General Syntax

All revision numbers used for Greytower products follow the same syntax, as illustrated by this RFC 2234 compatible BNF grammar:

    revision  ::= version DELIM release (DELIM | status) patch
    version   ::= 1*DIGIT
    release   ::= 1*DIGIT
    patch     ::= 1*DIGIT
    status    ::= (a|b)
    DIGIT     ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    DELIM     ::= .
   

This can be conclusively parsed by the following Perl-compatible regular expression:

    (\d+)\.(\d+)(\.|a|b)(\d+)
   

Cycles

There are three distinct release cycles:

  1. Development. The item is being worked on, but has not yet reached such a level that it can be tested with any reliable results.
  2. Testing. The item has been developed to such a level that it can be tested against real life data, or reviewed by others in the case of documents. The item is not yet ready for active deployment.
  3. Production. The item has been developed to the point that it can be used with consistent results.

Each cycle is easily identified from the revision string by observing the status code.

Status Code

There are three status codes - one implicit, existing only for the sake of consistency. If the status code part of a revision string is

Revision Changes

Changing the revision string for an item follows a set of simple rules:

Setting the Initial Revision

Once an item is released for the first time, it is given the revision string 1.0a0. Typically, this revision is released after some initial work has been done.

Minor Changes to an Item

When an item change in a minor way, such as the correction of a grammatical or syntactical error in a document, or a bugfix in a program, the patch section of the revision string should be incremented by one (1). Given an initial revision and a minor change, 1.0a0 would change to 1.0a1.

Changing the Status

When an item has gone through a number of such changes, and is deemed mature enough to start testing with real world data, the status part of the revision string is changed from a to b and the patch level reset. Given a revision of 1.0a15, a status change would yield 1.0b0.

When the item is deemed free enough of bugs to go into production, the status section is removed, and the patch level reset. Given a revision of 1.0b29, such a change would yield 1.0.0

Releases and Versions

The release and version fields are only changed in production level items.

release is changed when sections/functionality is added or removed, as opposed to bugs/errors being corrected. Given a revision of 1.0.0, adding functionality/sections would yield 1.1.0

version is changed when the program/document is re-written from scratch. Given a revision of 1.1.0, such a rewrite would yield 2.0a0 and a restart of the cycle.

Packages

Packages – that is collections of programs or libraries that belong to a common system (such as PetiteCGI) – will have revisions that identify the entire package. The various parts of the package will have separate revision strings.

Package Names

Software packages are named according to the following scheme:

     PackageName-revisionstring.tar.gz
    

Programs

Stand-alone programs and libraries are giving separate revision strings following the standard pattern.

Program and Library Names

Whilst stand-alone programs are named according to the same scheme as packages – see above – libraries is another matter. As we mostly do internal work using Perl, all our libraries are named with the .pm extension. Distributions of such libraries follows the pattern:

     LibraryName.pm-revisionstring.tar.gz
    

Return to the top of the document