Skip to content

RFC: standalone OpenVMM source releases - #4150

Draft
Ben Hillis (benhillis) wants to merge 6 commits into
microsoft:mainfrom
benhillis:user/benhill/openvmm-release-rfc
Draft

RFC: standalone OpenVMM source releases#4150
Ben Hillis (benhillis) wants to merge 6 commits into
microsoft:mainfrom
benhillis:user/benhill/openvmm-release-rfc

Conversation

@benhillis

@benhillis Ben Hillis (benhillis) commented Aug 3, 2026

Copy link
Copy Markdown
Member

Purpose

Record maintainer consensus on the standalone OpenVMM source-release model before the remaining implementation is split into reviewable changes.

This PR intentionally contains one proposal page and no implementation or generated workflow changes.

Decisions confirmed by feedback

  • the canonical product version lives in root [workspace.package] version
  • every Git checkout reports VERSION+g<SHORT_COMMIT> as a development build
  • exact release-tag checkouts are still development builds; tags are not build-identity inputs
  • Git-free source trees report the plain committed product version
  • Git-free builds do not need another source-commit identity surface initially; one can be added later if needed
  • no OPENVMM_PKGVERSION package override
  • initial identity integration is limited to -V and --version
  • a manual workflow creates a draft and human publication creates the tag
  • the initial distribution gate builds the exact archive with system dependencies and does not use openvmm-deps

Implementation

The first independently reviewable implementation slice is #4162. The remaining archive, distribution-gate, release plumbing, and publication changes will follow as separate PRs.

A feasibility prototype remains available at benhillis#12, but it is not the intended upstream landing shape.

This proposal page is intentionally not added to Guide navigation while it remains an RFC.

Ben Hillis added 4 commits August 3, 2026 21:26
Document the release flow, alternatives, open identity decisions, and phased implementation plan for maintainer consensus.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Limit the initial gate to extracting and building the exact release archive, deferring policy-specific assertions until maintainers agree they are required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Record the preferred archive, package, CLI, and publication directions while keeping development and exact-tag identities open for maintainer feedback.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Remove tag- and workflow-derived product versions from the release proposal alternatives.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an RFC/proposal page to the Developer Guide describing a potential model for producing “standalone” OpenVMM source releases suitable for Linux distribution builds, with an emphasis on separating policy decisions from implementation details.

Changes:

  • Introduces a new proposal document outlining goals, a candidate release flow, and an initial distribution-build gate.
  • Enumerates explicit “decisions requiring consensus” to guide maintainer feedback before implementation work is split into follow-up PRs.

Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release_proposal.md Outdated
Choose revision-suffixed identity for every Git checkout, clarify system dependencies, and document correction releases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Copilot AI review requested due to automatic review settings August 4, 2026 17:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (2)

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:127

  • The placeholder <9-character-commit> doesn’t follow the Guide’s documented placeholder convention (<SCREAMING_SNAKE_CASE>). Using a stable name like <SHORT_COMMIT> is also easier to reference consistently across docs and code.
**Proposal:** A normal Git checkout reports
`<VERSION>+g<9-character-commit>`, identified as a development build.

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:5

  • This page lives under Guide/src/ but is not referenced from Guide/src/SUMMARY.md, so mdbook will not render/publish it and it will be effectively orphaned after merge. If the intent is to keep the RFC out of published Guide navigation, consider moving it outside Guide/src/ (e.g. a repo-level rfcs/ area). If it should be part of the Guide, add it to SUMMARY.md under the appropriate section (and mark it clearly as an RFC in the title).
# OpenVMM Standalone Source Release Proposal

This page proposes how OpenVMM should identify builds and publish standalone
source releases for Linux distributions.

Record that Git-free builds need only the committed product version initially and that another source-commit surface can be added later if needed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (5)

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:146

  • The PR description indicates Git-free source trees reporting plain <VERSION> is already a confirmed decision, but this section is still labeled "Proposed direction". Aligning the status label with the PR description would keep the RFC’s decision tracking consistent.
**Status: Proposed direction**

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:171

  • The PR description says the "no OPENVMM_PKGVERSION override" decision is confirmed, but this section still says "Proposed direction". Updating the status label would prevent ambiguity for downstream readers.
**Status: Proposed direction**

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:189

  • The PR description lists limiting identity integration to -V/--version as already confirmed, but this section is still marked "Proposed direction". Consider updating the status label to reflect the described consensus.
**Status: Proposed direction**

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:200

  • The PR description indicates manual draft publication is already a confirmed decision, but this section still labels it as "Proposed direction". Aligning the status label with the PR description would make the RFC’s state clearer.
**Status: Proposed direction**

Guide/src/dev_guide/contrib/openvmm_release_proposal.md:112

  • The PR description lists the canonical product version location as a decision already confirmed by maintainer feedback, but this section still marks it as "Proposed direction". Consider updating the status label to match the PR’s stated consensus to avoid confusing readers about what’s still under discussion.

This issue also appears in the following locations of the same file:

  • line 146
  • line 171
  • line 189
  • line 200
**Status: Proposed direction**

Ben Hillis (benhillis) added a commit that referenced this pull request Aug 5, 2026
## Summary

- document private vulnerability reporting and MSRC-owned coordinated
disclosure
- define case-by-case advance sharing with qualified downstream security
teams
- describe simultaneous publication of the public fix, patch-version
source release, advisory, and CVE
- keep internal repository, build, deployment, and customer-operational
details out of the public guide

## Context

This is a draft policy for team and downstream consensus. It assumes the
source-only, manually published standalone release model proposed in
#4150; it does not add or change release implementation.

## Questions for reviewers

- Are the eligibility and handling rules for advance patch sharing
sufficiently strict and clear?
- Is the incident-specific hosted-service deployment exception
appropriate?
- Is the patch-version release and supported-version language the right
public commitment?

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Comment on lines +89 to +90
`pkg-config`, and Protocol Buffers compiler. OpenHCL, test, and firmware assets
from `openvmm-deps` are outside this build.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we exclude the openhcl/ folder from the source archive? And maybe other bits too?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep we could, let me see if there's a clean way to do this. We could also defer this to later if it makes things too complicated right now.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should be able to build openvmm without the openhcl folder present, but i suppose it might cause some weirdness if our root Cargo.toml is still referencing it...

**Proposal:** A normal Git checkout reports
`<VERSION>+g<9-character-commit>`, identified as a development build.

This distinguishes commits made after the latest release even while the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we also include a dirty marker, to distinguish between clean checkouts and non?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call, let's do this.

Comment on lines +150 to +161

The published archive necessarily lacks `.git`, so the committed Cargo version
is the only identity available.

The initial binary identity does not separately expose the source commit for a
Git-free build. The release tag, target, and provenance identify the published
source, and another binary surface can be added later if needed.

This classification is descriptive, not proof that arbitrary Git-free source
is official. Consumers must verify the source archive's checksum and
provenance attestation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I vote for the proposal and against the alternative, for the reasons already given in the text

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed.

Comment on lines +117 to +121

This makes the version available to Cargo and to downstream builders without
requiring Git metadata.

### 2. Development-build identity

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should make sure there's a check in the release workflow that a given version number hasn't already been released.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep that's already there.

Comment on lines +167 to +179
differently unless every packager reproduces the release environment.

### 5. Distribution package override

**Status: Proposed direction**

**Proposal:** Do not add a package-version override. The OpenVMM binary reports
the committed product version, while a distribution records its package
revision in its own package metadata.

This is independent of release identity. Builds from the published archive
already recover the committed Cargo version without an environment variable.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I vote for the proposal and against the alternative, for the reasons already given in the text

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree

Comment on lines +185 to +190
and is not required to build an official source archive.

### 6. Identity integration surfaces

**Status: Proposed direction**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be fine with doing windows VERSIONINFO now to match the cargo version, but I'm ok with holding off too. The rest I think warrant more discussion.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah having the windows version info match cargo version (probably with an extra .0 because windows versions are 4 numbers).

Generated workflow files would land with the Flowey source that produces them.
Each phase would remain buildable and testable before the next phase begins.

## Review guidance

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even if there are, nothing stops maintainers from changing the cargo version themselves.

Comment on lines +196 to +204
They should be added only when their consumers and value are clear.

### 7. Manual draft publication

**Status: Proposed direction**

**Proposal:** A manually dispatched workflow creates a draft GitHub release.
A maintainer reviews the ordinary GitHub draft and clicks **Publish release**,
which creates the tag at the workflow's pinned commit.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I prefer the proposed option here, it feels to me like it's keeping more things automated, and therefore less can go wrong.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep agree.

Ben Hillis (benhillis) added a commit that referenced this pull request Aug 7, 2026
Adds the reusable release-publication primitives needed by the
standalone OpenVMM source release described in #4150.

- makes release notes and existing-release handling explicit
- allows callers to require validation/attestation side effects before
publication
- distinguishes a missing release from `gh` authentication or server
failures
- adds a reusable `actions/attest@v4` Flowey node
- preserves the existing VmgsTool draft, `TODO` notes, and skip-existing
behavior

This is independent of the build identity work in #4162 and does not yet
add the OpenVMM publication workflow.

---------

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Copilot-Session: 4fe65aa5-d620-4856-a525-e32bf98c16b1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants