I think in 2018 we have the opposite situation.
"-STABLE refers to the programming API/ABI used by the kernel and base applications and libraries. IOW, developers can write applications and drivers for 6.0 and that same binary and driver will work on 6.9 " - this is actually what i needed but can't get with a new FreeBSD release model.
I think there's a bunch of confusion here. Let me see if I can explain some things:
1) A "major version" of FreeBSD is supported for a minimum of 5 years from the release of the x.0 version. So FreeBSD 11 is supported for 5 years. That doesn't mean you can install 11.0 and expect support for 11.0 for the whole 5 years. First, you need to keep up with security patches (the -p# in the release name). After 11.1 comes out, you have 3 months to update your system before 11.0 becomes unsupported. You get to 11.1 via the same method you installed the -p# patches (there are a variety of methods, freebsd-update is the one normally suggested for end users).
2) There is a difference between FreeBSD "base" (what the developers are 100% responsible for [more or less - contrib and some other parts are special cases]) and "ports" (which are adaptations of other software, for example
net/samba48). Ports have a defined maintainer in the FreeBSD development environment, but that maintainer is just responsible for keeping the port up-to-date with "upstream" and dealing with any bug reports that seem to be FreeBSD-specific. There are a number of different ways to update your installed ports, and again you need to stick with one method.
3) There is no guarantee that new installs of ports (pulling pre-built binaries from a FreeBSD distribution server) will work properly on anything but the latest release of a particular version. That is another reason to keep your base system up-to-date (see item 1 above).
4) Mix-and-match definitely does
not work. You use freebsd-update, build from source, or some other method to keep "base" updated. You either use packages (pre-built binaries) for "ports", or you build from source. You use one of the 2 methods to keep your ports updated if you build from source - portmaster or portupgrade. You
cannot start with one method and then change to the other, unless you are an expert and understand the steps you need to take to handle the conversion (and any ensuing fallout).
5) The issue you seem to have is an installation of a new port (from packages) on an unsupported release. Remember, you have 3 months after the next "dot" release comes out to update your system. Refer to
https://www.freebsd.org/releases/ for supported and unsupported releases. It is likely that if you built the port from source, it would not give you this error. However, see the previous item about not mixing and matching methods of installing / updating ports.
6) The FreeBSD ABI is quite stable and upwardly compatible on any given major version. Note that I said upwardly compatible - a program built on 11.0 should run on 11.2 without any problems, but a program built on 11.2 may or may not run on 11.0. I think this is what you ran into with your port. Additionally, the ABI is compatible with most programs compiled under [much] older FreeBSD versions. The kernel part of this is controlled by the "COMPAT_FREEBSDx" build options (default on). This provides backward compatibility with specific older versions of FreeBSD (except for COMPAT_FREEBSD32, which is for 32-bit support on 64-bit systems). The library part of this is handled by various ports - for example,
misc/compat10x for compatibility with user binaries from FreeBSD 10. I just checked and I can run a (non-trivial - 500K source lines) binary compiled on FreeBSD 6.3 i386 on FreeBSD 11.2 amd64.