Steve Loughran wrote:
When using M2 I ended with a private repo with custom metadata to
strip out things that weren't needed. I will inevitably do the same
with Ivy. I may not cache artifacts, but I will certainly tune the
dependency information, because someone's belief on what the
dependencies are may not match mine. Go import hibernate if you want
an example of what I had to deal with. They discard one team's
metadata, then add their own. This is what it is like out there.
http://www.ibiblio.org/maven2/org/hibernate/hibernate/3.1rc2/hibernate-3.1rc2.pom
Of course, if we have standard confs with standard semantics (e.g
master==artifact with no dependencies) then
I dont need to exclude things, just add others,
I agree
Just like bugs, you may perfectly end up in a situation where you
need to patch (or workaround) your opensource/commercial component
(even though the patch is submitted and applied) and run with it
until the next release and/or use a custom snapshot. It does not have
to be the norm (and I'm the very first one to fight against such
practice which consist of patching everything just because it's
opensource and you can do it) but this type of thing _will_ happen.
mmm. Open source is the right to edit the code. It is not a duty.
mmm...was not probably very clear but you have 2 things there:
1) when you _have to_ (ie: your corporate duty) release something on a
fixed date and you have an annoying bug in a third party that gets in
your way and which code prevent you to subclass, etc... then you may end
up in 'patching' this third party code (and of course you may definitely
want to report that as a bug and submit the patch...in your own interest)
2) Some have a tendency to follow a very much
'patch-everything-because-I-can' as there is the code so whatever the
criticality of the 'annoyance', a javadoc and extensions, etc..you will
end up with a whole set of 'patched' dependencies, which will then
increase very much your maintenance problem. It's usually when there is
confusion between what the company objective and the fun side of messing
around everything and feeling that it would be cool to patch linux to
add that and httpd this and tomcat that, and axis this and postgresql
that.. (which I agree can give you some super cool feeling but is not
exactly helping to release your product)
It's all trade off and weighting benefits/costs/annoyances, which of
course is not easy.
-- stephane