Currently libvirt uses a 3 digit version number, except when it uses a 4 digit version number. We have the following rules - major - no one has any clue about when we should bump this - minor - bump this when some "significant"[*] features appear - micro - bump this on each new release - extra - bump this for stable branch releases [*] for a definition of "significant" that no one knows Now consider our actual requirements - A number that increments on each monthly release - A number that can be incremented for stable branch releases Ok, the micro + extra digits deal with our two actual requirements, so one may ask what is the point of the major + minor digits ? In 11 years of libvirt development we've only bumped the major digit once, and we didn't have any real reason why we chose to the bump the major digit, instead of continuing to bump the minor digit. It just felt like we ought to have a 1.0 release after 7+ years. Our decisions about when to bump the minor digit have not been that much less arbitray. We just look at what features are around and randomly decide if any feel "big enough" to justify a minor digit bump. Way back in the early days of libvirt, we had exactly this kind of mess when deciding /when/ to actually make releases. Sometimes we'd release after a month, sometimes after 3 months, completely arbitrarily based on whether the chances felt "big enough" to justify a release. Feature based release schedules are insanity and so we wised up and adopted the time base release schedule where we release monthly (except over xmas/new year period). I venture to suggest that the reasons for switching from feature to time based release schedules, also apply to version numbers. IOW we should switch to a time based version number change rule, instead of a feature based version number change rule. So what I'm suggesting is that we adopt the following rule - major: bumped for the first release of each year - minor: bumped for every major release - micro: bumped for stable branch releases Rather than wait until next January to adopt this rule, I'd suggest we pretend that it is January now, and thus switch our next version number to be 2.0.0, and jump to 3.0.0 in January 2017. IOW, over the next 2 years we'll do the following releases off master: - Jul 1, 2016 - 2.0.0 - Aug 1, 2016 - 2.1.0 - Sep 1, 2016 - 2.2.0 - Oct 1, 2016 - 2.3.0 - Nov 1, 2016 - 2.4.0 - Dec 1, 2016 - 2.5.0 - Jan 15, 2017 - 3.0.0 - Mar 1, 2017 - 3.1.0 - Apr 1, 2017 - 3.2.0 - May 1, 2017 - 3.3.0 - Jun 1, 2017 - 3.4.0 - Jul 1, 2017 - 3.5.0 - Aug 1, 2017 - 3.6.0 - Sep 1, 2017 - 3.7.0 - Oct 1, 2017 - 3.8.0 - Nov 1, 2017 - 3.9.0 - Dec 1, 2017 - 3.10.0 - Jan 15, 2018 - 4.0.0 - Mar 1, 2018 - 4.1.0 - Apr 1, 2018 - 4.2.0 - .... The stable release branch naming would just use the first major + minor digit in its name.. eg the stable branch for 2.3.0 would use v2.3-maint and do stable releases 2.3.1, 2.3.2, 2.3.3, etc. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list