Beyond 2.8 - version numbering
Geert Janssens
geert.gnucash at kobaltwit.be
Wed Jan 10 12:00:19 EST 2018
Op donderdag 4 januari 2018 00:23:57 CET schreef Frank H. Ellenberger:
> Am 03.01.2018 um 17:41 schrieb Derek Atkins:
> > I see no reason that we can't jump from 2.7.x to 3.0[.0] when we release.
> > And since we DID upgrade to GTK3, I think we should do that.
>
> +1
How is the upgrade to gtk3 (from gtk3, so a fundamental version change)
important in the decision to make a fundamental version change for gnucash as
well ?
We didn't do so when we started to support guile 2 for example, nor when we
changed from aqbanking 4 to aqbanking 5.
Your reply also alludes we should follow Gtk's fundamental numbering as
gnucash has done in the past as well.
However I currently see several reasons *not* to continue that scheme. In no
particular order:
* The currently active developers plan to replace gtk eventually. This is
still far away and conceptual, but if it does happen gtk's numbering wouldn't
make sense.
* Gtk itself has recently decided to change its numbering policy. The project
has decided to release incompatible changes every two years, in effect
updating the fundamental number at the same pace. Our release cycle is much
slower than that (typically 3-4 years). So our release numbers will start
falling behind on gtk's after some time. So it would mean in the best case
we'd go from 3.0.x to 4.0.x if we try to keep up with gtk, or in the worst
case from 3.2.x to 5.0.x if we decide to skip a gtk release. In the first case
the middle number would never be used any more, in the latter we'd get
unexpected version jumps. I think we all agree that latter is not an option.
We clearly all agree the jump to 3.0 is in order. Personally however I'd not
do it because the version of gtk we now depend on is also 3.x.
Perhaps that's not what you meant to imply. In which case the above is just a
confirmation of why we shouldn't from my point of view.
>
> > As for whether to drop the third entry is less important to me, but I
> > still think it makes sense to have 3.0.0, 3.0.1, etc., for bugfixes and
> > leave 3.1/3.2 for more major changes.
>
> +1
So this indirectly advocates to keep a distinction between fundamental changes
and major changes. What criteria make this distinction in a way that's
relevant enough to a maintainer and - even more importantly - an end user to
do so ?
>
> Maintainers might have a policy to update bugfixes in their current
> release, mayor changes in the next release and for fundamental changes
> both versions.
>
I understand "bugfixes in their current release" and "major changes in the
next release", but I don't understand what you tried to convey with "and for
fundamental changes both versions". Can you explain it ?
I will assume with "maintainer" you are mostly referring to distro packagers
and similar, people that take our sources and offer it in a larger context.
I understand these people need information to decide whether a new release can
be considered maintenance or not. I don't see why this can't be conveyed with
2 numbers. And for that I'm particularly looking at our current development
model. We don't use 3 levels. We only use 2: a master branch (new development)
and maint (bugfixes and possibly small feature improvements).
Since we only maintain two development levels ourselves, keeping 3 levels in
the version number doesn't help maintainers in any useful way regardless of
the theory behind the numbering model.
> The 3 levels also should give admins and users a clue how much time is
> needed for
> dependency changes and
> understanding new concepts.
>
I have the same reflection here. We only use two levels in practice. So
keeping the third level is only artificial.
What I'm trying to convey is that I believe the numbering system we choose
should be consistent with our development model.
A numbering system featuring a "fundamental" change suggests the project using
it does actually make "fundamental" changes reasonably frequently.
That's simply not the gnucash way. We're a small team adopting an incremental
development model. So I don't expect many fundamental changes at all. Take the
C++ conversion for example. If we'd have implemented all of that in one single
development cycle (which at the current pace would have taken at least 3 times
more time than we spent on it so far), that would have been a fundamental
change IMO. But we chose to do it gradually, spread over several major
releases to come.
Do the new looks of gtk3 qualify sufficiently as a fundamental change ? I
don't think so personally. We have gone out of our way to keep everything as
close as possible as it was in the previous release. That it looks differently
is not our choice, but rather the gtk design team's choice. If we could avoid
it I would have done so.
For changes in the past that would have qualified, adding a database backend
might have been considered a fundamental change. Yet even then we didn't
change the fundamental number. Why not ? Because the old way with xml
continued to work just fine and was even preferred.
Semantic versioning on the other hand suggests the left most number should be
reserved for incompatible changes, which I find a much more useful definition.
And we make incompatible changes with every major release for which we
currently update the second number instead of the first one. So our version
would convey much more information if we did follow that and make the next
major series after the 3.0 series 4.0, rather than 3.1/3.2.
Semantic versioning proposes an in between number for backwards compatible new
features. We don't have that intermediate level. Depending on the complexity
and size we decide to add a new feature to the next major version or in the
next bugfix release. (Note the new gtk versioning semantics do follow this
pattern more closely and they do use the 3 numbers in this semantic way from
now on as far as I understand).
So in my opinion either we update our development model and start maintaining
a separate "compatible features" branch and do reqular releases from that one
next to bugfix releases from the "maint" branch or we adjust or numbering
system to match how we develop. I think this makes things more clear.
Note that adding a third branch does imply additional release manager overhead
which I would personally like to avoid given our small team.
And my last motivation to update our numbering system is subjective user
perception. Gnucash is targeted at normal computer users, not developers
(we're not a library, but an end user application).
With our current development cycle, our fundamental number increases only once
a decade or so (to illustrate 2.0 was released in 2006 -- almost 12 years
ago).
In the current age of internet speeds this risks being perceived as stagnating
development. Consider even gtk (our current "reference") is aiming to increase
the fundamental number every 2 years!
I would hope that updating the fundamental number every 3-4 years (in our
current development model) can help keeping the gnucash image more fresh. I'll
grant this is just a tiny aspect of user perception, but an easy one to
implement...
> > I'm fine with dropping the even/odd and just jumping t0 3.0.80 (or 90)
> > for testing pre-releases.
>
> The rule is simple: Do not install the odd version on productive systems!
The other rule is equally simple: don't install the .9xx version on production
systems.
More specifically, where did this even/odd rule come from ? It looks like a
gnome-ism, not a more universal standard. For example the kde ecosystem
doesn't follow it, nor do several big applications such as libreoffice or
firefox, both gtk based applications.
Geert
More information about the gnucash-devel
mailing list