Tim:

My initial impression is that all the following could be expressed as part of a spec. one-level-up from the artifact spec. Everything below is dealing with the notion of the usage of the repository for a particular purpose - namely the registration of artifacts arising from development processes. It would be nice if we could draw a line between the repository in its role as "artifact retrieval" as distinct from the *usage* of the repository for a particular domain objective.

Personally I figure this can be archived by layering on a usage specific set of rules/best-practices on top of the [version] element.


Cheers, Steve.



Tim Anderson wrote:

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





--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]

|------------------------------------------------|
| Magic by Merlin                                |
| Production by Avalon                           |
|                                                |
| http://avalon.apache.org/merlin                |
| http://dpml.net/                               |
|------------------------------------------------|






Reply via email to