karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré ...@nanthrax.net>
Subject Re: [DISCUSS] Semantic versioning
Date Sat, 24 May 2014 11:39:19 GMT
Hi Guillaume,

I'm a bit "split" here. On one hand, it sounds like a good idea, on the 
other, it may a bit "disturbing" for the minor release.

Let me think about that "deeper".


On 05/22/2014 04:01 PM, Guillaume Nodet wrote:
> A recent contribution to the felix maven-bundle-plugin is that baseline
> goal which checks and/or reports semantic versioning changes.
> It basically does a binary diff with the latest release of the same
> artifact for changes and verify that the changes are compatible with the
> semantic versioning rules.
> I think we should try to leverage those, but without changing our release
> lifecycle.  This could be done the following way:
>    * keep our artifacts versioning and release mechanism untouched
>    * add the baseline plugin
>    * in 4.0, exported packages would all have a version of 4.0.0
>    * follow semantic versioning for all releases > 4.0
> This would mean that karaf 4.1 would have packages in version 4.0, 4.0.1 or
> 4.1.  Note that the version used for karaf (and for bundles) isn't tied in
> any way to the version of the packages.
> But this would also help making sure we stay compatible, and whenever we do
> a new release (be it 4.1 or 5.0), help users with migration because the
> package versions would not be changed unless needed.
> Downsides:
>    * users may be impacted in the future with the fact that not all packages
> have the same version, but this should usually be minor, as tools usually
> grab the version of the packages from the binary when writing an import
> package.  However, for those which do not leverage those features, this
> will have an impact
>    * bug fix releases may be more tricky : the main problem is that with
> semantic versioning, once a package is released with a minor upgrade,
> there's no room left
> The last point needs an explanation.  Let's say we have a package in
> version 4.0.0 in karaf 4.  We later release karaf 4.1 with a very minor
> addition to that package, so that this package is now in version 4.0.1.  If
> we later find  a bug which require a fix, we won't be able to release a
> karaf 4.0.1 with a micro change in that package, so we'd have to at least
> backport the interface change from 4.1 in 4.0.1 (even if we don't backport
> the implementation) and then do the fix with a 4.0.2 package version.
> Not sure this is very clear, but the last point has always been my worry
> about semantic versioning.
> Thoughts ?
> Guillaume

Jean-Baptiste Onofré
Talend - http://www.talend.com

View raw message