I'm also considering this, but I'm a little afraid of being stuck in the slow lane when it comes to software updates. I'm aware of Backports, but I'm led to believe it has a somewhat limited selection.
Perhaps this is a good opportunity to try a combination of Debian, for general system stability, and Nix, for specific tools where I need newer releases? Has anyone tried this combination before? If so, how did you find it?
You can run a reasonably current Debian install by just switching to the testing repos after you install a stable release. This mostly works pretty well but occasionally[1] you'll have an issue. While you could get absolutely up to the minute software (from a Debian standpoint) using the sid (i.e. unstable) repos, I wouldn't recommend it as breakage is quite common there as they are working through various packing issues and that repo lives up to its name.
[1] every couple of years in my experience... typically as they're getting closer to a new release and package breaking changes are needed/slip through.
Is this a desktop/laptop? You can always run unstable if you think stable is too old (I run unstable on my dev systems, and stable on servers/anything I want to setup and let run). FYI, if you use a Ubuntu LTS release, then unless you always run the latest LTS, the majority of the packages (being in universe) will actually be older than Debian stable (and will always be older then Debian unstable).
I’d suggest testing over unstable as very occasionally broken packages get pushed to unstable. Testing has a week or two delay, which usually catches such problems.
If you decide to run testing, be aware that while testing does get updates that address security issues after those updates work their way into testing from unstable, it does not explicitly get security updates.
Pinning some security sensitive packages to stable or unstable might be worth considering. E.g., if running testing on a client, pin firefox and extensions to stable
+ stable-security (note, globbing works too):
The above priorities will not downgrade to stable from testing if the packages are already installed. To downgrade priority needs to be >= 1000. See 'man 5 apt_preferences'. If priority >= 1000, probably best to only do that temporarily, then adjust to lower to prevent setting a landmine for your future-self.
If there are only a couple things you want to update to newer versions that are not in backports, you can just run stable, and pin those packages to versions in testing or unstable (but only if those packages pull in no / only a few dependencies not used by other packages). If you add e.g., testing/unstable sources to a stable system, add a catchall pin to force those packages to a low priority by default to prevent accidentally updating your entire system e.g., for sid:
Pinning without thinking can result in a broken system. But, I'm typing this on a box running testing (I guess stable, as of today) with packages pinned from Bullseye, Sid, and experimental and I've never had worse issues than an update being blocked due to dependency version conflict which was easily worked-around by pinning another package/removing or downgrading a pinned package; I run unattended-upgrades on all my boxes too. But, my hard rule is no scary deps e.g., a diff version of libc being pulled in, no deps shared with other packages that I would not want to have to pin to the same release (e.g., shared with any package with tons of deps itself), and no package that wants to pull in a lot of deps regardless of how benign they appear.
Debian is fine right up until you have to build something and find that the dep you need is too old so you have to build that from source, and that dep has a dep that's too old so you have to... basically build hell.
Arch seems to not have these problems but is a hair buggier on occasion.
Combining Debian with Nix or Guix is a fairly excellent way to go. Stable OS base, selective bleeding-edge apps (or hell, multiple runtime versions that would otherwise conflict). Win-win.
I tried the same move but I couldn’t find any reason to permanently move to Debian. The biggest problem is that some of the package versions are quite old. Ubuntu is far better when it comes to software updates. The snap stuff is crap though.
I see this old-package argument over and over again and I think it is inaccurate, considering that an estimated 95% of Ubuntu users use the LTS version, the below table demonstrates that Debian 12 (stable) packages are newer than those of of Ubuntu 22.04. Both Debian 12 and Ubuntu 22.04 are LTS versions with 5 years of support.
Ubuntu 22.04
Kernel 5.19 (new installs only, existing installs 5.15)
systemd 249
KDE Plasma 5.24
Gnome 42
Debian 12
Kernel 6.1
systemd 252
KDE Plasma 5.27
Gnome 43
Just use Debian testing. I've essentially been running Bookworm for about year now (that's actually the version name used in my apt conf). Ubuntu is pretty close to Debian testing version-wise.
I suspect that a lot of people who are saying that Debian is behind don't understand Debian.
for them: Whatever you download is going to be "Debian Stable." Debian Stable is as fresh and up-to-date as it's ever going to be at this moment, but it will not change significantly in the future, because its goal is stability. You throw it on something you want to run for years and not crash.
If you don't mind your system crashing every once an a while because you like new stuff, you use "Debian Testing." There is no place to download this directly from Debian, although some third-parties (like Canonical with Ubuntu) distribute customized versions of it. The way you get a non-customized version is by installing Debian Stable, changing sources.list to point at Testing (which you can do as "testing" or by its nickname), then dist-upgrading. Debian Testing is being tested to be the next Stable.
"Debian Unstable" afaict is where individual pieces of software are being tested to go into Testing. Nobody should be running it unless they are contributing to Debian, although there are apt-get masters who know exactly what they're doing who will pull bleeding edge packages from unstable individually.
About the nicknames: Stable, Testing, and Unstable aren't releases, they're an indication of the current status of a release. Each release has its own goofy name. "Bookworm" has just moved from Testing to Stable. "Bullseye," which until just now was Stable, has now become "Oldstable."
Also important is the "[yourrelease]-backports" repo, which Stable users can add to take newer packages from Testing that are 99% certain not to mess with the stability of Stable. Stable + backports is a compromise between Stable and Testing for people who want new stuff that doesn't break things.
I'm sure most people know all of that, but 1) when it comes to things like this people are often afraid to ask because they're afraid they'll look stupid, and 2) the Debian website is very utilitarian and not marketing oriented, so there's no clear entry point for people who don't already know what they're looking for.
Just to add - I think the backports repositories don't get enough attention when this occasionally comes up.
Trying to run a mix of stable and testing packages can be a pain as occasionally a package you want to bring in from testing will try to bring with it new system libraries, which in turn often conflict with the "stable" versions of packages (so you are forced to move a lot more of your system to "testing" packages than you originally wanted to fix this).
The key advantage (at least for me) of using the "backports" repositories is that it avoids this - packages are compiled against the "[yourrelease]" system libraries.
Usually nothing on Testing crashes, as such severe bugs are considered blockers to move a package form Unstable to Testing. (Of course once in a few years something slips through the testing period in Unstable. But it's than usually repaired within a few hours.)
People are running Sid. (Even I personally wouldn't recommend it.)
But one point of the parent I strongly support:
Debian's web page is a mess. I'm using this system for decades but still don't find anything on the Debian page without the help of some search engine. Also, when I need Linux related documentation I go to the Arch Wiki (and sometimes to the Gentoo docs), even as a Debian user. OTOH, you only seldom need docu, because Debian "just works" for the most part.
Perhaps this is a good opportunity to try a combination of Debian, for general system stability, and Nix, for specific tools where I need newer releases? Has anyone tried this combination before? If so, how did you find it?