Skip to content
This repository was archived by the owner on Feb 11, 2025. It is now read-only.
This repository was archived by the owner on Feb 11, 2025. It is now read-only.

Requiring semver does not allow for build versioning #266

@npmccallum

Description

@npmccallum

Software supply chain flows from upstream(s) through a builder and into a binary artifacts repository (i.e. Bindle). Both the upstream source and the builder can provide versioning information. Bindle's requirement that bindle names must be semver forces an assumption that each upstream source version has exactly one corresponding build. This assumption doesn't play out in practice.

In any sufficiently large software supply chain, one upstream source may produce many builds. For example, a compiler bug may produce a vulnerability during build (this happens with unfortunate frequency). Thus, one can resolve a security vulnerability by producing a new build but without modifying the source code. Compiler bugs, toolchain bugs build system bugs and even metadata bugs are all unfortunate realities that are produced by the build process.

In some limited cases, it might be possible to force the upstream source to change its source code version for every build. But this is not a common case. In fact, in open source, it is almost never the case since the upstream and builder are two distinct entities.

Put simply, for any given binary artifact there are two versions: the upstream source version and the build version. I don't see any way for Bindle to represent that today.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions