You are viewing a plain text version of this content. The canonical link for it is here.
Posted to repository@apache.org by Nick Chalko <ni...@chalko.com> on 2003/10/30 19:43:38 UTC

URI Syntax was: Repository

dion@multitask.com.au wrote:

>
>Simple focussed discussion without talking about incubating projects or 
>adopting projects works for me. Those are separate issues.
>--
>dIon Gillard, Multitask Consulting
>Blog:      http://blogs.codehaus.org/people/dion/
>Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc
>  
>

So here is a key focuossed issue.
What should the URI look like

The latest URI discussed was 

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



= Special versions. =
Most people agree we should support  Latest (released), and Nightly, 
along with the normal released builds


The part  still needs to be decided is the project name.

I think the most stable idea proposed is the java package name with - 
instead of .



Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
Adam R. B. Jack wrote:

>
>I feel we could/should unashamedly complete our thoughts on Java, then go
>and recruit some per-language specialists to chime in on their flavour.
>Maybe we'll have one repository 'class' with per language sub-classes. Let's
>mature what we can agree upon before we specialize & determine what we
>can't. [If we have a Java repository separate from a C++ one, so be it, but
>N better than 0. Heck, separate might be easiest management anyway.]
>  
>
Good point.

>Just my two cents...
>
>regards,
>
>Adam
>  
>


Re: URI Syntax was: Repository

Posted by "Adam R. B. Jack" <aj...@trysybase.com>.
> Some artifacts don't like having the full version number.
> dll for example.   I think the DLL name needs to be stable and thus
> would not have the full version info.
> For the dll example we can mandate that it has to be put in a versioned
> zip/tar.gzip

If we continue to think 100% generically we'll never hold all the
permutations in Wiki, let alone out heads, and we'll fluster ourselves
paralysis. It is clear that Java has a set of requirements, a style, that do
not fit other languages. We can't do it all.

I feel we could/should unashamedly complete our thoughts on Java, then go
and recruit some per-language specialists to chime in on their flavour.
Maybe we'll have one repository 'class' with per language sub-classes. Let's
mature what we can agree upon before we specialize & determine what we
can't. [If we have a Java repository separate from a C++ one, so be it, but
N better than 0. Heck, separate might be easiest management anyway.]

Just my two cents...

regards,

Adam


Re: URL Syntax parts

Posted by "Adam R. B. Jack" <aj...@trysybase.com>.
Things change, that is a fact that I'm just not sure we can generically
pre-empt, nor try.

Interestingly, Gump deals with a lot of the issues we are discussing here.
The main difference is that Gump purely metadata based, and lives only in
the 'now'. For changes it support aliasing.

http://gump.covalent.com/log/cvsjars.html
http://gump.covalent.com/log/bypackage.html

BTW: Gump metadata management gets incredibly stale, incredibly quickly, if
folks aren't nagged. I'm not proposing going that far w/ metadata, just
realizing the similarities in situation...

FWIIW: In Gump (and the repo it is producing) group = CVS module, not
project. That could be changed.

regards

Adam
----- Original Message ----- 
From: "Noel J. Bergman" <no...@devtech.com>
To: <re...@apache.org>
Sent: Thursday, October 30, 2003 5:37 PM
Subject: RE: URL Syntax parts


> I would prefer to NOT have the TLP represented in the URI if possible.
> Projects can be promoted.  The package name for James was always
> org.apache.james, and so did not change when the project was promoted.
>
> Point being that I'm not sure if the URI should reflect the ASF
> organization.  A project name ought to be unique across the ASF.
>
> --- Noel
>


RE: URL Syntax parts

Posted by "Noel J. Bergman" <no...@devtech.com>.
I would prefer to NOT have the TLP represented in the URI if possible.
Projects can be promoted.  The package name for James was always
org.apache.james, and so did not change when the project was promoted.

Point being that I'm not sure if the URI should reflect the ASF
organization.  A project name ought to be unique across the ASF.

	--- Noel


URL Syntax parts

Posted by Nick Chalko <ni...@chalko.com>.
Here is a fresh stab at what we are talking about.

I see the URL sytax having these parts
<root><distribution-unit><type><versioned artifact>
Sample
http://repo.apache.org/jakarta/commons-beanutils/jars/commons-beantutils-1.4.jar 


    * root
          o http://repo.apache.org/jakarta
    * Distribution Unit Name
          o commons-beanutils
    * Type
          o jars
    * Versioned Artifact
          o commons-beantutils-1.4.jar


Root can be any valid URL
For apache I recommend  http://repo.apache.org/<top-level-project>

The Distribution Unit Name for apache would be controlled by the PMC.  
It should strive to be globably unique, but that is up to the PMC.

What happens after that is what WE the repo list need to decide. 
How files are put in side of a  <root><distribution-unit> like 
http://repo.apache.org/jakarta/commons-beanutils/

Lets call <root><distribution-unit>  the <base-url>

Does it sound reasonable to focus our discussion on what comes afte the 
<base-url>  and leave the rest upto the PMC's?







Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
dion@multitask.com.au wrote:

>
>  
>
>>I prefer to have version in the filename.   but do we want to FORCE that 
>>    
>>
>
>  
>
>>on projects prublishing to our repository.
>>    
>>
>Yes.
>  
>
Ok I think we can concur.   and add this to the requirement/ Goals doc

All artifacts in the repository WILL  include the version in the filename.


>--
>dIon Gillard, Multitask Consulting
>Blog:      http://blogs.codehaus.org/people/dion/
>Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc
>
>
>  
>


Re: URI Syntax was: Repository

Posted by di...@multitask.com.au.
Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 10:32:28 AM:

> dion@multitask.com.au wrote:
> 
> >Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 09:05:06 AM:
> >>Must every artivact have the version in the file name?
> >>
> >Definitely.
> 
> Some artifacts don't like having the full version number. 
> dll for example.   I think the DLL name needs to be stable and thus 
> would not have the full version info.
> For the dll example we can mandate that it has to be put in a versioned 
> zip/tar.gzip

That works, but I'm still not sure why DLLs are a special case. Lots of 
DLLs have a version number as part of the file. What the file is called 
when it's downloaded is a different issue to what the file name stored in 
the repo is. I think the repo must stored versioned file names.

> Also, some people  prefer to see xalan.jar  not xalan-1.4.jar.

They know how to rename the file, right?

> I prefer to have version in the filename.   but do we want to FORCE that 

> on projects prublishing to our repository.
Yes.

--
dIon Gillard, Multitask Consulting
Blog:      http://blogs.codehaus.org/people/dion/
Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc




Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
dion@multitask.com.au wrote:

>Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 09:05:06 AM:
>
>  
>
>
>  
>
>>Must every artivact have the version in the file name?
>>    
>>
>Definitely.
>  
>

Some artifacts don't like having the full version number.  
dll for example.   I think the DLL name needs to be stable and thus 
would not have the full version info.
For the dll example we can mandate that it has to be put in a versioned 
zip/tar.gzip

Also, some people  prefer to see xalan.jar  not xalan-1.4.jar.

I prefer to have version in the filename.   but do we want to FORCE that 
on projects prublishing to our repository



>--
>dIon Gillard, Multitask Consulting
>Blog:      http://blogs.codehaus.org/people/dion/
>Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc
>
>
>  
>


Re: URI Syntax was: Repository

Posted by di...@multitask.com.au.
Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 09:05:06 AM:

> So here are some open questions.
> 
> How do we pick unique human readable top level directories,  in other 
> words  how do we name the directories for projects ad sub-projects.

Again, only as an example, maven takes the subproject name as the 
top-level name. I'm not altogether happy with it, as it makes the top 
level a very long list.

i.e. in the maven repository, jakarta/commons/beanutils is at 
/commons-beanutils of the repo.

> Should each version have its own subdir?
My personal preference is no. I'm more often looking for a jar, version is 
usually a secondary consideration.

> Should each artifact type have it's own subir?
My preference here is yes.

> Do we support both version and type subdirs.
I'd prefer we make a decision one way or the other for this repository, 
but let the tools be flexible.

> Must every artivact have the version in the file name?
Definitely.
--
dIon Gillard, Multitask Consulting
Blog:      http://blogs.codehaus.org/people/dion/
Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc




Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
So here are some open questions.

How do we pick unique human readable top level directories,  in other 
words  how do we name the directories for projects ad sub-projects.

Should each version have its own subdir?

Should each artifact type have it's own subir?

Do we support both version and type subdirs.

Must every artivact have the version in the file name?







Re: URI Syntax was: Repository

Posted by Nicola Ken Barozzi <ni...@apache.org>.
Nick Chalko wrote:
...
> What should the URI look like
> 
> The latest URI discussed was
> 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

This is where Avalon keeps jars for the framework similar to the above 
example (done by Leo after the previous repo discussions IIUC):

http://www.apache.org/dist/avalon/framework/jars/avalon-framework-4.1.jar
http://www.apache.org/dist/avalon/framework/jars/avalon-framework-impl-4.1.5.jar
http://www.apache.org/dist/avalon/framework/jars/LICENSE.txt

So it's:

   http://<host>/<project>/<artifact-type>/artifact-[<version>].ext

host:          www.apache.org/dist
project:       avalon/framework
artifact-type: jars

httpd instead does this:

   http://www.apache.org/dist/httpd/

Please note this URL:
 
http://www.apache.org/dist/httpd/binaries/aix/apache_1.3.26-000964804C00-ibm-aix4.3.tar.gz

It could be:

host:          www.apache.org/dist
project:       httpd
artifact-type: binaries/aix

The tar.gz format is more complex, and needs a different version 
resolution system.

-- 
Nicola Ken Barozzi                   nicolaken@apache.org
             - verba volant, scripta manent -
    (discussions get forgotten, just code remains)
---------------------------------------------------------------------


Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
Noel J. Bergman wrote:

>>The part  still needs to be decided is the project name.
>>    
>>
>
>  
>
>>I think the most stable idea proposed is the java package name with -
>>instead of .
>>    
>>
>
>Let's be careful.  We should be -1 to anything that is Java-specific in such
>manner as to preclude non-Java projects.  Rememnber: this is the ASF
>Repository.
>  
>
Good point.

Other choices are reverse domain name. 
or apache-<cvs module name>. 


>Do we have anyone listening on this list from non-Java project?
>
>	--- Noel
>
>  
>


RE: URI Syntax was: Repository

Posted by "Noel J. Bergman" <no...@devtech.com>.
> The part  still needs to be decided is the project name.

> I think the most stable idea proposed is the java package name with -
> instead of .

Let's be careful.  We should be -1 to anything that is Java-specific in such
manner as to preclude non-Java projects.  Rememnber: this is the ASF
Repository.

Do we have anyone listening on this list from non-Java project?

	--- Noel



Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
dion@multitask.com.au wrote:

>  
>
>>There is still some naming details to work out.  An apache project can 
>>be a very big thing.
>>Take  the CLI project in Jakarta  commons   that would be
>>apache-jakarta-commons-cli 
>>vs the pacakge name   org.apache.commons.cli
>>    
>>
>
>This is where the previous naming convention breaks for me.
>
><site>/<project>/<version>/<artifact>-<version>.<type>
>
>assumes that the 'project' has a single versioning system. Jakarta as a 
>project doesn't. e.g. commons/beanutils has versions very different from 
>commons/logging.
>
>*As an example only*, maven treats commons/beanutils and commons/logging 
>as two separate projects.
>  
>

Project is a very overloaded word. 
What I think we are trying to describe is a "distribution unit".
A set of artifacts that are released and versioned as a unit.
apache-jakarta-commons-beanutils  is a unit of distribution  (UoD ?).

We could call it   beanutils,   jakarta-beanutils,  apache-beanutils, 
commons-beanutils. 

I like the Java package name (i.e. reverse TLD) because it is widely 
understood and reduce the number of conflicts.
I think it is general enough that non Java projects can find a similar 
name   org-apache-httpd-whatever


R,
Nick








Re: URI Syntax was: Repository

Posted by di...@multitask.com.au.
Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 08:38:36 AM:

> >Since this is an ASF repo, isn't the ASF project name enough?
> >
> > 
> >
> I think I would still prefix it with apache, so that other organizations 

> can  follow our pattern with out conflicts.  Also allowing other 
> repositories to host artifacts from multiple orginizations.
Sounds like a good idea.

> There is still some naming details to work out.  An apache project can 
> be a very big thing.
> Take  the CLI project in Jakarta  commons   that would be
> apache-jakarta-commons-cli 
> vs the pacakge name   org.apache.commons.cli

This is where the previous naming convention breaks for me.

<site>/<project>/<version>/<artifact>-<version>.<type>

assumes that the 'project' has a single versioning system. Jakarta as a 
project doesn't. e.g. commons/beanutils has versions very different from 
commons/logging.

*As an example only*, maven treats commons/beanutils and commons/logging 
as two separate projects.
--
dIon Gillard, Multitask Consulting
Blog:      http://blogs.codehaus.org/people/dion/
Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc




Re: URI Syntax was: Repository

Posted by Nick Chalko <ni...@chalko.com>.
dion@multitask.com.au wrote:

>>= Special versions. =
>>Most people agree we should support  Latest (released), and Nightly, 
>>along with the normal released builds
>>    
>>
>
>Maven also has 'SNAPSHOT' which is similar in context to Nightly, but not 
>necessarily built on a nightly basis.
>  
>
+1

>  
>
>>The part  still needs to be decided is the project name.
>>    
>>
>Since this is an ASF repo, isn't the ASF project name enough?
>
>  
>
I think I would still prefix it with apache, so that other organizations 
can  follow our pattern with out conflicts.  Also allowing other 
repositories to host artifacts from multiple orginizations.

There is still some naming details to work out.  An apache project can 
be a very big thing.
Take  the CLI project in Jakarta  commons   that would be
apache-jakarta-commons-cli 
vs the pacakge name   org.apache.commons.cli


R,
Nick
PS gald we are talking about this.  I find naming things to often be the 
hardest and most important part of a design.


>
>  
>


URL Syntax was: URI Syntax

Posted by Nick Chalko <ni...@chalko.com>.
Adam R. B. Jack wrote:

>Folks wrote:
>
>  
>
>>>So here is a key focuossed issue.
>>>What should the URI look like
>>>
>>>The latest URI discussed was
>>>
>>>http://<host>/<project>/<version>/artifact-[<version>].ext
>>>
>>>For example
>>>* http://repo.apache.org/org-apache-ant/1.5.1/ant-1.5.1.jar
>>>      
>>>
>
>Are we discussing URI or URL? If URI, ok good .. but is this current?
>  
>
URL really. 
And it was the latest out of the Wiki


>  
>
>>>The part  still needs to be decided is the project name.
>>>      
>>>
>>Since this is an ASF repo, isn't the ASF project name enough?
>>
>>    
>>
>>>I think the most stable idea proposed is the java package name with -
>>>instead of .
>>>      
>>>
>>I'd prefer to stick with the ASF project name.
>>    
>>
>
>I can agree, it is a lot less 'fat' than package, but does it help the user
>enough? Say the user downloads a new project from CVS into their IDE, gets
>started, and finds that package org.apache.xyz is missing. How do they know
>that xyz is part of apache project jakarta-blah or whatever? Maybe a nice
>reverse map (kinda like Gump gives) would help. I feel that project name
>tends to push strongly towards client side metadata though, [or server side
>queries, I guess.]
>  
>
BTW: Clearly package is Java-centric. Maybe something namespaced? E.g

>java:org.apache.ant or something. I'm just throwing this out, I suspect
>project name is right, I just believe it has issues.
>  
>
Rember package is just a reverse top level domain.  This is a way to 
ensure that a name is globably unique.

More in a seperate email.

>regards
>
>Adam
>  
>


Re: URI Syntax was: Repository

Posted by di...@multitask.com.au.
"Adam R. B. Jack" <aj...@trysybase.com> wrote on 31/10/2003 09:10:44 AM:

> Folks wrote:
> Are we discussing URI or URL? If URI, ok good .. but is this current?
> 
> I thought it was more like (w/ pseudo-regexp notation):
> 
>     http://<host>/<group>/jars/<id>[-<version>][-<type>].ext

'jars' is the <type> of the thing. e.g. jars, tlds, wars, ears, exes, bins 
etc.

> I'm not sure I like all of that (and yes, it is Java centric) but as I
> understand it, it is how the repositories currently look.

>From my angle they're not java centric, it's just that most of the content 
is java executable code. But, for example, ibiblio has a licenses 
directory where jars would be, and distributions, poms etc.

> 1) I could cope w/o 'jars' if that made it less Java centric.
AFAIC, it's the type of the artifact.

> 2) I don't like the redundant /<version>/ -- it leads to the needs for
> symlinks for latest (or similar). I prefer it in the filename. Once 
things
> get copied out of a repository it is good to see what they are, fully
> qualified.
Ditto.

[snip]
--
dIon Gillard, Multitask Consulting
Blog:      http://blogs.codehaus.org/people/dion/
Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc




Re: URI Syntax was: Repository

Posted by "Adam R. B. Jack" <aj...@trysybase.com>.
Folks wrote:

> >
> > So here is a key focuossed issue.
> > What should the URI look like
> >
> > The latest URI discussed was
> >
> > http://<host>/<project>/<version>/artifact-[<version>].ext
> >
> > For example
> > * http://repo.apache.org/org-apache-ant/1.5.1/ant-1.5.1.jar

Are we discussing URI or URL? If URI, ok good .. but is this current?

I thought it was more like (w/ pseudo-regexp notation):

    http://<host>/<group>/jars/<id>[-<version>][-<type>].ext

I'm not sure I like all of that (and yes, it is Java centric) but as I
understand it, it is how the repositories currently look.

1) I could cope w/o 'jars' if that made it less Java centric.
2) I don't like the redundant /<version>/ -- it leads to the needs for
symlinks for latest (or similar). I prefer it in the filename. Once things
get copied out of a repository it is good to see what they are, fully
qualified.

BTW: I see this more as a URL than a URI. If we are attempting a URI -- 
independent from actualy 'location' -- then maybe my comments are out of
place. I could support an URI approach (I guess) but I wonder if then the
URI ought be a higher level entity - -i.e. "the jars for project X" not
named things jars. I think repository has to work at the group level, not
the file level.

> > The part  still needs to be decided is the project name.
> Since this is an ASF repo, isn't the ASF project name enough?
>
> > I think the most stable idea proposed is the java package name with -
> > instead of .
> I'd prefer to stick with the ASF project name.

I can agree, it is a lot less 'fat' than package, but does it help the user
enough? Say the user downloads a new project from CVS into their IDE, gets
started, and finds that package org.apache.xyz is missing. How do they know
that xyz is part of apache project jakarta-blah or whatever? Maybe a nice
reverse map (kinda like Gump gives) would help. I feel that project name
tends to push strongly towards client side metadata though, [or server side
queries, I guess.]

BTW: Clearly package is Java-centric. Maybe something namespaced? E.g
java:org.apache.ant or something. I'm just throwing this out, I suspect
project name is right, I just believe it has issues.

regards

Adam


Re: URI Syntax was: Repository

Posted by di...@multitask.com.au.
Nick Chalko <ni...@chalko.com> wrote on 31/10/2003 05:43:38 AM:

> dion@multitask.com.au wrote:
> 
> >
> >Simple focussed discussion without talking about incubating projects or 

> >adopting projects works for me. Those are separate issues.
> 
> So here is a key focuossed issue.
> What should the URI look like
> 
> The latest URI discussed was 
> 
> 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<OPTIONAL-PREFIX>/org-apache-ant/1.5.1/ant-1.5.1.jar,

e.g. www.apache.org/dist/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
> 
> 
> 
> = Special versions. =
> Most people agree we should support  Latest (released), and Nightly, 
> along with the normal released builds

Maven also has 'SNAPSHOT' which is similar in context to Nightly, but not 
necessarily built on a nightly basis.

> The part  still needs to be decided is the project name.
Since this is an ASF repo, isn't the ASF project name enough?

> I think the most stable idea proposed is the java package name with - 
> instead of .
I'd prefer to stick with the ASF project name.
--
dIon Gillard, Multitask Consulting
Blog:      http://blogs.codehaus.org/people/dion/
Pub Key:http://blogs.codehaus.org/people/dion/public-key.asc