The biggest problem as I see it is not the groupId structures (although it
DOES bother me...) but rather the dependencies metadata which is often
incorrect, or atleast not quite right. Examples are numerous and range from
optional dependencies marked as required, testing dependencies in compile
scope, missing dependencies, etc. Not to mention informative metadata which
is often missing.

The problem is, many times we allow poms in the repo about projects we know
nothing about, or at least not enough. For instance, I could post an upload
request to Carlos for a private project of mine; Carlos has no idea (nor
should he have, of course) about my project, the dependencies it needs, etc.
So if I wrote a crappy pom, that's what goes in the repository.

Now think what happens when it's not a private project, but I was simply the
first person to post the upload request. The (bad) metadata is there for
good, due to backwards compatibility which Carlos guards (and rightfully
so).

I see the solution in two layers:
1. Start over with a fresh repository (optional; we could go to an
incremental solution instead)
2. Start creating a federated repository maintainers network for select
projects/groups. For instance, say I know Hibernate very good and I request
the maven team to make me the repo maintainer for the "org.hibernate"
groupId. Now, if I know Hibernate better than Carlos (no offense - just an
example, I don't really know Hibernate that much), and Hibernate is my main
bread and water, I will probably do a better job at mainaining the metadata.

Note that having the actual project committers maintain their own pom is
always the best solution, of course; so if the Hibernate team wants to do so
- that always was and should stay the preferred solution.

WDYT?

On 5/6/07, Joerg Hohwiller <[EMAIL PROTECTED]> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Hi,
Hello,
>
> I'd like to throw in my 2 cents. The maven repository was (as I recall)
> started back in the Maven 1.x days, when people didn't REALLY do ANY
> dependency management. Since then, the repository grew, Maven1.x grew
and
> grew. A while later, Maven 2.x was released, and AFAIK the Maven
> 2.xrepository is a conversion of m1's repository. One of the biggest
> advantages
> and DRAWBACKS of the m2 repo is that *there is no removal or
> modification of
> existing artifact versions" to preserve backward compatibility. This is
a
> valid argument - but it is also our achiles' heel, due to the amount of
bad
> metadata already there.
>
> Perhaps it is time we put all our knowledge we at the maven community
have
> acquired over time regarding PROPER dependency management and
declaration,
> in order to create a new project CLEAN repository, where all groups are
> really mapped to actually owned domain names (no more "xerces" groupId,
for
> instance) and all metadata is validated and agreed upon.
>
> Start afresh.
>
> I've noticed the "http://repo1.maven.org/maven2-repoclean-java.net/";
> repository, which seems like a nice starting place, though I'm not sure
> what
> it's for, really.
>
> What do you think?
Well generally this sounds like a good plan to create a clean repository.
Anyways I doubt how this finally solves the problem... Can we then just
deprecate the current central repo? I have done big migrations in business
tasks
and from my point of view we have better chances if we take smaller steps
and
live with some legacy.
Anyways a very easy idea for old groupIds could be to serve them as
server-redirects. So "lucene" could automatically redirect to
"org/apache/lucene" so it would be possible to gracefully migrate the
deprecated
groupIds in exsiting projects. The technical challange will just be the
way to
sync such information to all mirrors (might work via .htaccess files but
they
can be a security problem).
A very little but still helpful thing to do, would be to put some "
index.html"
files in the deprecated groupId folders that point out to the problem and
give a link to the new location. A lot of people just dig in the
repository with
their web-browser and sometimes people get lost in some folder like
"springframework" and wonder why there is no up-to-date version.
Additionally some metadata could be made available so that maven dumps a
deprecation warning whenever such obsolete groupId is used in a POM.

Best regards
  Jörg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGPiyRmPuec2Dcv/8RAjb5AJ4uDZZckEQyvWV/AT8gAH/gm1rxNwCgmEnJ
vDMqsJ5z+YpSXaIDIRTkQDU=
=uz/V
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to