Digesting each section slowly,

Its great idea to make Artifact Specifier to be opaque to give way to different languages, but I am not sure about the Version Specifier. Version Specifier can be considered as language independent and allowing different best practices in there would make the repository unordered and could confuse the users.

"1.0", "v0.9-beta", "nightly/20031113", "latest", "release/1.5.4"

URI examples:
 http://repo.apache.org/apache/commons-logging/1.0
 http://repo.apache.org/xorg/xyz/release/1.2
 http://repo.apache.org/yorg/abc/v0.9-beta/abc..

thoughts ?

regards,
-Anou


From: "Tim Anderson" <[EMAIL PROTECTED]>
Reply-To: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Subject: [proposal] URI Syntax -  v0.2
Date: Fri, 14 Nov 2003 16:39:06 +1100

This version replaces v1.0:
http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&ms
gNo=308


Overview ========

The key aims of this proposal are:
. language and artifact neutrality.
  It should be possible to support multiple languages and
  their artifacts, not just java.

. it should be possible for users to easily navigate
  the repository and locate artifacts, including
  jars and release distributions.
  Compare this with the existing approach of separating
  release distributions (http://www.apache.org/dist/) and jars
  (http://www.ibiblio.org/maven).

. it should be possible for tools to construct a URI
  to locate an artifact using a set of known criteria

Artifacts
---------

All files in the repository are artifacts. There is no distinction
between artifacts and meta-data. Any relationships between artifacts
is determined by supporting tools.


Repository URI Components =========================

An absolute repository URI is written as follows:

  repository-uri = access-specifier "/" product-specifier "/"
                   version-specifier "/" artifact-specifier


Access specifier ----------------

The access specifier determines the scheme, authority, and optional
repository directory prefix. There is currently no requirement for
ftp, scp or file based access - only http is supported:

  access-specifier = http-access-specifier
  http-access-specifier = "http://"; authority "/" [directory "/"]
  directory = path_segments

(authority and path_segments are per http://www.ietf.org/rfc/rfc2396.txt)

<directory> is used when the repository cannot be located at
the root of an absolute URI.

URI examples:
  http://repo.apache.org/
  http://repo.apache.org/pub/repository


Product specifier -----------------

The product specifier specifies the organisation and project:

  product-specifier = organisation "/" project
  organisation = name-segments
  project = name-segment
  name-segments = name-segment *( "/" name_segment)
  name-segment = nchar+
  nchar = alphanum | escaped | "_" | "-" | "!" | "~" | "@" | "&"

  (alphanum and escaped are per http://www.ietf.org/rfc/rfc2396.txt)

<organisation> is the organisation name. It is arbitrary,
but should be globally unique. It could be the domain name,
or reverse domain name, with "." replaced by "/", e.g:
  "sun/com", "org/apache"
or simply the name of the organisation, e.g "oracle".

<project> is the project name. It is unique within an organisation.
E.g, "ldap", "jndi", "maven", "commons-logging".

URI examples:
  http://repo.apache.org/org/apache/commons-logging
  http://repo.apache.org/sun/jndi


Version specifier -----------------

The version specifier specifies the version of the project:

   version-specifier = name-segments

For the purposes of this proposal, version-specifier is opaque -
its format is determined by language and deployment best practices.

Some possible examples include:
 "1.0", "v0.9-beta", "nightly/20031113", "latest", "release/1.5.4"

URI examples:
  http://repo.apache.org/apache/commons-logging/1.0
  http://repo.apache.org/apache/commons-logging/1.1
  http://repo.apache.org/apache/commons-logging/latest
  http://repo.apache.org/apache/ant/release/1.5.4
  http://repo.apache.org/apache/ant/nightly/20031113
  http://repo.apache.org/apache/commons-cli/nightly/1.0/20031113
  http://repo.apache.org/apache/commons-cli/nightly/2.0/20031113


Artifact specifier ------------------

The artifact specifier uniquely identifies an artifact within a
project version:
  artifact-specifier = name-segments

For the purposes of this proposal, artifact-specifier is opaque -
its format is determined by language and deployment best practices.

Some possible examples include:
 jars/commons-logging-1.1.jar
 binaries/linux/httpd-2.0.40-i686-pc-linux-gnu-rh73.tar.gz

URI examples:

http://repo.apache.org/apache/common-logging/1.1/jars/commons-logging-1.1.ja
r
  http://repo.apache.org/apache/httpd/2.0.48/docs/httpd-docs-2.0.48.en.zip
  http://repo.apache.org/apache/ant/1.5.4/KEYS


Rationale =========

Of the URI components:
. <access-specifier> and <product-specifier> are common accross
  all languages and deployments.
. <version-specifier> is subject to language or deployment
  best practices
. <artifact-specifier> is subject to language, deployment, artifact, or
  project best practices

It is envisioned that there will be different repository deployment
and query tools developed for each language. A generic tool cannot
be written without providing supporting meta-data, which is outside
the scope of this proposal.

Projects should be able to deploy arbitrary artifacts to the
repository, whether they be for end-users, or meta-data (e.g, maven's
project.xml). Tools should ignore any artifact they don't understand.

To ensure interoperability between language-based tools, best-practice
guidelines need to be drawn up for each supported language and deployment
scenario.


Appendix ========

Changes from v0.1
-----------------

. repository-uri changed from:
    access-specifier "/" product-specifier "/" artifact-specifier
  to:
    access-specifier "/" product-specifier "/" version-specifier "/"
    artifact-specifier

. product-specifier changed from:
    organisation "/" project "/" version
  to:
    organisation "/" project

. organisation changed from:
    *pchar
  to:
    name_segments

. project changed from:
    *pchar
  to:
    name_segment

. version renamed to version-specifier, and is now opaque

. artifact-specifier is now opaque



_________________________________________________________________
Is your computer infected with a virus? Find out with a FREE computer virus scan from McAfee. Take the FreeScan now! http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963




Reply via email to