why donāt they use a friendlier naming scheme? such as 0.18.1a 0.18.1b 0.18.2 ?
You know they are desperate for patches when their version is BE: 0.18.1-rc.9-14-ge71951309
Because rc means release candidate. Itās the step after beta testing but before release, and (normally) isnāt meant for use by the general public.
software has a very standardized version numbering system actually. Itās not required (eg dwarf fortress), but a lot of programmers like to use it. 0.18.1-RC.1 is actually super useful for version tracking. Friendliness is actually not the goal at all, itās to be completely unambiguous about the stages of development.
The 0 is the major version number. Usually it reaches 1 when itās reached a certain milestone or a change intentionally breaks compatibility with 0
.18 is the minor version number. This increases when a big patch comes through. Sometimes this can break compatibility, but thereās no real standard to decide between major and minor versions. In general, the major and minor version numbers are the only important ones for users.
The .1 is called a point version. Itās meant to indicate minor patches to the minor version. Thereās almost never a risk for compatibility to break, and generally itās unnecessary to update for a new point version.
RC.1 is very uncommon for users to know about. It stands for āRelease Candidateā, so since itās attached to 0.18.1 that means that the version is about to be released. It also means that the version is in active development and not ready to be released yet. Every time thereās a new RC, that means there was a bug that caused major issues.
Using rc for release candidates is pretty standard. A lot of times they would have 18.1b1, 18.2b2, etc. for betas, the when they are close to releasing, it would become 18.1rc1, 18.1rc2, etc. And once no one finds any more issues with your release candidates, you rename it 18.1 and you are done.
As others have mentioned thereās a standardized versioning scheme that most developers use and that standard is semantic versioning: https://semver.org. There are other standards too and not every development team uses a standard that is externally recognized standard.