You are viewing a plain text version of this content. The canonical link for it is here.
Posted to repository@apache.org by Tim Anderson <tm...@netspace.net.au> on 2003/11/14 02:41:17 UTC

URI Syntax: nightly and release builds

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


Re: URI Syntax: nightly and release builds

Posted by Nick Chalko <ni...@chalko.com>.
Tim Anderson wrote:

>The URISyntax proposal is silent on how to handle
>nightly, release, snapshot, and latest builds.
>This should be formalised. 
>  
>

Very nicley thought out proposal. 
However first we should decide if we need to do anything with version. 

Why can't projects just all there versions whatever they want

Nightly, daily, latest, current, alpha, beta, final, rc, gold, foo, bar, ...

I don't think we need to specify anything about a version.

We can also consider using redirects instead of symlinks for latest etc.

R,
Nick

Re: URI Syntax: nightly and release builds

Posted by Nick Chalko <ni...@chalko.com>.
Stephen McConnell wrote:

>
> 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.
>
Yes I agree,
A repo usage of version best practice document.

>
> Cheers, Steve.
>
>
>>
>


Re: URI Syntax: nightly and release builds

Posted by Stephen McConnell <mc...@apache.org>.

Tim Anderson wrote:

>OK - so it should be at part of the java artifact specifier proposal [1],
>or do you envision another layer?
>

I don't think this is java specific - its software development process 
specific.  My current thinking is that it is a langauge independent 
layer is sufficient (mainly because I think I have resolved how to do 
everything I want relative to java based on these two layers).

>The URI Syntax proposal [2] that the above extends is becoming a little
>thin.
>

That's fine. 
It just means we have a simple and specific specification dealing with a 
simple and specific abstaction.

Cheers, Stephen.

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org

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





RE: URI Syntax: nightly and release builds

Posted by Tim Anderson <tm...@netspace.net.au>.
OK - so it should be at part of the java artifact specifier proposal [1],
or do you envision another layer?
The URI Syntax proposal [2] that the above extends is becoming a little
thin.

i.e:
  repository-uri = access-specifier "/" product-specifier "/"
                   artifact-specifier
  ...
  product-specifier = organisation "/" project "/" version
  organisation = *pchar
  project = *pchar
  version = *pchar
  (pchar is per http://www.ietf.org/rfc/rfc2396.txt)

becomes:
  ...
  product-specifier = organisation "/" project "/" version
  organisation = path_segments           [3]
  project = *pchar
  version = path_segments
  (path_segments is per http://www.ietf.org/rfc/rfc2396.txt)

organisation, version and artifact-specifier are therefore all
opaque, determined by best-practices.

-Tim

[1] http://nagoya.apache.org/wiki/apachewiki.cgi?ASFRepository/JavaArtifacts
[2] http://nagoya.apache.org/wiki/apachewiki.cgi?ASFRepository/URISyntax
[3] to allow for FQDN and reverse FQDN, separated by "/".

> -----Original Message-----
> From: Stephen McConnell [mailto:mcconnell@apache.org]
> Sent: Friday, 14 November 2003 12:55 PM
> To: repository@apache.org
> Subject: Re: URI Syntax: nightly and release builds
>
>
>
> 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:mcconnell@apache.org
>
> |------------------------------------------------|
> | Magic by Merlin                                |
> | Production by Avalon                           |
> |                                                |
> | http://avalon.apache.org/merlin                |
> | http://dpml.net/                               |
> |------------------------------------------------|
>
>
>
>
>



Re: URI Syntax: nightly and release builds

Posted by Stephen McConnell <mc...@apache.org>.
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:mcconnell@apache.org

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