in reply to Versioning modules in a package
Long, long ago, in days of yore, I was brought up using 3-level version numbers: XX.YY.ZZ
- This was incremented only when an internal interface changed.
Eg. The number or types of paramaters to an Internal Use Only function changed.
Or a piece of common code was factored into a new subroutine ( Of course, we didn't call it factoring back then).
Or, new IUO functionality was added that was not (yet) exposed externally through the documented API.
- Incremented every time a modification was made that made no changes to internal or external APIs. Eg. Bug fixes, corrections, simplifications.
Increments at any level are only made once unit/system and regressions test suite have been run and passed.
Occasionally, if large numbers of bug fixes or enhancements meant that midor or minor were approaching 3 digits, then a "maintainance increment" of the next higher level was made to avoid that.
So far, I not seen a better system.
The upshot is, the version of your subpackages should live their own lives and be pretty much unrelated to the versioning of the parent.
However, a change in the major (XX) version number of a subpackage should result in an increment in the the midor (YY) of the parent.
If both subpackages modify their external interfaces, then both their major version increment, and the midor of the parent is incremented twice.
(Though if you want to avoid major woes, you modify one subpackage at a time, and then the dual increment of the parent becomes obvious.)
Update: The reason why I consider this a good system is because any code that uses (only) the published interface, will be compatible whilst the Major version number remains the same.
This is especially useful with dynamically link libraries as newer, but major version compatible .dll/.so files can be substituted for earlier ones without rebuilding the calling code.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Versioning modules in a package
by FoxtrotUniform (Prior) on Oct 04, 2004 at 19:35 UTC | |
by BrowserUk (Patriarch) on Oct 04, 2004 at 22:39 UTC | |
|
Re^2: Versioning modules in a package
by legLess (Hermit) on Oct 04, 2004 at 19:33 UTC | |
by BrowserUk (Patriarch) on Oct 04, 2004 at 21:48 UTC | |
|
Re^2: Versioning modules in a package
by stvn (Monsignor) on Oct 04, 2004 at 21:45 UTC | |
|
Re^2: Versioning modules in a package
by Aristotle (Chancellor) on May 02, 2012 at 14:26 UTC | |
by BrowserUk (Patriarch) on May 02, 2012 at 16:50 UTC |