I need to understand the Linux versioning system and distribution concepts. what are public, stable or final terms for versions?
Kernel versioning is independent of distro versioning, except to the extent that distros include patches of their own. This is indicated by tacking an extra identifier onto the version, e.g.:
3.16.6 is the version of the vanilla (unmodified) kernel, and
-203 is appended by the distro to indicate the relative version of their modifications to it.
It's not necessary for you to understand that in any depth, just that the Linux kernel is an independent entity. Distros combine it with userland software and (in most cases) everything is precompiled to work together on a specific computer architecture (the most common one today being X86-64; some distros call this AMD64 -- they refer to exactly the same thing).
Most of the fundamental userland software actually comes from GNU, an organization distinct from that of the Linux kernel, hence the proper generic name for the OS is usually considered to be "GNU/Linux".
Software is bundled together in repositories managed by the distribution. When you install software, it comes from a default repository (e.g. "stable"), but you may configure the system to use a different one (e.g. "testing") to access different versions of individual things by default. You might also be able to specify a version and if it is not in the default repository, the installer will check a list of others for it.
Distributions come in two different sorts with regard to versioning themselves. While individual software is always being updated, most distros are also upgraded as a whole occasionally, e.g., from Ubuntu 12.x to Ubuntu 13.x. This enables them to make sweeping changes that might be too difficult to do otherwise. However, some distros instead use a rolling release model where there are not distinct releases, there is just one continuously updated version.
To summarize, the concept of versioning might apply to:
- The Linux kernel, an independent piece of software.
- Distribution releases, which often have nicknames (e.g. Ubuntu 14.10: "Utopic Unicorn", or Fedora 20: "Heisenbug").
- The version of individual packages in a distro, which are usually separated into distinct repositories. Like the kernel, these have independent sources that may be modified slightly by the distribution packagers.
- The "target architecture" a package is compiled for (e.g. X86-64). These may also be separated into repos.
An example of a full package version string, which combines several of these things:
This is for a Fedora .rpm but other distros use similar schemes.
Foobar is the package name,
4.11.3 is the version of the source used,
-4 indicates the version of the patches applied by Fedora,
f20 is the distro version for which this package was compiled, and
x86_64 is the architecture for which it was compiled.
Since you mentioned you're new to Linux I'm going to assume you mean you're new to the Linux Distributions. Linux is 'only' the kernel to a distribution. To call Debian, RedHat, Ubuntu and others Linux would not be correct. A distribution comprises of a Linux kernel + a whole range of programs around it to give it more functionality.
So to take Debian as an example: (a lot of distributions are based on Debian)
stable distribution contains the latest officially released distribution of Debian.
This is the production release of Debian, the one which we primarily recommend using.
testing distribution contains packages that haven't been accepted into a
stable release yet, but they are in the queue for that. The main advantage of using this distribution is that it has more recent versions of software.
unstable distribution is where active development of Debian occurs. Generally, this distribution is run by developers and those who like to live on the edge. In Debian the
unstable distribution is called sid.