I have a few comments on the proposed URI Syntax, from http://nagoya.apache.org/wiki/apachewiki.cgi?ASFRepository/URISyntax.
<quote> Compromise URI http://<host>/<project>/<version>/artifact-[<version>;].ext For example http://repo.apache.org/org-apache-ant/1.5.1/ant-1.5.1.jar http://repo.apache.org/org-apache-ant/1.5.1/ant-testutil-1.5.1.jar http://repo.apache.org/org-apache-ant/1.5.1/LICENSE.txt </quote> 1. This should be written as: http://<host>/<project>/<version>/artifact[-<version>].ext as the '-' is only required if the version is present. 2. Does '.ext' need to be mandatory? I'm assuming that a project is free to deploy whatever it likes into the repository, not all of which should be forced to have extensions (e.g, Unix shell scripts, README files). 3. <project> is too limiting as it is required to be globally unique, resulting in unwieldy names like: "jakarta-commons-logging" or "org.apache.jakarta.commons.logging" I would prefer to see this split into: <organisation>/<product> where: . <organisation> is arbitrary, but globally unique. It could be the domain name, e.g "sun.com", the reverse domain name e.g "org.apache", or simply the name of the organisation, e.g "oracle". . <project> is the project name, unique within the organisation, e.g: "jndi", "ldap", "commons-logging" etc. 4. <artifact> is too limiting as it groups all artifacts for one project in a single directory. For projects producing large no.s of artifacts, it becomes difficult for users to browse. The httpd project for example produces multiple binaries, for different platforms (see http://www.apache.org/dist/httpd/) The requirement that -<version> is prepended to the artifact name also doesn't support language specific requirements. I would prefer to see this split into: [<type>/][<platform>/]<artifact> where: . <type> is optional and arbitrary, determined by the deployment tool. E.g: "jars", "binaries", "docs" etc. . <platform> is optional and arbitrary, determined by the deployment tool. . <artifact> is determined by the deployment tool, and includes: . the artifact name . the version (optional) . the platform (optional) . the extension (optional) . the type (optional) E.g, "-src", "-bin" etc. This allows the repository to cater for language-specific deployment tools. For java, <artifact> could be: <artifact-name>[-<version>][-<type>][.<ext>] E.g: . LICENSE.txt . ant-1.5.1.jar . ant-1.5.1-src.zip For C binaries, <artifact> could be: <artifact-name>-<version>-<platform>.<ext> E.g: . httpd-2.0.43-sparc-sun-solaris2.8.tar.gz In summary, I think the URI should be of the form: http://<host>/<organisation>/<project>/<version>/[<type>/][<platform>/]<arti fact>, with the format of <artifact> determined by the deployment tool. For example: http://repo.apache.org/apache/ant/1.5.4/LICENSE.txt http://repo.apache.org/apache/ant/1.5.4/jars/ant-1.5.4.jar http://repo.apache.org/apache/ant/1.5.4/source/ant-1.5.4-src.zip http://repo.apache.org/apache/httpd/2.0.43/binaries/sparc-sun-solaris2.8/htt pd-2.0.43-sparc-sun-solaris2.8.tar.gz http://repo.mycompany.com/sun/jndi/jars/jndi-1.2.1.jar Regards, Tim
