[Kolab-devel] Closing Call for KEP #5: Product Versioning

Christoph Wickert wickert at kolabsys.com
Mon Mar 14 13:21:38 CET 2011


Am Dienstag, 1. März 2011, 11:40:51 schrieb Jeroen van Meeuwen (Kolab 
Systems):
> Hello,
> 
> KEP #5: "Product Versioning" has been under review for an extensive period
> of time now.
> 
> Given the lack of objections to or improvements of the process enhancement
> proposal, this proposal now enters Closing Call.

Hi Jeroen,

thanks once again for working on this. While I was working on Kolab 2.3, I 
figured how well thought out your proposal is. However I have a few additions 
and concerns that I already outlined in a previous mail [1]. I'm sorry to 
speak up so late but AFAIR your feedback to my mail was (relatively) positive.

> http://wiki.kolab.org/index.php?title=User:Kanarip/Draft:KEP:5&oldid=11054

Let's go through this document one by one:

Abstract: no additions, concerns whatsoever, ok

Major, Minor and Teeny: ok

The Major Version Component: ok

The Minor Version Component: ok

The Teeny Version Component:
I'm having problems with the first sentence "The Teeny Version SHALL only be 
bumped for bug-fix releases." I think we need a MUST here instead of SHALL.

Rationale: If I understand correctly, this KEP applies to both to the overall  
Kolab server as well as to it's individual packages. Currently we have 
packages that get recompiled against newer dependencies and still have the 
same name-version-release, so the package name is exactly the same and there 
is no way to distinguish the new package from the old. I consider this one of 
the biggest problems with our OpenPKG packages and we must make sure that we 
fix it. This being said we MUST increase the teeny version for both packages 
as well as for the overall Kolab solution.

Whether or not updates of individual packages also require increasing the 
teeny version of the complete Kolab server is subject of further discussion.

Release: ok

Exceptions for Unstable Bug-fix Releases:
I don't see any benefit in x.y.z-rc1, it forces us to introduce a 4 digit 
versioning for the final release. If we have an update to rc1, that is not rc2 
either, we should rather rc1.1.

Releases and Native Packaging: ok

Pre-Releases and Native Packaging:
On the rpm side your versioning is broken and I'm not sure if it works with 
with deb either. We should follow the logic of the tools and use the 
versioning guidelines of the distributions to avoid these kind or problems.

RPM:
The example you give does not work:
$ rpmdev-vercmp kolabd-2.3-0.4.rc1.el5 kolabd-2.3.0-1.el5
0:kolabd-2.3-0.4.rc1.el5 is newer

For rpm we cannot omit the trailing 0 for pre-releases!
$ rpmdev-vercmp kolabd-2.3.0-0.4.rc1.el5 kolabd-2.3.0-1.el5
0:kolabd-2.3.0-1.el5 is newer

Deb:
While rpm compares sorts verioned (like sort -V), apt/dpkg first *only* 
compare the digits numerically (sort -g) and if they match, do a lexical 
comparision of all ASCII characters where the following characters are allowed 
in the release: + . ~
Sorting is done from ~ over . to +, this means ~ is used for pre-releases, 
while + is used for post-release packages and . of course for the 'normal' 
releases.
Numerical sorting also means that just like with rpm we cannot omit the 
trailing 0 in the version, although for a different reason. This makes me 
wonder if we should also use keep the trailing 0 in the tarball releases for 
constancy.

Bringing this together we have the following

RPM                           vs. DEB:
kolabd-2.3-0.1.beta1              kolabd-2.3.0-~1.beta1
kolabd-2.3-0.2.beta1              kolabd-2.3.0-~2.beta1
kolabd-2.3-0.3.beta2              kolabd-2.3.0-~3.beta2
kolabd-2.3-0.4.rc1                kolabd-2.3.0-~4.rc1
kolabd-2.3.0-1                    kolabd-2.3.0-1
kolabd-2.3.0-2.2011git0392jkljs   kolabd-2.3.0-2.2011git0392jkljs

Basically we just interchange a 0 with ~, I think this level of differnce 
should be ok. I *think* the versioning I listed for rpm *should* also work for 
deb, but there might be some corner cases we don't cover. As the sorting 
algorithms are fundamentally different I strongly propose to stick with the 
individual tools rather than applying the same logic to both.

Regards,
Christoph


[1] http://kolab.org/pipermail/kolab-devel/2010-November/012545.html
[2] http://www.debian.org/doc/debian-policy/ch-binary.html#s-versions
[3] http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version

-- 
Christoph Wickert
Senior Engineer

Kolab Systems AG
Zürich, Switzerland

e: wickert at kolabsys.com
t: +49 251 871 369 77
w: http://kolabsys.com

pgp: 85DACC63 Christoph Wickert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.kolab.org/pipermail/devel/attachments/20110314/1bb9e040/attachment.sig>


More information about the devel mailing list