Added a comment to explain splitting will have more impacts and BOM does
not even solve it inline.

But stepping back the only issue compress has today is [io] and a bit
[codec].
Most of the needed dependencies can be restore in [compress] - keep in mind
before the dependency code was hosted in [compress] and everyone was happy.
It will also avoid a design pitfall [compress] got since, it integrates
with some 3rd parties but not genericly so it would be saner to define a
real API for these integration (unwrapping etc) rather than integrating
with some other commons and forgetting about all other wrappers we'll
encounter.

So my plan would be for:

1. revert to drop the optional and additional dependencies (or keep it
really optional for the (de)compresser algorithm really needing it but
typically tar/tar.gz/zip shouldn't need any 3rd party for ex)
2. check how to integrate with custom io (including [io]) types properly
3. use java-templating plugin or a properties to explicitly list the
dependency to add when a dependency is missing and required for advanced
algo (7z, pack200 out of my head).


Le jeu. 29 févr. 2024 à 13:29, sebb <seb...@gmail.com> a écrit :

> On Thu, 29 Feb 2024 at 09:53, Piotr P. Karwasz <piotr.karw...@gmail.com>
> wrote:
> >
> > Hi sebb,
> >
> > On Thu, 29 Feb 2024 at 10:25, sebb <seb...@gmail.com> wrote:
> > > > but dependency management can be used to
> > > > prevent version mismatches.
> > >
> > > What dependency management is that? Does Maven manage this?
> > > Seems like users would be forced to use extra controls to ensure only
> > > comaptible combinations of artifacts were used.
> >
> > Maven users would be forced to add a new `commons-compress-bom`
> > artifact (in my PR) to their dependency management. As far as I know
> > other build systems (Gradle, Coursier, probably Apache Ivy) resolve
> > version conflicts with a "highest version wins strategy", so the
> > change will be a no-op for them.
>
> Are you sure about that?
> What if a component specifies a version range?
>

It is a bit worse, the transitivity will be broken since often [io] or
[codec] are used for other needs and [compress] requires some version.
BOM are just working in a single case: when you have a single BOM in the
full project or they don't overlap...almost no way it works for commons.


>
> > Yes, this change might require a developer to supervise the upgrade,
> > so it might require a major version bump to drive their attention.
> > However personally I find it less problematic than having half the
> > dependency stack using `o.a.c.compress` and half of it using
> > `o.a.c.compress2`.
>
> Agreed that might be harder to change automatically.
> But my solution in this case would be a complete package/Maven coord break.
>
> A one-off global edit, but no worries about missing dependency
> restrictions.
>
> > The necessity to align the versions of a multi-module project is
> > something many users are aware of (and the others use Spring Boot
> > dependency management ;-) ).
>
> Or they expect Maven to take care of version management for them.
>
> > Piotr
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > For additional commands, e-mail: dev-h...@commons.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to