LTS support and version clarifications

Hello everybody,
I have read the documentation for a while but have not been able to clarify my doubts.
I will try to be as short as possible.
At present according to this table: https://www.freebsd.org/security/#sup the latest LTS version is Stable 12.
So if I wanted to have a long support I don't have to update for example at 12.2 so just do a package updates.
It's correct?
Finally, I still don't understand the difference between Stable and Release.
Does the Release then become stable and then once stable LTS at least this for the major versions?
Instead, the minor versions remain in the release state?

Thank you all.
 
Sorry but, it's all wrong.

There is no "LTS", and there's no need for one because every major release is supported for a long term (AFAIK 5 years). This still means you must follow the minor releases (12.0 → 12.1 → 12.2 → [...]). Each minor release will reach EOL 3 months after the successor is released. BUT: Minor releases use the same ABI, so upgrades are pain- and riskless.

Right now, there are 3 supported major releases, but support for the 11.x line will end soon. So the sane choices for a new installation would be either 12.2-RELEASE or 13.0-RELEASE.

As for -STABLE: That's for each major release the branch from which minor releases are created. It's still a development branch, the "stable" refers to the ABI that doesn't change.
 
Sorry but, it's all wrong.

There is no "LTS", and there's no need for one because every major release is supported for a long term (AFAIK 5 years). This still means you must follow the minor releases (12.0 → 12.1 → 12.2 → [...]). Each minor release will reach EOL 3 months after the successor is released. BUT: Minor releases use the same ABI, so upgrades are pain- and riskless.

Right now, there are 3 supported major releases, but support for the 11.x line will end soon. So the sane choices for a new installation would be either 12.2-RELEASE or 13.0-RELEASE.

As for -STABLE: That's for each major release the branch from which minor releases are created. It's still a development branch, the "stable" refers to the ABI that doesn't change.

Thanks for the clarifications.
 
-RELEASE branches are made from -STABLE branches. So in a sense the -STABLE branches are the alpha versions of the next minor release version.
I've made this crude ASCII art before, I really should make a proper picture for it.
Code:
----------------------------------------------------------------------------------------> -CURRENT
\__ 11.0-RELEASE -> p1 -> p2, etc     \__12.0-RELEASE    \__ 13.0-RELEASE
 \__ 11.1-RELEASE -> p1 -> p2, etc     \__ 12.1-RELASE    \
  \__ 11.2-RELEASE                      \__ 12.2-RELEASE   \
   \__ 11.3-RELEASE                      \                 13-STABLE
    \__ 11.4-RELEASE                      \
     \                                 12-STABLE
      \
   11-STABLE
 
What I was already planning to do, is to do a fresh install for major releases, or for the next whole number. I'm still using 12.2 now, and I'll install 13.0 with a fresh install. I needed to adjust my partition size anyway. Haven't gotten around to this, because it feels like a big task.

When I install 13.0, I'll use freebsd-update to go to 13.1, 13.2 and so on. The last time I checked, freebsd-update can only be used when running releases and their updates, but can't be used when running stable.

13 Stable isn't listed there yet, but for a new install, I would go with the next newest release of 13, than 12.

Edit: 13 Stable and 13.0 release aren't listed there yet.
 
13 Stable isn't listed there yet
stable/13 was branched off before releng/13.0. It needs to exist before a release version can be branched off. But snapshot images may not exist yet, the focus was on getting 13.0-RELEASE out the door. I'm sure they'll be generated once the release frenzy settles down.

Don't use -STABLE unless you have a reason to do so (doing development, support for a device that's not in the last release yet, etc). Most people should simply use a -RELEASE version. The -STABLE and -CURRENT versions can only updated/upgraded by building from source. The -RELEASE versions can be updated/upgraded with freebsd-update(8) (binary upgrade/update tool).
 
-RELEASE branches are made from -STABLE branches. So in a sense the -STABLE branches are the alpha versions of the next minor release version.
I've made this crude ASCII art before, I really should make a proper picture for it.
Code:
----------------------------------------------------------------------------------------> -CURRENT
\__ 11.0-RELEASE -> p1 -> p2, etc     \__12.0-RELEASE    \__ 13.0-RELEASE
\__ 11.1-RELEASE -> p1 -> p2, etc     \__ 12.1-RELASE    \
  \__ 11.2-RELEASE                      \__ 12.2-RELEASE   \
   \__ 11.3-RELEASE                      \                 13-STABLE
    \__ 11.4-RELEASE                      \
     \                                 12-STABLE
      \
   11-STABLE

Here's a picture for you SirDice :)

FreeBSD_Versions.png


I've attached it as an .svg should you want to update the branch numbers or anything else in the future. There are supported boxes for each row, just edit the class to sup to show or unsup to hide. That class could also be applied to any of the text labels for the horizontal text elements to un/hide those as needed, and they can be easily renamed when 14.x starts up

I share this as public domain / CC0 so feel free to use it wherever you want to :)
 

Attachments

  • FreeBSD_Versions.svg.xml
    29.2 KB · Views: 273
anlashok That's excellent! I'm definitely bookmarking it for future reference :)

pictures do help
Absolutely. In this case it certainly helps a lot to visualize it because I think that's what most new users have problems with, just seeing how the different branches fit together can be quite illuminating.

Because this question comes up quite often, I've stickied the thread too.
 
-STABLE the ABI usually doesn't change; but it may. 99% of the time, it won't but may. Latest was related to drm-kmod stuff in 12.0/12.1/12.2.
The best way is to really pay attention and read all release notes and errata.

I agree that pictures help and thanks for sharing yours anlashok
 
-STABLE the ABI usually doesn't change; but it may. 99% of the time, it won't but may. Latest was related to drm-kmod stuff in 12.0/12.1/12.2.
That's an in-kernel issue, that's not considered an ABI change. ABI (for userspace!) never changes in a -STABLE branch. Therefore, there's only one package repository for each supported major release (packages for 12.1 and 12.2 are the same). This can break when packages contain kernel modules, which is a slight shortcoming in the whole scheme.
 
I think thiere is a deadly confusion in using "stable" in BSD versus Linux practice.
While for the latter "stable" means ... slightly modified, reliable, in short, "for use in production", for BSD it is (essentially) the opposite.
Better not to use STABLE in production, rather a RELEASE.
The subjects of "stable" are different from Linux.

By heart 5 or 6 years ago there was a symposium to change the BSD notation and, unfortunately, they chose this one in "conflict" with Linux.
EDIT: this one https://lists.freebsd.org/pipermail/freebsd-announce/2015-February/001624.html

It's not wrong, but it confuses Linux users.

I don't think this aspect was taken into consideration enough, but I could be wrong.
 
The issue is being raised and discussed and considered constantly. It's just that the conclusion on the part of the developers is always: "The current system makes sense from a development perspective, and everyone else just needs to learn it and stop complaining."
 
That's an in-kernel issue, that's not considered an ABI change. ABI (for userspace!) never changes in a -STABLE branch. Therefore, there's only one package repository for each supported major release (packages for 12.1 and 12.2 are the same). This can break when packages contain kernel modules, which is a slight shortcoming in the whole scheme.
True, KABI vs ABI. But since drm-kmod is moved to a port and it's not really "inkernel" anymore, it still is worth reminding to "read release notes".
 
True, KABI vs ABI. But since drm-kmod is moved to a port and it's not really "inkernel" anymore,
The change is "in-kernel". There are no guarantees about that, still ABI is "stable" in -STABLE, hence the name…
it still is worth reminding to "read release notes".
Definitely, as well as UPDATING, for all sorts of possible issues. But the "kernel module in package" issue is a recurring one, so you can already know there will be problems with such packages during the time two minor releases from the same -STABLE are supported.
The issue is being raised and discussed and considered constantly. It's just that the conclusion on the part of the developers is always: "The current system makes sense from a development perspective, and everyone else just needs to learn it and stop complaining."
If you're talking about this "kmod in package" issue, I really don't think that's what people are telling you. Everyone will be well aware there is an issue. More likely, it's an issue that would require a lot of effort to "fix" (e.g. with a package repository structure also taking Kernel ABI into account) while it only affects packages with kernel modules and only for a period of 3 months, so maybe many think it's just not worth the effort fixing it, because the user can compile these few packages himself for this period of time ;) You're free to disagree of course ;)
 
The branches are named releng/*, which is short for RELease ENGineering, the releng/* branches are the -RELEASE versions.
 
This doesn't need "fixing". It's not broken. Only developers care about this naming scheme and they understand it perfectly. It makes sense. People who want to use anything other than RELEASE will understand the naming scheme.

Users should only use RELEASE.
 
This doesn't need "fixing". It's not broken. Only developers care about this naming scheme and they understand it perfectly. It makes sense. People who want to use anything other than RELEASE will understand the naming scheme.
That is not the reality. The reality is that users download and install the wrong version all the time (myself included back in the day).

Just ask SirDice, who triages most of them these days. Evidence, all from the last couple of months:
  1. this thread
  2. https://forums.freebsd.org/threads/whats-different-about-stable-and-release.78446/
  3. https://forums.freebsd.org/threads/...-for-rx-580-on-stable-12-2.78148/#post-487767
  4. https://forums.freebsd.org/threads/emacs-error.79060/#post-497217
  5. https://forums.freebsd.org/threads/make-buildworld-failed-on-aarch64.79115/#post-496758
  6. https://forums.freebsd.org/threads/pkg-update-error.74260/page-2#post-495579
  7. https://forums.freebsd.org/threads/gnome3-unusable-lags-on-matebook-x-amdgpu.79965/#post-508488
  8. https://forums.freebsd.org/threads/...-to-networking-12-2-stable.79826/#post-506124
  9. https://forums.freebsd.org/threads/...e-i-e-the-installer-proper.80146/#post-509009
  10. https://forums.freebsd.org/threads/...reebsd-13-0-current-r369222.78830/post-493605
Now, you could say that:
  • … all those users are stupid and it's their own fault for doing it wrong, or:
  • … these problems don't matter because it's all about development.
But you cannot say that the naming scheme is working for everyone, because it's clearly not working for all those people above.
 
… all those users are stupid and it's their own fault for doing it wrong
🤷‍♂️

(and yes, somehow this is the case. On the website, you will find the supported releases, and you will find a generic download page that lists the releases first, and in a separate "development snapshots"(!) section downloads for -CURRENT and -STABLE. I think basic reading capabilities should be enough to get it right…)
 
I don't understand, a new user will likely go to https://www.freebsd.org/, then click the big button Download FreeBSD.
From that the first big 3 links are for each supported release. Don't tell me that people that want to try a new Operating System, will scroll down to the section
Development Snapshots
Before choosing an image.

The earlier section are
  • FreeBSD 13-RELEASE
  • FreeBSD 12.2-RELEASE
  • FreeBSD 11.4-RELEASE
 
I suspect many of them find a FreeBSD download through distrowatch or similar sites. If you look at their summary the latest and greatest versions are 14-CURRENT and 13-STABLE. Without any explanation of what the difference between -CURRENT, -STABLE and -RELEASE is.

 
You can sit around the fire and marvel at how dumb everyone is all night, but the fact of the matter is: FreeBSD has a versioning scheme that's confusing for outsiders, it does a bad job at communicating the actual meaning, and nobody cares enough about users constantly installing the wrong version to make any changes.

And therefore, threads like this will keep popping up until the End of Time :)
 
Back
Top