Here is what I am asking. When a Software developer or a software company Releases software. They general release what they believe is the Stable Version to the world.
No, wrong assumption. Not in the open source universe. Many open source projects have become so popular that their developers could found a company to sell support (& changes or add-ons to meet special requirements) to their commercial customers. The effect is that releases to the rest of the world are shiny new & thus, buggy. I.e., non-paying users are non-paid testers. Take it or leave it.
Which Branch or repo or release is that on FreeBSD?
Concerning the ports: none. For the FreeBSD kernel & base: The
release revisions. IIRC, you can stay on 11.x-RELEASE for about a year from now, and switch to 12.3 when 11.x goes EOL.
Not looking for perfection looking for the General available production version, not the developmental/testing/alpha/beta version.
You don't need to be scared. Many popular software in the ports tree is quite stable, their quality is often much better than commercial-only software, and we can call them
production quality. OTOH, you'll find many crap as well. Just don't use it.
I just dont understand FreeBSD jargon. I came from Linux. These Open source project release a master version it's what they consider stable. This what am looking for. In a general example Debian has stable - testing - unstable
https://www.debian.org/releases/. What is the equal on FreeBSD? I want stable not testing and not unstable.
See above. FreeBSD has
current (developer's version),
stable (shiny new, but may contain bugs; many use that on desktop machines), and
release (for use on production machines). So unless you need a new feature, you want to run a
release version on production servers, and run
stable in your test lab to detect & fix (or help fixing) bugs & incompatibilities early.
another example Exim is on version 4.94 as stable
https://www.exim.org/. Apache is on 2.4.46 as stable release. Are these Quarterly or Latest or Neither.
Remember that the quarterly branch equals the latest branch at the time when it is split off.
Code:
root@t450s:~ # foreach port ( mail/exim www/apache24 )
foreach? echo "[$port]"
foreach? diff /ports/{quarterly,latest}/$port/Makefile
foreach? end
[mail/exim]
2c2
< # $FreeBSD$
---
> # $FreeBSD: head/mail/exim/Makefile 556289 2020-11-25 12:36:05Z fluffy $
[www/apache24]
1c1
< # $FreeBSD$
---
> # $FreeBSD: head/www/apache24/Makefile 544237 2020-08-05 18:29:28Z brnrd $
Ergo: they are identical. If the port's versions would differ, that would be in the
Makefile's
PORTVERSION
. But when Apache releases 2.4.47, it will 1st appear in
latest, and 3 month later in
quarterly. That's why pinning port revisions is so common: noone of sane mind would call a software
stable after only 3 month of testing. A more reasonable approach is to give it at least 3 years. I'm not kidding here.
Well assume you have seperate locations where that code is stored like Stable - Testing - Unstable based on the status of the code from the other project. I dont know as I am new to FreeBSD.
There's no such notion for the ports tree, except the
quarterly branch. But, as you already know, that one is identical to
latest (i.e., head trunk) every 3 month.
FreeBSD 12.2 the quote Stable branch. I think you all call it RELEASE
Misunderstanding. The
head (main trunk) of every
major release branch is called
stable, and gets cherry-picked feature updates from
current (called
MFC: merge from current), as well as security fixes. When enough MFCs have accumulated, a new
minor release is split off. I.e. currently there is 11-STABLE, 12-STABLE, and 13-STABLE. There is no 11.4-STABLE, nor 12.2-STABLE, but 11.4-RELEASE, 12.2-RELEASE, and soon 13.0-RELEASE. The security & bug fixes are denoted by the so-called
patch level appended to the release name, e.g. 12.2-RELEASE-p3. In this process, the cherry-picking of MFCs is done conservatively.
Most confusing is STABLE which seems to be Development.
Yes, that is misleading; it is an historical accident that was never corrected. Again, this is a misunderstanding. Development takes place in
current.