To summarise, there are three possible ways to encode subprojects in URIs: 1. Status quo repository-uri = access-specifier "/" product-specifier "/" version-specifier "/" artifact-specifier product-specifier = organisation "/" project
. recommend that <organisation> is the reverse FQDN . for subprojects, <project> is the concatenation of project and subproject names . tools can't determine project and suproject names from URI E.g: http://repo.apache.org/jakarta.apache.org/commons-lang 2. Introduce mandatory <subproject> path i.e, change product-specifier: product-specifier = organisation "/" project "/" subproject . recommend that <organisation> is the reverse FQDN . no need to concatenate project and subproject names . doesn't support subprojects nesting > 1 . redundant directory for projects with no subprojects . tools can determine project and suproject names from URI E.g: http://repo.apache.org/org.apache.jakarta/commons/lang http://repo.apache.org/org.apache.xml/batik/batik 3. Change <product-specifier> so that it is opaque repository-uri = access-specifier "/" product-specifier "/" version-specifier "/" artifact-specifier product-specifier = path_segments . recommend that <product-specifier> contains: . reverse FQDN . project name . subproject name(s) . can scale to arbitrary levels of subprojects . tools must parse URIs right to left, in order to separate version-specifier and product-specifier . tools must derive organisation, project, and subproject information from meta-data E.g: http://repo.apache.org/org/apache/jakarta/commons/lang http://repo.apache.org/org/apache/xml/batik I'm beginning to prefer option 3. -Tim