[jbosscache-dev] Let's make 3.0 backwards compatible

Manik Surtani manik at jboss.org
Wed Aug 20 12:03:17 EDT 2008


On 20 Aug 2008, at 16:40, Jason T. Greene wrote:

> Manik Surtani wrote:
>> On 19 Aug 2008, at 20:33, Jason T. Greene wrote:
>>> Brian Stansberry wrote:
>>>> Manik Surtani wrote:
>>>>>> This is one of the main things I want to talk about when we  
>>>>>> have our AS meeting in Neuchatel the week before the Brno  
>>>>>> meeting. The AS needs a general solution to this problem.
>>>>>
>>>>> Jarjar.  :-)  I really think it would work.  It would make  
>>>>> upgrading individual jars hard and may bloat the overall  
>>>>> download size a bit, bit it nicely isolates things such that  
>>>>> different subsystems may be tied to different versions of  
>>>>> dependent libraries.  Actually, upgrading needn't be that hard -  
>>>>> e.g., all clustering code could be encapsulated in a single  
>>>>> jboss-as-clustering-5.0.jar which includes jarjar'd versions of  
>>>>> JBC, JGroups, other deps, as well as AS Clustering classes.   
>>>>> Upgrading could involve a new jboss-as-clustering-5.1.jar which  
>>>>> may include a new release of JBC, etc., without affecting other  
>>>>> JBC users, whether they be end user apps or other subsystems.
>>>>>
>>>> We'll discuss this in Neuchatel.  This kind of thing requires buy- 
>>>> in from several projects, e.g. the hibernate integration is part  
>>>> of Hibernate; the SFSB integration is part of EJB3. Both of which  
>>>> are meant to work outside the AS (Hibernate for sure; EJB3 in as- 
>>>> yet-unrealized theory.)
>>>
>>> In the meantime, I think what we can do to solve the 4.2 issue, is  
>>> to provide the community with an ant task that would use jarjar to  
>>> create a fully isolated jar for jboss cache and all of its  
>>> dependencies.
>> I think the best approach would be a jbosscache-core-compat module  
>> (on the same level as jbosscache-core) which consists of a Maven  
>> POM which depends on jbosscache-core, which just handles the  
>> package relocation and spits out jbosscache-core-compat.
>> Then another pair of modules - jbosscache-core-compat-1.x and  
>> jbosscache-core-compat-2.x - which depend on jbosscache-core-compat  
>> and provide interface bridges to 1.x or 2.x interfaces would do the  
>> trick.
>
> Doing a bridge would mean that the existing jboss cache would have  
> to be removed, which may or may not work with the AS clustering  
> code. It would also have to use a package modified version of  
> jgroups, since other modules depend on the version that is there.
>
> However, just giving them the ability to rename everything to some  
> safe package name would not interfere with anything. It's also less  
> work ;) It does require them to use a different package than the API  
> we publish though.

Ah, you mean using jarjar to create a specific version for *their*  
application.

Yeah, using a different package than the shipped API would make things  
tricky to move forward for them.  But yes, I agree it is a valid  
approach.  Perhaps for the AS 4.x thing like you said.

Then it is just a case of making the 3.x APIs 2.x compatible from the  
outset.  Then no need for bridges.  Need to think about this though.

Cheers,
--
Manik Surtani
Lead, JBoss Cache
manik at jboss.org







More information about the jbosscache-dev mailing list