News: 0000831746

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

GNOME's new versioning scheme

([Development] Sep 17, 2020 15:22 UTC (Thu) (corbet))


The GNOME Project has announced a change to its version-numbering scheme; the next release will be "GNOME 40". " After nearly 10 years of 3.x releases, the minor version number is getting unwieldy. It is also exceedingly clear that we're not going to bump the major version because of technological changes in the core platform, like we did for GNOME 2 and 3, and then piling on a major UX change on top of that. Radical technological and design changes are too disruptive for maintainers, users, and developers; we have become pretty good at iterating design and technologies, to the point that the current GNOME platform, UI, and UX are fairly different from what was released with GNOME 3.0, while still following the same design tenets. "

From :

Emmanuele Bassi via desktop-devel-list <desktop-devel-list-AT-gnome.org>

To :

Desktop Development List <desktop-devel-list-AT-gnome.org>

Subject :

New GNOME versioning scheme

Date :

Wed, 16 Sep 2020 16:02:50 +0100

Message-ID :

<CALnHYQHkU9KzLnoYj1HnEq-+Hc4k4G_0fjHVcNixPME6CBLFyQ@mail.gmail.com>

Cc :

gtk-app-devel-list list <gtk-app-devel-list-AT-gnome.org>, distributor-list-AT-gnome.org

Archive-link :

[1]Article

Hi all;

This email is cross-posted to Discourse:

https://discourse.gnome.org/t/new-gnome-versioning-scheme...

Please, use Discourse to ask further questions or clarifications.

After various off-line/in person talks, last year I started [a

discussion][0] on Discourse about the existing version scheme of GNOME.

[This topic][1] was also raised in July, and discussed at the release team

meeting during GUADEC. Now that the GNOME 3.37 development cycle is over,

and 3.38 is out of the door, it's time to draw this issue to its conclusion.

In the interest of clarity, I'll present the conclusion first, and then try

to answer common questions. The questions summarise the feedback and

iterations of the change; feel free to read the whole topic on Discourse if

you wish to understand what led to the final form of this change.

## The new GNOME versioning scheme

The next version of GNOME, due to be released in March 2021, will be GNOME

40.

The GNOME 40 development cycle will have three releases:

- 40.alpha

- 40.beta

- 40.rc

Followed by the first stable release, 40.0. Every subsequent stable release

will increment the minor component by 1, so:

- 40.1, 40.2, 40.3, …

After the 40.0 release in March 2021, the next version of GNOME will be 41,

and will follow the exact same pattern.

To recap:

- the new versioning scheme starts at 40

- each new development cycle will increment the version by 1

- each development cycle will have three releases: alpha, beta, rc

(release candidate)

- the first stable release will have a minor version of 0

- each stable release will increment the minor version by 1

## Adopting the new versioning scheme

The new version will be visible in the following components:

- the "GNOME version" field of the "About" section in GNOME Control Center

- the version of GNOME in the Tour application

- the application version in the "About" dialog of core GNOME applications

Additionally, the version of the SDK and Platform run times will follow the

same versioning scheme, so you will depend on, for instance,

org.gnome.Platform//40.

If you maintain an application that is not in the list above, then you can

keep following your own versioning scheme.

Libraries in the platform are not expected to change their existing

versioning scheme, but they are still expected to follow the release

cadence of GNOME, with *at least* an alpha, beta, and rc releases.

If your GNOME core application provides an API—for instance, for

plugins—you can version the programming interface however you prefer, as

long as the user visible version of the application follows the GNOME

scheme.

## Frequently Asked Questions

Q: Why do we need a new versioning scheme?

A: After nearly 10 years of 3.x releases, the minor version number is

getting unwieldy. It is also exceedingly clear that we're not going to bump

the major version because of technological changes in the core platform,

like we did for GNOME 2 and 3, and then piling on a major UX change on top

of that. Radical technological and design changes are too disruptive for

maintainers, users, and developers; we have become pretty good at iterating

design and technologies, to the point that the current GNOME platform, UI,

and UX are fairly different from what was released with GNOME 3.0, while

still following the same design tenets.

Q: Why start at 40?

A: Because the next version would be 3.40, and it's a nice, round number.

The 3.38 release was the 40th release of GNOME, but this discussion came

too late in the cycle to effectively switch, so we can say that, if you

start counting at zero, the next cycle would be the 40th release of GNOME.

By using 40 as the base, we acknowledge what came before, and we don't

introduce a large discontinuity in the number progression, which is

somewhat the point of this change.

Q: Why not 4.0?

A: With GTK 4.0 being released during the next development cycle, calling

the next version of GNOME "4.0" would have unfortunate/unintended

implications about the platform, especially from an engagement and

marketing perspective. We want to decouple GNOME from deep changes in the

application development platform, so that GTK can be released more often,

and [provide "long term support" major versions][2], instead of delaying

development cycles that inevitably end up into "rewrite the world" events.

GNOME is not just a technological platform, but also a set of design

guidelines and an [ethos][3], and bumping the major version along with GTK

does not reflect that.

Q: Why not using the year/month scheme?

A: While date-based versioning schemes do make it easier to resolve the

issues of "when was this version of GNOME released" and "how old is my

version of GNOME compared to the latest one", they still rely on knowing

that the version number is, indeed, date based. Even the "gold standard" of

date-based releases, Ubuntu, has users confused about the version numbers,

as outlined in multiple topics on different user support forums.

Additionally, a date-based versioning scheme requires on a twice-per-year

schedule, with stable releases that continue over the span of a year each,

introduces possible collisions and uncertainty, unless more numeric

components are added, thus making version numbers more complicated.

Q: What happened to even/odd (or "Linux kernel style") versions?

A: Just like the Linux kernel, we found that there's no real advantage in

an even/odd split any more. Not many people actually use the odd-numbered

versions of GNOME, even when distributions package them. From the

perspective of application developers, especially with the advent of

bundling technologies like Flatpak, you will either use the bleeding edge

"nightly" snapshots, or, more likely, you'll use the current stable run

times until you are ready to update them.

Q: Why only three development releases?

A: With the advent of nightly builds and continuous integration and

delivery pipelines, there's no real advantage in having multiple alpha and

beta snapshots any more, considering the amount of people actually using

them outside of GNOME maintainers (and the odd packager); they are mostly

busy work for the release team, at this point. Maintainers do tend to skip

the alpha releases, and having more releases in the beta/release candidate

period usually injects more stress into the development process.

Nevertheless, if maintainers wish to do multiple releases, they are

absolutely free to do so. The release team will guarantee those three

development releases for the whole of GNOME.

Q: Does this versioning scheme apply to every GNOME project?

A: The intended audience for this versioning scheme is GNOME users.

Libraries have difference constraints, and thus do not need to conform to

it, and neither do applications that are not in the core applications set,

as defined by the release team. Maintainers are free to follow the same

scheme, or adopt their own. Some applications expose a programmable

interface for out of tree plugins; the interface can have its own

versioning scheme, or it can follow the version of the application.

Q: What about packaging development releases of GNOME? How do we deal with

the new versions?

A: Since packaging rules vary from distribution to distribution, and from

packaging format to packaging format, it is left to the downstream

packagers's judgement how to translate the "dot-alpha", "dot-beta", and

"dot-rc" versions into something that can be appropriately represented by

their downstream project. If the packaging rules or format do not allow

alphabetic components, or do not sort alphabetic components before numeric

ones, we recommend using something like:

- .0alpha, .0beta, .0rc

- .0~alpha, .0~beta, .0~rc

- .0a, .0b, .0rc

which should sort in the correct order, and do so before the .0, .1, … of

the stable releases.

Q: How does this scheme impact the branch naming when opening a new

development cycle?

A: The stable branches will keep the same policy, "gnome-" + version; so

you will have "gnome-40", "gnome-41", and so on, and so forth.

Q: What version number should I use between the latest stable release and

the new development cycle?

A: You should use the version of the next stable, plus the "alpha"

component. Once you cut the alpha release, you update to "beta"; once you

cut the beta release, you update to "rc"; once you cut the release

candidate, you update to 0.

Q: Can I make additional alpha/beta/rc releases? How do I call them?

A: Of course you can do more releases, if you want to; you can use a scheme

such as:

- .alpha.0, alpha.1, …

- .beta.0, beta.1, …

- .rc.0, .rc.1, …

to distinguish them.

Q: I do pre-release version bumps; what do I do, now?

A: The preferred model is to move to post-release version bumps. In other

words: you change the version of your project *after* cutting a release.

For instance, a typical development cycle might look like this:

- you just released "40.0" (first stable release)

- open the development cycle for GNOME 41

- create the `gnome-40` branch

- bump the version of your project to "41.alpha" in your development

branch

- commit the change

- hack, hack, hack

- release "41.alpha"

- update the `NEWS` file

- commit the change

- tag the commit

- bump the version of your project to "41.beta"

- commit the change

- hack, hack, hack

- release "41.beta"

- update the `NEWS` file

- commit the change

- tag the commit

- bump the version of your project to "41.rc"

- commit the change

- we are in freeze, so hack with caution

- release "41.rc"

- update the `NEWS` file

- commit the change

- tag the commit

- we are now in hard code freeze, so no hacking

- release "41.0"

This is a change that might take a bit of an adjustment, but we feel it's

the best compromise towards a consistent versioning behavior.

Q: This is nonsensical. Why do you want to change the versioning scheme at

all? It's just numbers!

A: Numbers, like words, have meaning, and tell a story. With a change in

the versioning scheme we wish to communicate the fact that GNOME doesn't

see major versions of the development platform as the driving force behind

major changes in its user experience; and that radical changes to the user

experience are going to be introduced progressively, so that we can refine

and iterate over them in time, instead of dumping them in our users lap.

## Additional questions

Feel free to discuss this topic on Discourse, and to reach out to the

release team for additional clarifications.

On behalf of the GNOME release team,

Emmanuele Bassi

[0]:

https://discourse.gnome.org/t/straw-man-proposal-changing...

[1]:

https://mail.gnome.org/archives/desktop-devel-list/2020-J...

[2]:

https://blog.gtk.org/2016/09/01/versioning-and-long-term-...

[3]: https://blogs.gnome.org/aday/2017/08/08/the-gnome-way/

--

https://www.bassi.io

[@] ebassi [@gmail.com]

_______________________________________________

desktop-devel-list mailing list

desktop-devel-list@gnome.org

https://mail.gnome.org/mailman/listinfo/desktop-devel-list



[1] https://www.mail-archive.com/desktop-devel-list@gnome.org/msg31023.html

Noise proves nothing. Often a hen who has merely laid an egg cackles
as if she laid an asteroid.
-- Mark Twain