>
> > Just one question: Why?
> >
> > The implementation jars for compress would be tiny and would have close
> to
> > none dependencies.
> >
>
> As an end user, I'd prefer to only have to manage a single maven coordinate
> (e.g., commons-vfs-ssh) instead of multiple ones depending on my use case
> (i.e., optional dependencies). It makes it easier to figure out which
> solutions are actually supported at a glance without having to dig through
> documentation as well.
>
> Also, I feel like one of Commons' goals is to avoid jar hell, and providing
> a monolith with several optional dependencies smells like jar hell to me.
>

That smell must be something else ;)
Just have a look at the dependencies

  https://github.com/apache/commons-compress/blob/master/pom.xml#L69

commons vfs and compress are very different beasts.

I think the idea is to strike a balance between over-modularization
(which is actually quite common in the maven universe) and monoliths.
Both extremes are not great.

That said - optional dependencies are also not really my favorite thing.
I am myself a big fan of shading dependencies in libraries (if the license
allows),
which also forces one to re-evaluate the modularity vs inclusiveness of
(even transitive) dependencies.

Having all those separate jars with maybe 5 classes without dependencies
does not make that much sense to me.
Neither from a dependency nor from bytes-on-disk POV.

Reply via email to