Hi Maxim,

IMHO, each dependency must be justified by a significant gain in terms of
coding and algorithm.
It is to compare to:
1. the cost to check the dep against last one (mitigate the later upgrade)
2. the cost to scan and test the dep against vulnerability (secure
software/lib)
3. the cost to integrate the stack in all supported environments (flat
classpath, standalone, webapps, OSGi at least for us - and here any dep can
break an integration, in particular OSGi part which is not that greatly
tested yet)
4. the bytes cost (not everybody care but I do care to have 10M to have an
entity manager when 4 or even less are enough, don't forget it ends in
docker layers or archives and this means network transfer costs + scanning
time in some env at the end). To give you an idea, if you take geronimo
microprofile stack (a subpart but the same in the comparison to be fair)
you will end up around 25M whereas the same done at smallrye in a "open bar
dependency" mode ends up at around 65M. I'd like us to be clean to enable
users to have clean stacks and not hesitate to import us. JPA by itself
requires already several code so better to not add a ton for nothing
([collections4] is around 750k, with the import we get ~200k so we gain
1/2M with less conflicts, and work/management to do).
5. the conflict resolution (with some other libs developed like us, you
must resolve the version manually to enforce one compatible with both in
flat classpath env - ie not OSGi).
6. the cost to do it ourselves, here java 8 (guess 6)
superseded [collections4] in our usage for a lot and the remaning parts are
very thin so bringing [collections] is only a drawback today IMHO

Add to that our codebase is pretty stable and I dont see us using
collections4 anymore in the future, it means it is safe to cut it today
IMHO.

Current import can look a lot but compared to collections4 it is not and if
you drop most of the abstraction without any real logic (abstractX,
decorators, interfaces, emptyX) it is almost nothing so IMO we gain way
more dropping it than keeping it hanging at the risk to keep depending on
it.

Hope it makes sense.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mer. 16 sept. 2020 à 12:59, Maxim Solodovnik <solomax...@gmail.com> a
écrit :

> Hello Romain,
>
> why is it so important not to have dependencies?
>
> On Wed, 16 Sep 2020 at 17:20, Romain Manni-Bucau <rmannibu...@gmail.com>
> wrote:
>
> > HI everyone,
> >
> > we talked of it a lot but i only took some time to work on it this
> morning:
> > https://issues.apache.org/jira/browse/OPENJPA-2831
> >
> > Dropped commons-collections4 from our stack (for now just copying the few
> > classes we use but it enables more easily drop code and abstractions we
> > don't use).
> >
> > I suspect the next dependencies we can drop are serp and commons-logging,
> > then we would be "pure" (ie only depend on jpa spec and asm - not sure
> this
> > one can be dropped). Serp is "frozen" and should be replaced by direct
> asm
> > code but it requires some investment. Commons logging is easier to drop
> but
> > is a breaking change (in terms of config) we can desire to avoid so maybe
> > for next round ;).
> >
> > Hope it makes sense.
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <
> > https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > >
> >
>
>
> --
> Best regards,
> Maxim
>

Reply via email to