= Common Distribution Artifact Specifier =

Version 0.1

Overview

This proposal extends the URI Syntax proposal: /URISyntax

It is recommended, but not required, that it be used in conjunction with the Common Build Version Specifier proposal: /CommonBuildVersionSpecifier

The key aims of this proposal are to:

URI Components

An absolute repository URI is written as follows:

{{{ repository-uri = access-specifier "/" product-specifier "/"

For distribution artifacts, artifact-specifier is:

{{{ artifact-specifier = distribution-artifact

Binary artifacts

{{{ binary-artifact = platform-independent-binary |

E.g: {{{ "binaries/linux/httpd-2.0.40-i686-pc-linux-gnu-rh73-bin.tar.gz"

Source artifacts

{{{ source-artifact = platform-independent-source |

E.g: {{{ "source/commons-cli-1.1-src.zip"

Platform independent artifacts

Platform independent artifacts include the project version:

{{{ versioned-artifact-name = artifact-name "-" short-versiondebug

E.g: {{{ ant-1.5.4-src.tar.gz

Platform specific artifacts

Platform-specific distribution artifacts include the project version and platform:

{{{ versioned-platform-artifact-name = artifact-name "-" short-version

Debug information

Artifacts can indicate that they include debugging information via the "-dbg" suffix:

  debug = "-dbg" 

E.g: {{{ "commons-cli-1.1-dbg-bin.zip"

Rationale

Artifacts in subdirectories

Each category of artifact in this proposal is required to be located in its own directory, e.g:   "binaries/commons-cli-1.0.tar.gz"  rather than in the root project version directory.

The alternative approach of placing each artifact in the root makes repository navigation harder, particularly for projects that:

Inclusion of version and platform in artifact names

Distribution artifacts require that the version be included in their names. Platform specific artifacts are required to also specify the platform:

{{{ versioned-artifact-name = artifact-name "-" short-versiondebug

This ensures that it is immediately obvious to users what version and platform of an artifact they are using, subsequent to its download.

The optional timestamp indicates interim builds, as per /CommonBuildVersionSpecifier

Tool support

Tools can unambigously locate an artifact within a project version given the following criteria:

Example 1

Given: {{{ type = "binary"

The URI fragment would be:   "binaries/commons-cli-1.1-bin.zip" 

Example 2

Given: {{{ type = "binary"

The URI fragment would be:   "binaries/commons-cli-1.1-20031113.1043-dbg-bin.tar.gz" 

Example 3

Given: {{{ type = "source"

The URI fragment would be:   "source/commons-cli-1.1-src.tar.gz" 

Example 4

Given: {{{ type = "binary"

The URI fragment would be:   "binaries/solaris/httpd-2.0.48-sparc-sun-solaris2.8-dbg-bin.tar.gz" 

URI Examples

Platform independent source

{{{ http://repo.apache.org/apache/ant/1.5.4/source/ant-1.5.4-src.zip

Platform specific source

  http://repo.apache.org/apache/httpd/2.0.48/source/win32/httpd-2.0.48-win32-src.tar.gz 

Platform independent binaries

{{{ http://repo.apache.org/apache/ant/1.5.4/binaries/ant-1.5.4-bin.zip

Platform specific binaries

{{{ http://repo.apache.org/apache/httpd/2.0.48/binaries/win32/apache-2.0.48-win32-x86-dbg-bin.exe

ASFRepository/CommonDistributionArtifactSpecifier (last edited 2009-09-20 23:31:53 by localhost)