I don't yet have an opinion on this dependency that depends on everything, but
I've created these two JIRAs which most of us seem to agree on:
* Remove unnecessary provided dependencies which make depending on Infinispan harder. [1]
* Uber jars should not be pushed to Maven. Instead they should be treated just like other
zip distros that are not pushed. [2]
I think we should fix [1] in 9.0.x and [2] can wait to 9.1.x.
Cheers,
[1]
On 11 Jun 2017, at 20:35, Sanne Grinovero
<sanne(a)infinispan.org> wrote:
On 9 June 2017 at 16:13, Alan Field <afield(a)redhat.com> wrote:
> I really like this idea. It is similar to one of the solutions hinted at in the Netty
issue that Gustavo pointed at. [1] The suggestion there was to replace their current uber
jar that contains all of the shaded dependencies with a JAR that just depended on
everything. Then you would get the benefit of being able to use a single Maven dependency
to pull in all of the JAR files without the issues that shading brings.
The proposal is to bundle APIs only, but we'll always have tons of
optional (and provided) extension points, e.g. we can't include all
CacheStore(s), not least as many live in separate repositories.
Similarly, many "experimental modules" might provide additional APIs
which will need to be accessed like the current Query API: *decoupled*
- at least until there's an agreement for inclusion in such an
umbrella API.
This is unavoidable as someone might start working on such a module
without telling us.. incidentally to foster a community of extensions
I'd rather have our own API showcase how it works.
Also some Java EE APIs - e.g. the JTA API - should never be included;
that's "best practice" in community standards - ugly and we could
complain that Maven could deal better with it, containers could also
deal better with it, but that's how it is.
So it's an improvement in the API but it's not sorting out the
problems for people not familiar with dependency management. And I
believe that's ok! Just making sure we're agreeing on the goals and
non-goals.
Considering it's a very minor improvement in usability I'm not sold
about this direction: you'll have ONE MORE JAR and one more layer of
silly indirection to maintain. You might state it's trivial but I
don't believe that, as the definition of which components to include
is necessarily going to be fuild, makign this "API" more prone to wild
changes.
The one liner to get a reference to the SearchFactory is no big deal
and could be solved better by having CDI and Spring extensions - while
maintaining good decoupling - but if it's the path to convince you all
to take out the uber jars then by all means do it right now ;)
Thanks,
Sanne
>
> Thanks,
> Alan
>
> [1]
https://github.com/netty/netty/issues/4671
>
> ----- Original Message -----
>> From: "Radim Vansa" <rvansa(a)redhat.com>
>> To: infinispan-dev(a)lists.jboss.org
>> Sent: Friday, June 9, 2017 3:29:44 AM
>> Subject: Re: [infinispan-dev] Why JCache embedded has core as provided
dependency
>>
>> Katia has recently pointed out some usability flaws, and we have
>> discussed a central point class that would allow you to explore the API:
>> instead of *knowing* about org.infinispan.query.Search or
>> org.infinispan.counters. EmbeddedCounterManagerFactory you'd just call
>>
>> Infinispan ispn = Infinispan.newInstance();
>> ispn.search().someQueryMethod(...);
>> ispn.counters().someCounterMethod(...);
>> ispn.cacheManager().getCache(...);
>>
>> An umbrella module that would contain this 'discovery API' would need
>> all the dependencies, so that would be a perfect replacement for the
>> embedded maven artifact. Shouldn't be that much of a work to hack this
>> together - how do you think that should be called? infinispan-api (but
>> it would be nicer to reserve this if we ever manage to create the
>> 'public API' module, with interfaces only), infinispan-facade,
>> infinispan-surface? We could even use infinispan-embedded, but that
>> would cause some confusion if we distributed infinispan-embedded uberjar
>> and infinispan-embedded umbrella artifact.
>>
>> Radim
>>
>> On 06/08/2017 08:04 PM, Alan Field wrote:
>>> Wasn't the ability to add a single dependency to a project to start
using
>>> Infinispan the whole purpose for the uber jars? I'm not trying to make
an
>>> argument for keeping them, because I know they have caused many issues. I
>>> just think that if we are going to remove them from Maven, then there
>>> should be a way to achieve the same easy developer on boarding that uber
>>> jars were supposed to provide. Whether this is Maven project templates, or
>>> something else doesn't matter.
>>>
>>> Thanks,
>>> Alan
>>>
>>> ----- Original Message -----
>>>> From: "Tristan Tarrant" <ttarrant(a)redhat.com>
>>>> To: infinispan-dev(a)lists.jboss.org
>>>> Sent: Thursday, June 8, 2017 4:05:08 AM
>>>> Subject: Re: [infinispan-dev] Why JCache embedded has core as provided
>>>> dependency
>>>>
>>>> I think we should turn off maven deployment for uber jars.
>>>>
>>>> Tristan
>>>>
>>>> On 6/7/17 5:10 PM, Gustavo Fernandes wrote:
>>>>> On Wed, Jun 7, 2017 at 11:02 AM, Galder Zamarreño
<galder(a)redhat.com
>>>>> <mailto:galder@redhat.com>> wrote:
>>>>>
>>>>> As far as I see it:
>>>>>
>>>>> * infinispan-embedded should never be a dependency in a Maven
>>>>> project.
>>>>>
>>>>> * No uber jars should really be used as Maven dependencies
because
>>>>> all the exclusion that fine grained dependencies allow you to do
>>>>> goes out of the window when all classes are inside a jar. This
is
>>>>> not just theory, I've personally had such issues.
>>>>>
>>>>> * Uber jars are designed for Ant or other build tool users that
>>>>> don't have a dependency resolution engine in place.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> p.s. I thought we had already discussed this before?
>>>>>
>>>>>
>>>>>
>>>>> I totally agree. In addition, uberjars should not be an osgi bundle
or a
>>>>> jboss module, for similar reasons.
>>>>>
>>>>> P.S: Even Ant has a dependency mgmt available, which is Ivy.
>>>>>
>>>>> Cheers,
>>>>> Gustavo
>>>>>
>>>>> --
>>>>> Galder Zamarreño
>>>>> Infinispan, Red Hat
>>>>>
>>>>>> On 7 Jun 2017, at 11:50, Sebastian Laskawiec
<slaskawi(a)redhat.com
>>>>> <mailto:slaskawi@redhat.com>> wrote:
>>>>>>
>>>>>> Hey,
>>>>>>
>>>>>> The change was introduced by this commit [1] and relates to this
>>>>> JIRAs [2][3]. The root cause is in [3].
>>>>>>
>>>>>> Imagine a scenario where you add JCache module to your together
>>>>> infinispan-embedded. If your classpath was constructed in such a
way
>>>>> that infinispan-embedded was before infinispan-core (classpath
is
>>>>> scanned from left to right in standalone apps), we could get a
>>>>> relocated (uber jars move some classes into other packages)
logger.
>>>>> That caused class mismatch errors. It is worth to mention that
it
>>>>> will happen to all relocated classes, logger was just an
example.
>>>>> And we need to relocate them, since a user might want to use his
>>>>> own, newer version of DMR or any other library. So there's
no
>>>>> perfect solution here.
>>>>>>
>>>>>> Now a lot of time passed since then and we changed quite a few
>>>>> things. So this topic probably needs to be revisited.
>>>>>>
>>>>>> So the first question that we should ask, shall we allow putting
>>>>> jcache and infinispan-embedded together on the classpath. If the
>>>>> answer is yes, I believe it should stay as it is (since the user
>>>>> always have a choice whether he wants to use jcache with or
without
>>>>> uber jar). The same question needs to be asked for Spring modules
as
>>>>> well as all cache stores. The behavior needs to be consistent
across
>>>>> all those modules.
>>>>>>
>>>>>> If the answer is no (which is also valid because jcache is
>>>>> already present in embedded uber jar), we should migrate all
JBoss
>>>>> Logging references to Infinispan Common Logging (as Tristan did
here
>>>>> [4]) and we can make infinispan-core as a compile time dependency
to
>>>>> jcache. Even though migrating to Infinispan logger is not
necessary,
>>>>> this way we won't break users app which used
infinispan-embedded +
>>>>> jcache approach. Of course the same applies to Spring and Cache
>>>>> stores modules.
>>>>>>
>>>>>> I think the latter approach deserves some exploration. I would
>>>>> vote for moving that way.
>>>>>>
>>>>>> Thanks,
>>>>>> Sebastian
>>>>>>
>>>>>> [1]
>>>>>
https://github.com/infinispan/infinispan/commit/720f158cce38d86b292e1ce77...
>>>>>
<
https://github.com/infinispan/infinispan/commit/720f158cce38d86b292e1ce77...
>>>>>> [2]
https://issues.jboss.org/browse/ISPN-6295
>>>>> <
https://issues.jboss.org/browse/ISPN-6295>
>>>>>> [3]
https://issues.jboss.org/browse/ISPN-6132
>>>>> <
https://issues.jboss.org/browse/ISPN-6132>
>>>>>> [4]
https://github.com/infinispan/infinispan/pull/4140/files
>>>>> <
https://github.com/infinispan/infinispan/pull/4140/files>
>>>>>>
>>>>>>
>>>>>> On Wed, Jun 7, 2017 at 11:19 AM Galder Zamarreño
>>>>> <galder(a)redhat.com <mailto:galder@redhat.com>>
wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Re:
>>>>>
https://github.com/spring-projects/spring-boot/pull/9417#discussion_r1203...
>>>>>
<
https://github.com/spring-projects/spring-boot/pull/9417#discussion_r1203...
>>>>>>
>>>>>> Stéphane makes a good point there, why did we make core provided
>>>>> dependency? It does feel a bit of a pain that anyone that depends
on
>>>>> jcache embedded also needs to depend on core.
>>>>>>
>>>>>> Any more details behind this decision?
>>>>>>
>>>>>> Cheers,
>>>>>> --
>>>>>> Galder Zamarreño
>>>>>> Infinispan, Red Hat
>>>>>>
>>>>>> --
>>>>>> SEBASTIAN ŁASKAWIEC
>>>>>> INFINISPAN DEVELOPER
>>>>>> Red Hat EMEA
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> infinispan-dev mailing list
>>>>> infinispan-dev(a)lists.jboss.org
>>>>> <mailto:infinispan-dev@lists.jboss.org>
>>>>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> <
https://lists.jboss.org/mailman/listinfo/infinispan-dev>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> infinispan-dev mailing list
>>>>> infinispan-dev(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>>
>>>> --
>>>> Tristan Tarrant
>>>> Infinispan Lead
>>>> JBoss, a division of Red Hat
>>>> _______________________________________________
>>>> infinispan-dev mailing list
>>>> infinispan-dev(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>>
>> --
>> Radim Vansa <rvansa(a)redhat.com>
>> JBoss Performance Team
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev