aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Hughes <>
Subject Re: Release by module - changes to trunk
Date Wed, 02 Feb 2011 10:10:23 GMT
On 1 February 2011 17:03, Guillaume Nodet <> wrote:
> As I said in my previous mail, one possibility would be to split the
> release cycle and artifact versioning scheme from the osgi package
> versioning scheme.
> Which we already do to some degree when we release blueprint-bundle
> which contain the blueprint-api in version 1.0 and the implementation
> in version 0.3.

I agree, for semantic versioning reasons we should only change the
version packages are exported at when the package contains changes.
The bundle version will change whenever one of the packages it exports
has changed its version (major - breaking api change, minor - breaking
api for implentors, or micro - fix as was done with blueprint apis) or
the bundle includes a fix when the bundle micro number will increment.

> Honestly, given the hassle of releasing things, I think a single trunk
> + single release cycle is the easiest way to go.   I think if we have
> a simple release process, we could release things more often and maybe
> maintain branches.   I don't really see any problem in having
> blueprint-cm-0.4.0 being the same as blueprint-cm-0.4.1.  But if it
> takes 2 days to one person to do a release, less people will volunteer
> to do those, which is imho worse, as we won't deliver fixes to our
> users.

The time between starting to prepare a release and starting the vote
thread shouldn't take two days particularly if it's just one module
(or even bundle if that's possible) - especially if we do it often and
therefore get a lot of practice. (IMHO)

> On Tue, Feb 1, 2011 at 16:22, Jeremy Hughes <> wrote:
>> On 1 February 2011 14:54, Guillaume Nodet <> wrote:
>>> This is very different from what we have I think, as gogo's root pom
>>> isn't used at all.
>>> Releasing gogo involves releasing each of the maven subproject
>>> independantly afaik.
>>> The main difference is that all felix releases consists of a *single*
>>> bundle.  If we go this way, that would mean that releasing blueprint
>>> only would require 13 releases.  Some of those just contain tests, so
>>> that does not make sense to me.  From an usability point of view, I
>>> would definitely not go that way.  I'd personaly rather go in the
>>> opposite direction and use a single reactor / release for all
>>> components.
>>> Another consideration is that I think we should tie the release cycle
>>> with the svn layout, i.e. if we want to keep each component with a
>>> separate lifecycle, we should have multiple trunks.   That's way
>>> cleaner imho (and much more git friendly btw).
>> Lets discuss the multiple trunks idea a bit ... are you suggesting
>> something like:
>> aries/application/branches
>> aries/application/tags
>> aries/application/trunk
>> aries/blueprint/branches
>> aries/blueprint/tags
>> aries/blueprint/trunk
>> etc
>> We'd still be left with the multiproject issue - release blueprint
>> 0.3.1 for a single fix and all the blueprint bundles are released
>> whether they contain fixes or not. If each child of
>> aries/blueprint/trunk was only a single bundle (they are today, but
>> other top level modules like application would need some changes to
>> fit with this) ... then we could release each of them independently.
>> But ... every time we release a bundle in blueprint we need to release
>> the 'uber' bundle - built from blueprint/blueprint-bundle. So, for
>> example, we would get to a situation where we release a fix to
>> blueprint-core @ 0.3.1 (and hence uber blueprint 0.3.1). Then
>> blueprint-cm needs a fix release - it's next micro number would be
>> 0.3.1 (we'd have to release uber blueprint @ 0.3.2).
>> If blueprint-api then needs to release some additions to an interface,
>> then according to semantic versioning rules, it has broken
>> implementors of the interface, so its minor number goes up (to 0.4)
>> and of course blueprint-core implementing that would need to go up to
>> 0.4, and the uber blueprint bundle would go up to 0.4 too - but other
>> blueprint bundles wouldn't get released and hence stay at 0.3.
>> This is a fairly complex process that we'd need to be careful to get right.
>>> On Tue, Feb 1, 2011 at 15:25, zoe slattery <> wrote:
>>>> Hi Felix
>>>> I had a look at felix to see if I could work out how you do the independent
>>>> releases. I didn't look through absolutely everything but
>>>> I only found two modules that had sub-modules (gogo and http). Of those two
>>>> it looks as though the pom structure in gogo might be similar
>>>> to what we need in Aries. Is this a model you would recommend? Or is there
>>>> something closer?
>>>> Zoe
>>>>> Hi,
>>>>> Am Montag, den 31.01.2011, 15:22 +0100 schrieb Guillaume Nodet:
>>>>>> Wouldn't that imply that each bundle has its own lifecycle ?
>>>>>> I think a while ago we agreed on having one release per "component",
>>>>>> i.e. blueprint (which includes api + core + cm + ...).
>>>>>> I'm not sure how well this would go if we have blueprint-core
>>>>>> 0.4.0-SNAPSHOT depending on blueprint-api-0.3.0.
>>>>> I bet you won't release blueprint-api as version 0.4.0 if it is the same
>>>>> as 0.3.0, right ?
>>>>> Regards
>>>>> Felix
>>>>>> > From a users point of view, it certainly does not help because
all the
>>>>>> maven transitive dependencies are kinda screwed.
>>>>>> On Mon, Jan 31, 2011 at 15:11, Felix Meschberger<>
>>>>>>  wrote:
>>>>>>> Hi,
>>>>>>> Am Montag, den 31.01.2011, 13:59 +0000 schrieb Jeremy Hughes:
>>>>>>>>>> (c) Where an Aries module depends on other Aries
modules, it will
>>>>>>>>>> depend
>>>>>>>>>> on the released versions of the other modules _until_
it requires a
>>>>>>>>>> change in the module that it depends on, at which
stage it will
>>>>>>>>>> switch
>>>>>>>>>> to a dependency on the development version.
>>>>>>>>>> So for example, Blueprint 0.4-SNAPSHOT will depend
on quiesce 0.3,
>>>>>>>>>> proxy
>>>>>>>>>> 0.3, testsupport 0.3 and  parent 0.3. If blueprint
0.4-SNAPSHOT needs
>>>>>>>>>> to
>>>>>>>>>> pick up a change in proxy the blueprint top level
pom will need to be
>>>>>>>>>> modified to point to proxy 0.4-SNAPSHOT.
>>>>>>>>> I would assume this means "depends on modified API" and
does not mean
>>>>>>>>> "depends on some bug fixed in the implementation", right
>>>>>>>> If you're referring to the semantic meaning attached to moving
>>>>>>>> 0.3 to 0.4 then I think that would be taking this discussion
in a
>>>>>>>> different direction. But that is a good point. Before getting
into a
>>>>>>>> semantic versioning discussion, I think the intent of this
was to so
>>>>>>>> if there are broken tests in 0.4-SNAPSHOT of a module which
are fixed
>>>>>>>> by pulling in 0.4-SNAPSHOT of its dependency then its dependency
>>>>>>>> should be updated.
>>>>>>> No, this is not about semantic versioning (yet).
>>>>>>> This is about the following: Consider bundle X depends on the
>>>>>>> org.apache.aries.y.api of bundle Y. Now some implementation of
this API
>>>>>>> in package org.apache.aries.y.impl of bundle Y has a bug which
must be
>>>>>>> fixed. In this case the dependency of bundle X on Y should not
>>>>>>> changed.
>>>>>>> Regards
>>>>>>> Felix
>>>>>>>>> Regards
>>>>>>>>> Felix
>>>>>>>>>> This will lead us towards being able to release by
module but it
>>>>>>>>>> implies
>>>>>>>>>> a change in development practice. I will make the
pom changes locally
>>>>>>>>>> and test them but I'd like to check that release-by-module
is still
>>>>>>>>>> the
>>>>>>>>>> goal and that you all think this is a reasonable
way to be able to
>>>>>>>>>> achieve it.
>>>>>>>>>> Zoë
>>> --
>>> Cheers,
>>> Guillaume Nodet
>>> ------------------------
>>> Blog:
>>> ------------------------
>>> Open Source SOA
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog:
> ------------------------
> Open Source SOA

View raw message