On Wed, Apr 2, 2008 at 11:40 AM, Xavier Hanin <[EMAIL PROTECTED]>
wrote:

> >   2. What happens in ivy when two different repositories in your
> >   settings publish the same organization, name, and version of a module?
>
> It depends on your settings, but most probably the first one will be used
> and the second one ignored. The couple organization#module MUST identify a
> module uniquely. A module's revision is identified by organization#module
> +
> revision + extra attributes if any. But for a public repository I wouldn't
> use extra attributes, so sticking with pure organization#module;revision
> as
> identifier should be a good choice.
>

OK, so organization+module MUST be unique... but how do you expect to
enforce your "MUST"?? Are you in control of all the Ivy repositories of the
world? Or, is everyone expected to create their own private repository and
never share?

I think the "organization" attribute has to refer to the ivy module
packager, not the originator of the code. Otherwise, the system seems
totally broken to me.

The only way you can expect organization+module to be unique is to require
either:

   1. Only the Foo organization can ever publish an ivy module with
   organization="foo"; OR
   2. There is some global authority designating who is the one true
   authorized group that is allowed to put organization="foo" in their ivy.xml
   files

And option #2 is not an option unless you want to get into the business of
ivy dictatorship.

Examples: #1 is approach taken by Java package naming; #2 is approach taken
by DNS domain system.

Let's take an example, e.g. Hibernate. If someone (other than the Hibernate
developers) creates an ivy module with organization="hibernate.org"
name="hibernate" then a priori this module is going to be incompatible with
the same thing created by someone else.

Since there's no one true Ivy repository (RIP ivyrep) this is bound to
happen: all the ivy repositories out there are going to be incompatible. And
there's no clear way for me to specify that "I'd like the Hibernate module
from repository A, but I'd like the Spring module from repository B".

I'd suggest Ivy should encourage a decentralized model that is more
compatible with the reality of the Internet. To me this seems like a pretty
fundamental issue that needs to be examined for Ivy to succeed.

-Archie

-- 
Archie L. Cobbs

Reply via email to