LTS support and version clarifications

I don't know if belongs in this thread. But what happened to point releases ?
Kernel X point release Y was a good idea. How is it replaced ?
 

zirias@

Developer
the fact of the matter is: FreeBSD has a versioning scheme that's confusing for outsiders
No. Maybe it's a "Linux expatriate syndrome" or something jumping on -STABLE and totally misunderstanding it, but if you don't know what a RELEASE is, you have problems not solvable on FreeBSD's side. SirDice's theory makes a lot more sense here…
it does a bad job at communicating the actual meaning
Where exactly? What's unclear about the download options offered at FreeBSD's website? Stuff like "distrowatch" is out of FreeBSD's control.
 

SirDice

Administrator
Staff member
Administrator
Moderator
I don't know if belongs in this thread. But what happened to point releases ?
Kernel X point release Y was a good idea. How is it replaced ?
They still exist, 12.2 is a point release, 11.4 is a point release. But you're probably referring to the old support scheme where odd minor versions had two year support and even minor version one year. That went out the window from 11.0 onward. The problem was that it had a relatively short support period (2 years max) and too many different versions had to be supported at once. Now every major version is supported for at least 5 years and only the latest minor version of a major version is supported.
 
No. Maybe it's a "Linux expatriate syndrome" or something jumping on -STABLE and totally misunderstanding it

There is a culture in the open-source user community to always be on the latest and greatest (probably drilled into their minds by consumer IT companies trying to (re)sell more). They will always choose the bigger number without knowing what it actually means.

So they should consider this a learning experience.
 

zirias@

Developer
There is a culture in the open-source user community to always be on the latest and greatest
Well, I jumped on 13 as soon as it reached the "release candidates" phase, so I might be "infected" as well ;)

But using development snapshots "just because" is a whole different story… and if sites like distrowatch indeed offer snapshots of a stable development branch without any explanation, there you have (part of) the problem.
 
it does a bad job at communicating the actual meaning
No it doesn't. Outsiders and these users you speak of don't take the time to understand what they are reading or clicking on. Yes it is the user's fault. People who are not your grandma but who are presumably technically literate.
 
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, ...
If you want to use a complex tool, such as an operating system, you need to stop being an outsider. You need to actually read the instructions. *BSD is very different from Linux, except superficially. The way you use it (from a GUI and at user level) might be pretty similar; the way you administer it is somewhat different (for example /usr/local versus /usr for packages), but more importantly, the underlying philosophy (for example of base versus packages, or how to document things, or decomposition into separate subsystems) is VERY different. If you don't understand these differences, you will not be a happy user.

Famous old story, of some sort of intelligence test: The first instruction on the page says "read all instructions to the end before doing anything else". Then it is followed by "Write you name in pen on the box in page 7", and "tear of the serial number of the test from the title page and save it in your pocket", and goes on and on. The very final instruction is "ignore all other instructions, answer questions 1 through 10 using a pencil, then hand the completed test back to the instructor". Most people return the test with a corner missing and their name written in pen, and fail.

If a place like distrowatch links to stable and current releases, they are not doing their readers any favor. That's their choice, and their stupidity. Not my job to fix distrowatch's stupidity, I have enough problems of my own.
 
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).
Maybe those who didn't bother to read up about the stuff they grabbed, but is that really of any concern? Those would be the same people - in my opinion obviously - who'd also happily download malware for Windows only to end up blaming Microsoft because their Windows environment runs so slowly. Surely it can't be because of them.

In the end this a user problem, and a non-issue if you ask me. If you don't bother to read up on something before using it... yah, you may run into problems. Solution: wise up and read up.
 
-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 is p1 and p2?
 

SirDice

Administrator
Staff member
Administrator
Moderator
Yep, they're security and/or errata patches for that release.

 
Yep, they're security and/or errata patches for that release.

Is it correct to say that errata patches fix serious bugs that are not security vulnerabilities?
 
OK, suitably chastened here after reading this thread, BUT stuck at the moment on 13-SABLE. Is there a path to RELEASE without throwing away applications and user details?
 

SirDice

Administrator
Staff member
Administrator
Moderator
Is there a path to RELEASE without throwing away applications and user details?
-STABLE is the next minor release. As there's no 13.1-RELEASE on the horizon yet, so you would basically be 'downgrading' back to 13.0-RELEASE. If/when you want to switch from -STABLE to a -RELEASE the best moment is to wait just before the imminent release of that next minor version. Until then you should just keep up to date with -STABLE. And yes, you can switch from 13-STABLE to a -RELEASE without having to reinstall from scratch. You just need to checkout the correct release branch (when it's available), then build and install it. One of my systems I upgraded from a 12-STABLE to 13.0-RELEASE. And I've done similar conversions in the past.
 
It's timely to quote from <https://forums.freebsd.org/profile-posts/comments/6137/>:

… New development is always done on -CURRENT first. If things are interesting or good enough to make it into the -STABLE branches, they are MFC'ed. From the -STABLE branches the next minor releases will be made. So changes to stable/13 that are done now will eventually end up in 13.1-RELEASE when that gets released.

<https://docs.freebsd.org/en/books/handbook/glossary/#_m>

The phrase "hacking on CURRENT" comes to mind, although I can't recall where it was written/said.

Also:
  • merges to stable/12 are naturally less frequent than merges to stable/13
  • both RELEASE and STABLE are supported – <https://forums.freebsd.org/posts/224513> (2013) point 2 helps to put this in context
– these things are particularly noteworthy in the context of discussions such as Radeon-specific <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247441#c34>.
 
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 :)

I couldn't agree more. I heart FreeBSD, but the naming is nuts. I have read the various explanations many times and they all smack of after the fact rationalizations that still fail to convince. Maybe it's like which side of the road do you drive on, dunno but stable being dev is crazy. That said, anytime I need it, I just come find one of these threads and get reminded.
 
FreeBSD (simplified) development model for diehard linux users

Trouble with understanding by linux enthusiasts FreeBSD development model stems from the fact, that for both camps word "stable" means different things. In FreeBSD stable is correlated with "stability" (alas, I don't know how to explain to linux user the word "stability", it definitely has nothing to do with ability for stabbing) while in Linux it's a place where you keep your horses programs.

Linux distro development looks like this: you gather all Racing Candidates you've noticed in the wild to close them in a Stable. Then you open the gates to the stable*, so this stage is called RELEASE. From now on, users try to use and evaluate your horses programs, and this is a second stage called TESTING. Finally, when all horses programs are secured and well tested by users project enters the third and final stage called OBSOLETE.

In FreeBSD it looks different, current code is gathered all the time, that's why this "stage" is called CURRENT. Then comes the time when you must decide what features and programs you want to release and create a fork of CURRENT containing them. From now on they become more stable - they don't change as drastically and as often as in CURRENT, so this stage is called surprisingly STABLE, and lets you properly test them. Finally, when all programs are tested and work well together, everything is released to the public as a RELEASE. I know it's very complicated and hard to understand/remember but I think it's worth the effort.

*In rolling release model the gates are always open.
 
Code:
          .      '      .
    .      .     :     .      .
     '.        ______       .'
       '  _.-"`      `"-._ '
        .'                '.
 `'--. /                    \ .--'`
      /                      \
     ;                        ;
- -- |                        | -- -
     |     _.                 |
     ;    /__`A   ,_          ;
 .-'  \   |= |;._.}{__       /  '-.     
    _.-""-|.' # '. `  `.-"{}<._         
          / 1938  \     \  x   `"  _________
     ----/         \_.-'|--X----  < RELEASE >
     -=_ |         |    |- X.  =_  ---------
    - __ |_________|_.-'|_X-X##           \   ^__^
    jgs `'-._|_|;:;_.-'` '::.  `"-         \  (oo)\_______
     .:;.      .:.   ::.     '::.             (__)\       )\/\
                                                  ||----w |
                                                  ||     ||

                                                  /|___
                                                ///|   ))
                                              /////|   )))
                                            ///////|    )))
                                          /////////|     )))
                                        ///////////|     ))))
                                      /////////////|     )))
                                     //////////////|    )))
                                   ////////////////|___)))
                                     ______________|________
                                     \       STABLE        /
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >
≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅≅  C           T  ≅≅≅≅ >
                                                 U       N
                                                   R R E
 
… I could not successfully build 14.0 (no make or src confs, even when llvm12 was set over current llvm13). I was instead using 13.0-Stable, …

If you mean that you could not upgrade from stable/13 to main (to 14.0-CURRENT): that's extraordinary, because I accidentally did so – with ease – twenty-two days ago:

1643004346392.png

The accident was my fault. A simple mistake with my choice of source code.

Technically, 13-current would be 13.0-Stable, which will become 13.1. So that is how my use of the word current came to be.

Technically: 14.0-CURRENT began (13.0-CURRENT ended) a few months ago.

Re: the two artworks on page 1 (ASCII, adaptation):
  • things from 14.0-CURRENT are frequently merged from main into stable/13
  • things from stable/13 are periodically release engineered into releng/13.0.
A GitHub view of the three branches:

1643005050396.png

14 would be highly unstable to use now.

YMMV.

For my non-complicated use case – KDE Plasma and various popular applications, FreeBSD 14.0-CURRENT is perfectly stable, in that it's extremely rare for me to require an inferior ZFS boot environment.

Re: the artwork above, I lay back and let the waters carry me. I'm ahead of the stable boat-goers, and no less contented than the cow on dry land.

It's a pleasantly fast-flowing current. The lifebelt of boot environments is worn at all times, so there's never a fear of being dragged below the surface. Simply hold my breath for a few seconds, then I'm up again, into the sunshine.
 
So in a sense the -STABLE branches are the alpha versions of the next minor release version.
This is what I meant with the use of 13.0-CURRENT being 13.0-STABLE, which will "come to be" 13.1-RELEASE.
<Dialect & *vium in action>
 
I still don't get it... 😔
Based on what I know. Guys if I made a mistake, please correct.

At this time we have 3 major versions for FreeBSD:
12.x [stable]
13.x [stable]
14.x [current]

Versions 12.x and 13.x are versions that you can install.
Version 14.x it's being developed and tested. This is actually a trial version and is commonly used by FreeBSD developers. They want to check for bugs and possible problems so that we can have a stable and quality operating system later.

Each major version is alive for 5 years and each new minor version is released every year for it: (each major version has 5 minor versions that start from 0 to 4). look at this:

| Year | Version |
| ------------------ |
| 2021 | 13.0 |
| 2022 | 13.1 |
| 2023 | 13.2 |
| 2024 | 13.3 |
| 2025 | 13.4 |

We don't have version 13.5. after this we'll use version 14.x :)
So let's back to the versions that we have.

Version 12.3 is released in 2021 and version 12.4 (last version of 12.x) will released in December 2022 and will probably be developed until December 2023 and then its development stops. The rest of the versions will developed in the same way.
 
Top