-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
comments about rule 5: "Specify software versions"
- A version number is not reliable, usually it cannot be formally guaranteed that an artifact identified by name and version is unique. There were examples where packages were repackaged due to errors in included license terms. This should normally of course have no effect on the build result, but it can be. In a very different environment (i.e. not docker) once (and many years ago) I had a case in my team where a library returned a identifier string (version string) that was copied into a static sized buffer, which overflowed and lead to a crash right at the start of the application linked against that library. The version string was “fixed” without changing the version number because “legal reasons” but got a few characters longer, and in a combination with other issues lead to the buffer overflow.
- Nowadays we can observe another bad habit called semantic version https://semver.org/spec/v1.0.0.html. Where a library is available in version
1.2.3and version1.2.4and1.2.3needs to be patched, a strong branch-able version scheme would introduce1.2.3.0.1(yes, two more digits are required for the general case), but with SemVer people are just lost. They try to address some issues in their2.0.0version, which would allow to call the1.2.3patch1.2.4-<ALPHATAG>, because1.2.4-<alphatag>is between1.2.3and1.2.4, but it is at least counter intuitive and still broken by design.glibchad a famous license issue and presented versions with a postfixeda, like1.23a(I don’t recall what versions were affected). Any other project can choose any other scheme and each breaks reproducibility. Local copies are required. - Versions of forcibly used local copies technically don’t matter. In short: The system must be stable even for bad versions - which in turn means, versions don’t need to be good.
Metadata
Metadata
Assignees
Labels
No labels