The URISyntax proposal is silent on how to handle nightly, release, snapshot, and latest builds. This should be formalised.
The current proposal has: product-specifier = organisation "/" project "/" version where: version = *pchar To support nightlies etc, this leads to the possibility of artifacts named: http://repo.apache.org/apache/commons-cli/1.0/... http://repo.apache.org/apache/commons-cli/1.1/... http://repo.apache.org/apache/commons-cli/latest/... -> link to ../1.1 http://repo.apache.org/apache/commons-cli/nightly-20031112/... http://repo.apache.org/apache/commons-cli/nightly-20031113/... http://repo.apache.org/apache/commons-cli/nightly-latest/... -> link to ../nightly-latest Where *latest is a symlink to the latest version, to aid navigation. Option 1. Specify version format -------------------------------- To formalise the above, product-specifier could be changed to: product-specifier = organisation "/" project "/" [rtype "-"] version rtype = "nightly" | "snapshot" version = "latest" | YYYYMMDD ["-" HHMM [SS]] | *pchar Cons: . clutters the repository . doesn't follow existing conventions, e.g: http://cvs.apache.org/builds/jakarta-commons/nightly/commons-cli/ . no facility to indicate snapshots or nightlies of a particular version, if two or more versions are being developed concurrently. Option 2. Add build directory ----------------------------- To reduce clutter, a new directory could be introduced to separate releases from nightly and snapshot builds i.e: product-specifier = organisation "/" project "/" rtype "/" version rtype = "release" | "nightly" | "snapshot" version = "latest" | YYYYMMDD ["-" HHMM [SS]] | *pchar E.g: http://repo.apache.org/apache/commons-cli/release/l.0/... http://repo.apache.org/apache/commons-cli/release/l.1/... http://repo.apache.org/apache/commons-cli/release/latest/... -> symlink to ../1.1 http://repo.apache.org/apache/commons-cli/nightly/20031112/... http://repo.apache.org/apache/commons-cli/nightly/20031113/... -> symlink to ../20031113 http://repo.apache.org/apache/commons-cli/snapshot/20030901-1032/... http://repo.apache.org/apache/commons-cli/snapshot/latest/... -> symlink to ../20030901-1032 Cons: . no facility to indicate snapshots or nightlies of a particular version, if two or more versions are being developed concurrently. Option 3. Concurrent version nightly/snapshot builds ---------------------------------------------------- To allow nightlies and snapshots of multiple versions, product-specifier could be changed to: product-specifier = organisation "/" project "/" build build = release-build | interim-build release-build = "release" "/" version interim-build = itype "/" version "/" YYYYMMDD ["-" HHMM [SS]] itype = "nightly" | "snapshot" version = "latest" | *pchar E.g: http://repo.apache.org/apache/commons-cli/release/l.0/... http://repo.apache.org/apache/commons-cli/release/l.1/... http://repo.apache.org/apache/commons-cli/release/latest/... -> symlink to ../1.1 http://repo.apache.org/apache/commons-cli/nightly/1.0/20031112/... http://repo.apache.org/apache/commons-cli/nightly/1.0/20031113/... http://repo.apache.org/apache/commons-cli/nightly/1.0/latest/... -> symlink to ../20031113 http://repo.apache.org/apache/commons-cli/nightly/2.0/20031112/... http://repo.apache.org/apache/commons-cli/nightly/2.0/20031113/... http://repo.apache.org/apache/commons-cli/nightly/2.0/latest/... -> symlink to ../20031113 http://repo.apache.org/apache/commons-cli/snapshot/1.0/20030901-1032/... http://repo.apache.org/apache/commons-cli/snapshot/1.0/latest/... -> symlink to ../20030901-1032 http://repo.apache.org/apache/commons-cli/snapshot/2.0/20031101-1452/... http://repo.apache.org/apache/commons-cli/snapshot/2.0/latest/... -> symlink to ../20031101-1452 Option 4. Concurrent version interim builds ---------------------------------------------------- An alternative to Option 3 would be to remove any distinction from nightly and snapshot builds, as the difference IMO is only cosmetic: product-specifier = organisation "/" project "/" build build = release-build | interim-build release-build = "release" "/" version interim-build = "interim" "/" version "/" YYYYMMDD ["-" HHMM [SS]] version = "latest" | *pchar E.g: http://repo.apache.org/apache/commons-cli/release/l.0/... http://repo.apache.org/apache/commons-cli/release/l.1/... http://repo.apache.org/apache/commons-cli/release/latest/... -> symlink to ../1.1 http://repo.apache.org/apache/commons-cli/interim/1.0/20031112/... http://repo.apache.org/apache/commons-cli/interim/1.0/20031113/... http://repo.apache.org/apache/commons-cli/interim/1.0/latest/... -> symlink to ../20031113 http://repo.apache.org/apache/commons-cli/interim/2.0/20031112/... http://repo.apache.org/apache/commons-cli/interim/2.0/20031113/... http://repo.apache.org/apache/commons-cli/interim/2.0/latest/... -> symlink to ../20031113 Comments? -Tim
