Depot Version
Home
Ant Tasks
Tools
API
Integration
 Apache Incubator > Depot > Version 

Depot Version Overview

Depot Version Overview

Depot Version automates some of the manual checks that users to with versions. It introduces classes to represent versions "numbers" from 1.0 to 1.0.1-rc6 to 2.0-20030221. This is pretty much it, a generic version object, however with this we can start to discover/display/compare/test those versions. Depot Version is a framework under which software can manipulate version information.

Note
Depot Version does NOT do source control type versioning, it represents version information.

Version Environment Introspection

Depot Version extracts the versions from various sources in the runtime environment, perhaps extracting Jar manifest files from the Jars in the classpath. It then allows users to display/debug this information and/or evaluate defined constraints upon this version environment. Users (be they developers, testers, operators or end users) can communicate version requirements amongst themselves via constraint files. These sets of constraint are merged and evaluated as one.

Note
Versioning conventions are typically algorythmic, 1.2 ought be backwards compatibly with 1.1 say, however there are real-world impracticalities with that. Development discontinuities occur, stuff happens. Algorythms and good intentions just aren't enough.
Note
This ability to communicate/share dependency and/or real-world constraints is a key benefit of Depot Version. Too much Jar Hell occurs when folks are first setting up an environment, or applying a patch/upgrade. Release notes are important, but being able to specify fuzzy requirements is better.

Version Compatibility

Version compatability is a concept where one version of something is "a suitable replacement" for another. Depot Version supports this concept, in algorythm form, however it builds upon it with the concept of version constraints for real world discontinuities that an algorythm can't cover.

Note
Compatibility deserves it's own page, but is whether one version of something is a compatible replacement for this.

by Adam R. B. Jack