|
|
Subscribe / Log in / New account

Debian and code names

By Jake Edge
July 3, 2019

Debian typically uses code names to refer to its releases, starting with the Toy Story character names used (mostly) instead of numbers. The "Buster" release is due on July 6 and you will rarely hear it referred to as "Debian 10". There are some other code names used for repository (or suite) names in the Debian infrastructure; "stable", "testing", "unstable", "oldstable", and sometimes even "oldoldstable" are all used as part of the sources for the APT packaging tool. But code names of any sort are hard to keep track of; a discussion on the debian-devel mailing list looks at moving away from, at least, some of the repository code names.

The issue was raised by Ansgar Burchardt, who wondered if it made sense to move away from the stable, unstable, and testing suite names in the sources.list file used by APT. Those labels, except for unstable, change the release they are pointing at when a new release gets made. Currently stable points to "Jessie Stretch" (Debian 9), while testing points to Buster. Soon, stable will point to Buster, testing will point at "Bullseye", which will become Debian 11.

He asked about using the release code names directly, instead, so that pointing a system at Stretch would continue to get packages from that release. But he also thought it would be nice to completely route around the code names, which "confuse people". He suggested lines that looked like the following in sources.list:

    deb http://deb.debian.org/debian debian11 main
    deb http://security.debian.org/debian-security debian11-security main
He noted that Ubuntu does not use suite names but the code-name problem still rears its head: "[...] having to map 'Ubuntu 18.04' to 'bionic' instead of just writing the version in sources.list is annoying".

Andrei Popescu pointed out some of the perils of using stable and testing around the time of a release. Many users have (mostly incorrectly) trained themselves to do a apt-get dist-upgrade instead of a regular apt-get upgrade to pick up new package versions, but that can go badly awry if stable has just changed. Those who stick with testing, he said, are really looking for a rolling release, so perhaps testing should be renamed to "rolling"—"or 'roling' to emphasize that it's incomplete :p".

The code names are particularly hard for those only tangentially connected to Debian, Simon McVittie said. He notes that there will be three releases with code names that start with "B" before too long; after Buster and Bullseye comes Bookworm. Originally, part of the reason for code names was because it was not clear whether the next release would be considered a point release or not: "we didn't know whether etch would be released as Debian 3.2 or Debian 4.0". Now each release is a major version bump, so it would help outsiders to use those more:

With more emphasis on the version numbers, my non-Debian colleagues would still have to learn (or look up) which release is the current stable, but given that information they would immediately also know which release was the previous one (subtract 1) and which release is under development (add 1).

But Adam Borowski is adamant that the code names are easier to work with. He complained that he had to look up whether Debian 11 was Buster or Bullseye, but others have the opposite problem. Going back in time is difficult as well, as Wouter Verhelst related:

Potato was followed by sarge, but I think there was something in between (although I'm not sure). There's an etch somewhere, and a lenny.

But what were the orderings again? I honestly don't remember.

Philip Hands also has trouble remembering code names, but he (and others) suggested: "Can we not just have both?" Certainly the testing suite name is considered useful by many, so it will presumably remain in any plan that might emerge. And Ian Jackson thinks that the other suite names should stick around for reference purposes but that using "debian11" in sources.list should be the default going forward:

For now, the 'debian11' can be an alias. At some future point this should become the canonical suite name, replacing the codename. But I think this should not be done retrospectively to old suites, because there is software outside the archive that wants to name things by a single canonical name, and changing that name for an existing suite will cause trouble.

Michael Stone summed up the thinking of many in the thread with regard to names, rather than versions, in sources.list:

Having "stable" in sources.list is broken, because one day stuff goes from working to not working, which requires manual intervention, at which point someone could have just changed the name. Having codenames in sources.list is broken, because even people who have been developers for two decades can't remember which release is which without looking it up.

Several lamented that it was painful to actually do that lookup at times. Wikipedia has a good reference page, but something closer to home would be useful. McVittie pointed to the distro-info-data package, which has those mappings in a CSV file and provides bindings for various languages; it is used by the lsb-release package to report distribution version information. That helps, but the consensus still seems to be that providing a version-number-based system (in addition to the existing suite names) makes sense.

In fact, Jackson suggested a call for rough consensus as was done by Debian project leader Sam Hartman for the dh discussion in June. Hartman seconded that call, suggesting that Burchardt do so "as the developer who started the discussion". So far, that has not occurred, however.

Perhaps inevitably, the idea of moving to year-based version numbers (or "release identifiers") was raised; Tomas Pospisek said that the code names are getting confusing and that "sequential release numbers are devoid of any semantics except for their monotonically increasing character". Year-based version numbers is, of course, what Ubuntu uses, but there is a big difference between the two: Ubuntu sets its release date in advance, while Debian release dates are rather more fluid. The pros and cons of that approach were discussed, with the idea of alphabetically increasing code names thrown in for good measure, but few beyond Pospisek seemed wildly enthused by the idea. As Paul Wise put it:

At this point in the thread it is very clear that which identifier one prefers is very individual and dependent on use-cases. So we should add support for more individuals and use-cases in order to accommodate everyone's preferences. Killing off use-cases by switching between identifier styles isn't the right way to go.

That's where things stand at this point. In general, code names are most useful within a community, rather than as a marketing or other tool to communicate with outsiders. Even when those names follow a clear pattern (e.g. Ubuntu, Android) they still seem to confuse to some extent. Numbers have the advantage of predictability, though without some kind of real-world mapping (e.g. date-based) the advantage is somewhat limited. But defaulting to a world where sources.list does not point to "stable", which suddenly changes at release time, seems like a goal worth pursuing. Outsiders and insiders alike can perhaps agree on that part.



to post comments

Debian and code names

Posted Jul 3, 2019 17:16 UTC (Wed) by dskoll (subscriber, #1630) [Link] (3 responses)

This article inadvertently emphasizes its own point:

Currently stable points to "Jessie" (Debian 9)

Actually, Debian-9 is "Stretch". So yes, I think codenames should only be used within the developer community, and numbers for public consumption.

Debian and code names

Posted Jul 3, 2019 17:52 UTC (Wed) by jake (editor, #205) [Link] (2 responses)

> Actually, Debian-9 is "Stretch".

Ouch, that's embarrassing ... fixed with a strikethrough ...

jake

Debian and code names

Posted Jul 4, 2019 3:54 UTC (Thu) by devkev (subscriber, #74096) [Link] (1 responses)

And yet so very... apt.

Sorry, I'll see myself out.

Debian and code names

Posted Jul 4, 2019 7:38 UTC (Thu) by Conan_Kudo (subscriber, #103240) [Link]

Right in the Bullseye...!

Debian and code names

Posted Jul 3, 2019 18:05 UTC (Wed) by wazoox (subscriber, #69624) [Link] (1 responses)

I always had the release name in my sources.list, since Sarge times at least. Who uses "stable"? It's really dangerous.

Debian and code names

Posted Jul 5, 2019 15:06 UTC (Fri) by joey (guest, #328) [Link]

Only people who put it there themselves; the installer has used code names since some Debian release whose code name I have long since forgotten.

Debian and code names

Posted Jul 3, 2019 18:05 UTC (Wed) by cjwatson (subscriber, #7322) [Link] (1 responses)

But defaulting to a world where sources.list does not point to "stable", which suddenly changes at release time, seems like a goal worth pursuing.
One of the installer developers pointed out that Debian installations have defaulted to using codenames in sources.list since 2005.

Debian and code names

Posted Jul 3, 2019 18:06 UTC (Wed) by cjwatson (subscriber, #7322) [Link]

And for clarity, this means that they use e.g. "stretch" rather than e.g. "stable".

Version numbers should be... numbers

Posted Jul 3, 2019 18:34 UTC (Wed) by david.a.wheeler (subscriber, #72896) [Link] (2 responses)

<p>
There are too many systems to keep track of every idiosyncratic version numbering scheme. If you have to memorize anything, you're doing it wrong.
</p>
<p>
Internal to a group it's okay to have a funny code name. But external users have many other things in their life beyond your software. Asking them to memorize code names forever is unreasonable.
</p>
<p>
Version numbers should be.... numbers. If the number is bigger, then it came later. If it's structured, use simple semantic versioning (X.Y.Z) where again you only need to compare numbers. When you do that, everyone can understand what they are. (Dates can work that way too if you make them YYMM or some such... but do it in a way that it's obvious how to compare them as numbers.)
</p>

Version numbers should be... numbers

Posted Jul 4, 2019 11:23 UTC (Thu) by joib (subscriber, #8541) [Link] (1 responses)

Semantic versioning makes sense for a library or such. For a distribution of thousands of unrelated packages, not so much.

Your point about familiarity to outsiders is good, though. If I were Dictator of Debian, I would choose just the year of release. So Buster would be "Debian 2019". For point releases, "2019.1" etc. (to avoid problems with schedule slipping causing the name to change at the last minute, plan for a release in the beginning of the year)

Version numbers should be... numbers

Posted Jul 4, 2019 12:46 UTC (Thu) by shane (subscriber, #3335) [Link]

I agree with the year versioning, basically, for the reasons you mention (schedule slip, and so on). The only corner case might be if a release was planned for January and by miracle it was ready in December, which seems unlikely. 😉

One minor tweak would be use something like "2019.update1" or the like, to make clear that it is not referring to a month number (I might be confused if I saw "2018.5" come out in 2020).

Debian and code names

Posted Jul 3, 2019 18:51 UTC (Wed) by ju3Ceemi (subscriber, #102464) [Link] (12 responses)

I think codenames are awesome

It let us personalize the release, it gives it a special identity

The upcoming Debian release is not just an anonymous number, one amongst the others
It is Buster, the friendly doggo

Numbers as a version are meaningless, which means people must learn them stupidly
Codename do have meanings

Also, I am pretty certain that Toy Story 4 is secretly founded by Debian, to get a new pool of codenames.
It would be a shame to waste such effort!

Debian and code names - pets or cattle

Posted Jul 3, 2019 22:19 UTC (Wed) by neilbrown (subscriber, #359) [Link] (3 responses)

This reminds me of the pets/cattle distinction for naming computers.

Once upon a time we gave names to each computer - maybe using some theme like colors or composers or cartoon characters etc - just like we do for pets.
Now days we often have some many of the things that they are sa13-254 etc. Just like we might identify cattle.

Are distributions pets (you seem to think so, I might even agree) or cattle??

Debian and code names - pets or cattle

Posted Jul 4, 2019 2:42 UTC (Thu) by gdt (subscriber, #6284) [Link]

"Pets v cattle" isn't a useful analogy for distributions. Why can't they be racehorses -- both individually cared for and yet with an eye to temporal matters. Or whales -- in that if you think you are controlling the whale, well I've got some news. Or maybe even imaginary creatures from a Pixar movie :-)

Debian and code names - pets or cattle

Posted Jul 12, 2019 8:46 UTC (Fri) by MiCRoPhoBIC (guest, #47807) [Link] (1 responses)

Debian and code names - pets or cattle

Posted Jul 16, 2019 22:46 UTC (Tue) by nix (subscriber, #2304) [Link]

What a wonderful article. I suspect every software developer -- as opposed to, say, SREs or whatever they're called now -- has at least one system like this: the one on which she works. But nobody else works on it: they are alone there, and if they're not they probably have a VM in which they *appear* to be alone.

It does feel like something has been lost. Maybe we could get it some of it back, but I'm not sure how. (That world did have notable downsides, too: the bugger over there with a madly bloated Emacs pushing the machine deep into swap was too often, uh, me...)

Debian and code names

Posted Jul 8, 2019 0:01 UTC (Mon) by mathstuf (subscriber, #69389) [Link]

> Codename do have meanings

Not inherently. And that's the problem. It's the same issue I have with macOS releases. Everyone there uses code names and I can't keep them straight. I can at least order "cats before rock formations" but that doesn't help other than that divide. At least Ubuntu is referred to by its release number in casual conversation so I at least have an idea of how old it is. All I know of Debian releases off-hand is that "jessie" is "recent" and "buster" is "newer" (though give it 6 months and I'll forget how "old" each is too for comparisons with other distros). Other than that, the names are just noise to me and I may as well just do a shuffle on them to try and order them. I'm a Fedora user where the name was dropped years ago completely and otherwise seemed to mainly be inspiration for distro art.

Debian and code names

Posted Jul 8, 2019 18:40 UTC (Mon) by Jandar (subscriber, #85683) [Link] (6 responses)

> Codename do have meanings

Really? What kind of meaning is contained within "squeeze" or "jessie"? Codenames of Ubuntu or Mint with ascending first letters have a meaning, randomly chosen ones of a special set have no further meaning beyond being from this set (e.g. names from certain Pixar films).

I had for many years Debian as my desktop distro and still as my server distro but only during updating I remember the nonsensical codenames.

Please envision streets without numbers. Every street has codenames for the houses. Address: Jane Doe, Main Street / Diseased Merry Screwdriver. I assume you would have no problem finding the way to Jane Doe, because "Codename do have meanings".

Debian and code names

Posted Jul 8, 2019 21:31 UTC (Mon) by excors (subscriber, #95769) [Link] (5 responses)

> Please envision streets without numbers. Every street has codenames for the houses. Address: Jane Doe, Main Street / Diseased Merry Screwdriver.

There's already a system for that: https://what3words.com/about/ . More universal than street names and numbers, more precise, much easier to translate to GPS coordinates, easy to communicate and to remember. It appears there is no diseased.merry.screwdriver, but there is a displeased.merry.screwdriver in the ocean near Hawaii.

Debian and code names

Posted Jul 8, 2019 22:44 UTC (Mon) by Jandar (subscriber, #85683) [Link] (4 responses)

Ok, these three word combinations seem have meanings, but can you decipher them without help of a computer?

What is more northern, "reopens.rooks.divide" or "boil.stones.closet" and which of the two is nearer "hollies.shivered.octagon". As "reopens.stones.octagon" shares parts with each of the former three, has it something in common with them?

what3words.com has nothing to do with meaning, these combination are simply random but memorable ids. The meaning of these ids are stored in a database not in the three word combinations themselves.

Debian and code names

Posted Jul 8, 2019 22:55 UTC (Mon) by Jandar (subscriber, #85683) [Link] (2 responses)

I have to correct myself.

The names are mapped algorithmic to coordinates, so they have (in the strictest sense) meaning. Only this meaning isn't discernible for humans.

Debian and code names

Posted Jul 9, 2019 5:58 UTC (Tue) by micka (subscriber, #38720) [Link] (1 responses)

And that seems a little English speaker-centric, too.

Debian and code names

Posted Jul 9, 2019 7:41 UTC (Tue) by Jandar (subscriber, #85683) [Link]

What3words is available in 35 languages. The english position "reopens.stones.octagon" is in french "convaincu.verbe.hypertrophier".

What3words is a solution for the problem where you communicate addresses verbally and store them in your human memory but use a computer while trying to find them.

Fortunately the Indo-Arabic numeral system is used nearly everywhere so if I communicate GPS coordinates to another computer-user she can understand and store them without problems and instead of using map.what3words.com uses www.openstreetmap.org.

Debian and code names

Posted Jul 10, 2019 17:13 UTC (Wed) by tao (subscriber, #17563) [Link]

"What's more Northern?" is a question you cannot answer for a "normal" street address either. Streets twist and turn. You cannot even trust the names. "Old Street" might be newer than "New Street". "Broad Street" might be narrow by modern standards. "Baker Street" might not have any bakers on it any longer. Street names aren't even unique.

Streets, and geographical naming in general, is a mess.

Debian and code names

Posted Jul 3, 2019 19:51 UTC (Wed) by smadu2 (guest, #54943) [Link] (1 responses)

I always liked Ubuntu's naming and versioning.

Versions are "Year.Month" - so just looking at the version I know exactly when it was released and how long it's going to be maintained for.
Names always alphabetical so I have some sense of where in the whole suite of releases I am.

Debian and code names

Posted Jul 3, 2019 20:44 UTC (Wed) by admalledd (subscriber, #95347) [Link]

My only complaint with the Ubuntu convention is exactly as mentioned in the article, in that "I have to poke around in /etc/apt/<blah>, what was the codename for 19.04? Or the number version for Trusty?". So if there was some compatible aliasing for the repositories so I could just set them to the pure numbers that would be great.

Yes, plenty of easy to find mappings online/wiki but is it truly necessary at this point? Useful, yes for marketing and that saying a name is better than a number for development/community stuff too. For those of us who are downstream users/administrators with fleets of machines to think about (and not just my personal computers!) I feel that simple numeric (recommended to have a prefix as article mentions too though so you know 'debian' vs 'vendor') is much nicer to have available in common use throughout.

Debian and code names

Posted Jul 4, 2019 7:13 UTC (Thu) by rsidd (subscriber, #2582) [Link]

Ubuntu names (like Debian's) are a bit too cutesy IMO and it would be much clearer to use the release name in the sources.list file (and everywhere else that matters). Ubuntu's names have the advantage that they are alphabetically ordered, except for three: the first two and (so far) one rollover. So one knows, within the last several releases, which release came before which just by the name. But Ubuntu numbers are even better: they indicate the year and month of release.

Debian and code names

Posted Jul 4, 2019 7:50 UTC (Thu) by juliank (guest, #45896) [Link] (5 responses)

Andrei's email contains two wrong points, both of which quoted in the article:

1) Using "upgrade" is not necessarily the proper way to upgrade in stable releases, and "dist-upgrade" (or "full-upgrade" as its known in apt(8)) is not just for distribution upgrades.

2) Using "stable" will be entirely safe for users in buster and following versions, as APT will not just switch to a new stable, it will detect the codename changed and refuse to fetch the new metadata (apt(8) prompts you to confirm the codename change, apt-get(8) requires a command-line switch).

The article also got things wrong in that it talks about "apt-get upgrade" when "apt upgrade" is meant and used in the email (the latter installing new packages, the former not).

Debian and code names

Posted Jul 4, 2019 10:32 UTC (Thu) by rsidd (subscriber, #2582) [Link] (2 responses)

The article also got things wrong in that it talks about "apt-get upgrade" when "apt upgrade" is meant and used in the email (the latter installing new packages, the former not).
The article and the mail are correct in this. Because "apt-get upgrade" does not fetch new packages, users (including me) always used "apt-get dist-upgrade". "apt upgrade" does fetch new packages but users are only slowly migrating. The mail claims that "apt-get dist-upgrade" (and presumably also "apt dist-upgrade") can cause problems if "stable" has changed in the interim. Others point out that a default installation uses the codename (eg "stretch") and not "stable" in the sources.list, so this problem will not occur.

Debian and code names

Posted Jul 4, 2019 12:19 UTC (Thu) by juliank (guest, #45896) [Link]

To quote the article:

> trained themselves to do a apt-get dist-upgrade instead of a regular apt-get upgrade to pick up new package versions

I understand that sentence to say that people use dist-upgrade, even though upgrade supports installing new packages - this is only true for apt upgrade, though, and a reason apt-get upgrade is avoided.

And, as explained, dist-upgrade cannot cause any problems anymore starting with buster, as apt won't even download the metadata for the new release, so you'll be stuck on the metadata of your stable release until you confirm that the stable release changed.

Debian and code names

Posted Jul 4, 2019 22:58 UTC (Thu) by glaubitz (subscriber, #96452) [Link]

PS: You are talking to one of the APT maintainers ;-).

Debian and code names

Posted Jul 4, 2019 16:00 UTC (Thu) by smcv (subscriber, #53363) [Link] (1 responses)

> Using "stable" will be entirely safe for users in buster and following versions, as APT will not just switch to a new stable, it will detect the codename changed and refuse to fetch the new metadata

This avoids installing a 2-years-later distro unexpectedly, but users who hit this error case will stop getting security updates, so it seems like a stretch (no release codename pun intended) to call it safe. (It's certainly less unsafe, and seems better than what used to happen.)

Debian and code names

Posted Jul 7, 2019 12:25 UTC (Sun) by zwenna (guest, #64777) [Link]

>> Using "stable" will be entirely safe for users in buster and following versions, as APT will not just switch to a new stable, it will detect the codename changed and refuse to fetch the new metadata

What juliank failed to mention that this also applies if the Suite changes, e.g. from testing to stable. This has already lead to some questions on debian-user mailing list:

https://lists.debian.org/debian-user/2019/07/threads.html...

> This avoids installing a 2-years-later distro unexpectedly, but users who hit this error case will stop getting security updates, so it seems like a stretch (no release codename pun intended) to call it safe.

Indeed, and it means that two years from now when bullseye is released and buster becomes oldstable, _everyone_ suddenly no longer receives updates by default. Should I ask for a CVE entry already?


Debian and code names

Posted Jul 5, 2019 1:49 UTC (Fri) by mirabilos (subscriber, #84359) [Link]

The problem with codenames is the people who decided having three subsequent releases’ start with ‘b’ is a good idea. (Hint: it is _not_.)

But otherwise, the release versions (9, 10, 11…) are not used *at all* inside Debian, and people remember the lower-entropy codenames more easily. The ordering is a bit of a problem, but easily looked up, and if one regularily backports to ancient distros they’re easy enough to remember. So I’d keep them out and perhaps just use the codenames even _more_.

Not installing a system with the moving alias (“stable”) by default sounds sensible, though.

Debian and code names

Posted Jul 6, 2019 2:37 UTC (Sat) by flussence (guest, #85566) [Link]

I think if Debian can go to the effort of building an entire framework to genericise a wide range of upstream software into filesystem names like “x-www-browser”, then it's only fair they should offer the same affordance for their releases.

Debian and code names

Posted Jul 6, 2019 9:39 UTC (Sat) by amacater (subscriber, #790) [Link]

As I write, I'm also watching the process of a Debian release. The FTPmasters never normally refer to a release by number but always by codename. Today's Debian 10 - Buster/buster (which now has a nice 10 on the artwork) has been referred to as buster since the codename was chosen before the last release. So from unstable being copied for the first time to create the new testing -> stable release (-> oldstable -> oldoldstable)

That process of rebasing the symlinks for releases is essentially happening more or less now.

We know the names of the next two Debian releases well in advance. Debian releases when it's ready: a year based timeframe doesn't really work: you don't want to have to speed up a release / testing to fit it to a defined date. [See also Red Hat pressure for twice yearly point releases / Ubuntu / Windows 10 ... ]

Codenames work for many of us: stable/testing/unstable are useful shorthand for some purposes: numeric releases work for some people.

Buster/bullseye/bookworm is the next sequence of releases: I can tell you that unless there are huge changes, bullseye _will_ be Debian 11 and bookworm will be Debian 12 but I've no idea when that will be.

When the FTPmasters finally push the new release out and restart the mirroring process, then anything that's been held through the last stages of release will flood to bullseye (and possibly buster-backports in due course) and we begin again.

Debian and code names

Posted Jul 9, 2019 7:40 UTC (Tue) by anton (subscriber, #25547) [Link] (4 responses)

An annoying aspect of Debian (and Ubuntu) is that /etc/issue only shows the version number, while everything else (e.g., packages.debian.org) uses the codename.

Debian and code names

Posted Jul 9, 2019 8:52 UTC (Tue) by zdzichu (guest, #17118) [Link] (3 responses)

/etc/os-release is file you should be checking.

Debian and code names

Posted Jul 9, 2019 9:53 UTC (Tue) by rschroev (subscriber, #4164) [Link]

It's still annoying.

If the code name is meant to be the main version identifier, it should be used everywhere, instead of a strange mix of code names here and version numbers there.

It doesn't help that there is no obvious way to find the correspondence between code names and version numbers. Maybe there's a list on debian.org, but I can't find it. I can find a list on Wikipedia, but shouldn't a project's own website be the primary source of information for such things?

Also, /etc/os-release is a relatively recent addition. For most of Debian's history, /etc/issue is all we had (or lsb_release -d, but that's not in the standard installation).

Debian and code names

Posted Jul 10, 2019 17:16 UTC (Wed) by tao (subscriber, #17563) [Link] (1 responses)

Might I humbly suggest /usr/lib/os-release instead? While /etc/os-release exists on Debian/Ubuntu, it's merely a symlink to /usr/lib/os-release, which is the standard on most (all?) distros these days.

Debian and code names

Posted Aug 2, 2019 11:29 UTC (Fri) by mgedmin (subscriber, #34497) [Link]

According to https://www.freedesktop.org/software/systemd/man/os-relea...

> The file /etc/os-release takes precedence over /usr/lib/os-release. Applications should check for the former, and exclusively use its data if it exists, and only fall back to /usr/lib/os-release if it is missing. Applications should not read data from both files at the same time.

so it would be wrong to use /usr/lib/os-release instead of /etc/os-release, in theory.


Copyright © 2019, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds