John Casey wrote:
> 2: Ensure that projects can build against a single version of a
>    dependency, rather than multiple.

This bothers me the most.   If my project's pom.xml says I depend on "foo
version 1.1.3", it better be built and installed with "foo version 1.1.3", not "foo version 1.2" or "foo version 1.1.5" of "foo version 2.0". If I
wanted to say "any 1.x version", I would have used a version range in my
pom.

If redhat or rpm or whatever cannot install multiple versions of a
resource,
that seems like a deficiency in those and I don't think maven should go
out
of it's way to work around that.   Maven's dependency management is
definitely one of it's strong point. That type of change bypasses all of
that.


This is a sticking point for me, too, actually. It might be okay to drop the
versions off of a build during the distro-building process, because you've
got other systems managing compatibility of versions in the larger
context...but if a user gets to do that sort of thing, it's going to be a
major support problem for us, and it's counter to a lot of what we're trying
to do with Maven in the first place. In the first case, it's more like an
alternative version-conflict resolution step...in the second, it's hijacking
Maven's notion of artifact identity and build reproducibility.

I think you touch on a key point here. Building in the context of putting together a distribution is very different from an end user downloading and building something for themselves.

A distribution is trying to provide a consistent set of well integrated packages. In this context you want to avoid multiple versions of a package if you can because 99% of users don't care and in fact will be confused if they have to choose between two versions of the same thing. Not to mention security patches become nearly impossible if you need to keep around any old version of a package. There are cases where installing multiple versions makes sense and RPM can do that if you want, but for these reasons most distros try to avoid it and it's not uncommon for them to build against a slightly different version of dependencies than upstream developers use in order to eliminate multiple package versions.

Of course all this is in stark contrast with an end user downloading a source tarball directly and building it himself. In this scenario the user may want to duplicate as closely as possible the build conditions that the upstream developers use themselves and so he would want precisely the same version that upstream is using.

So I see two distinct use cases for building software:

1. Precisely reproducing upstream builds. Maven is already an excellent tool for this.

2. Building software to integrate with a pre-existing environment. This is what fedora or any other distro needs, and right now it's not so easy with maven.

--Rafael


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

Reply via email to