Return-Path: X-Original-To: apmail-karaf-dev-archive@minotaur.apache.org Delivered-To: apmail-karaf-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E862F113ED for ; Fri, 23 May 2014 12:09:31 +0000 (UTC) Received: (qmail 15866 invoked by uid 500); 23 May 2014 12:09:31 -0000 Delivered-To: apmail-karaf-dev-archive@karaf.apache.org Received: (qmail 15824 invoked by uid 500); 23 May 2014 12:09:31 -0000 Mailing-List: contact dev-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@karaf.apache.org Delivered-To: mailing list dev@karaf.apache.org Received: (qmail 15816 invoked by uid 99); 23 May 2014 12:09:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 May 2014 12:09:31 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of jamie.goodyear@gmail.com designates 209.85.216.171 as permitted sender) Received: from [209.85.216.171] (HELO mail-qc0-f171.google.com) (209.85.216.171) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 May 2014 12:09:24 +0000 Received: by mail-qc0-f171.google.com with SMTP id x13so8066034qcv.30 for ; Fri, 23 May 2014 05:09:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=UhMO+XAGoHbsHGVjaZcs/0pAI0LUIH6JnS6VG1tkvsM=; b=ndObkSsWLkkv5bkvyJzxczgdVhsgV23JdPRL/tcGQ3KVarTIKBGhd8caDZ7+SdOlOP IgxhSxoosRBQY39Sy3W+eVSy5bSd/ugkUlwLwwHFDnwUv1AxGY/MvrlGpsUW/vAGwQ1l gkAD5XSy/0BpVvPkmeisa7I2OTAv48gJgge/tlYyTHf2UzdKnsTZp/Aa+ebOTfrNzGQ3 R93G/LTtvBaK1w+XqGmjw5EF304fFi9HwAtzbdds/J/FObbnJjbvYUIYYlkHfnSXRa0+ zDYoOWHWl7UQjPW3bLk74fqEnrsJ0Pu2MbUy3TOHrD+mwZO/X4uyCy+NAPH/ANHsDxng deQA== MIME-Version: 1.0 X-Received: by 10.140.105.119 with SMTP id b110mr5759280qgf.28.1400846943860; Fri, 23 May 2014 05:09:03 -0700 (PDT) Received: by 10.96.33.194 with HTTP; Fri, 23 May 2014 05:09:03 -0700 (PDT) In-Reply-To: References: Date: Fri, 23 May 2014 09:39:03 -0230 Message-ID: Subject: Re: [DISCUSS] Semantic versioning From: "Jamie G." To: "dev@karaf.apache.org" Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked by ClamAV on apache.org I believe that last point needs to be a little clearer too ;) Forgive my attempt at ascii table: | Karaf 4.0.0 | Karaf 4.1.0 | | abc-4.0.0 | abc-4.0.1 | Bug in abc is found, requiring a patch: | Karaf 4.0.1 | Karaf 4.1.0 | Karaf 4.1.1 | | abc-4.0.2 | abc-4.0.1 | abc-4.0.2 | Would the above table describe the releases? Why can't we have the following, where abc-4.0.1 are the same bug fix release? | Karaf 4.0.0 | Karaf 4.0.1 | Karaf 4.1.0 | | abc-4.0.0 | abc-4.0.1 | abc-4.0.1 | Cheers, Jamie On Thu, May 22, 2014 at 11:31 AM, 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