Skip to main content

Governance

FEMU is developed in the public MoatLab/FEMU repository. This page separates the rules that are in effect today from a proposed charter that is open for comment. Writing that charter with the community is one of the three objectives of FEMU's NSF award (community page).

In effect today​

These rules come from the repository's CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md. Where this page and those files differ, the files win.

TopicRule
Design firstOpen an issue for a new feature so the design is agreed before the code is written
Behaviour changesA feature that changes device behaviour is opt-in (a device property, off by default) unless it fixes a bug
TestsEvery fix and feature carries a test that fails without the change and passes with it
Stylescripts/checkpatch.pl reports no errors or warnings; QEMU coding style
ProvenanceEach commit is signed off (git commit -s) under the Developer Certificate of Origin
ReviewA maintainer responds to a pull request within 72 hours
ConductEvery project space follows the Code of Conduct
SecurityVulnerabilities are reported privately through GitHub, acknowledged within 3 business days

Today the project lead at Virginia Tech's MoatLab merges changes and sets priorities, with the roadmap as the public record of what is planned.

Proposed charter (draft for comment)​

Not adopted

This section is a proposal. It takes effect only after the comment period below and a decision recorded in the repository. Until then, the rules above are the only ones in force.

The proposal follows the pattern of mature open-source projects such as HPX and gem5: named roles, a default decision rule, and a short list of decisions that need more than that.

Roles​

RoleWhoCan
UserAnyone who runs FEMUAsk questions, report issues, propose changes
ContributorAnyone with a merged change, review, test, tutorial or docReview pull requests and vote in discussions (advisory)
ReviewerA contributor named for one area (a mode, the FTL, the NVMe front end, CXL, docs)Approve pull requests in that area
MaintainerA reviewer trusted with the whole treeMerge, cut releases, triage security reports
Steering groupThe maintainers plus up to two contributors elected by contributorsDecide what the default rule cannot, below

A contributor becomes a reviewer, and a reviewer a maintainer, when an existing maintainer nominates them in a public issue and no maintainer objects within seven days. Inactive roles (no review or commit for twelve months) become emeritus and can be restored the same way.

How decisions are made​

  • Default: lazy consensus. A pull request or proposal that meets the rules above and draws no reviewer objection within 72 hours of a review request can be merged by a maintainer. An objection must say what would resolve it.
  • Needs an issue and a reviewer's approval: a new device mode, a new device property, or any change to guest-visible behaviour.
  • Needs a steering-group majority: changes to this charter, to the licence, to the Code of Conduct, adding or removing maintainers when there is an objection, and the release schedule.
  • A release cannot be blocked by a single objection once the steering group has scheduled it; known issues go in the release notes instead.

Decisions are recorded where they are made: in the pull request, the issue, or a dated note in the repository for steering-group votes.

Releases​

The proposal is a tagged release at least twice a year, each with a changelog section, a documentation snapshot on this site, and the commit this site's manual was synced from.

Conflicts of interest​

Reviewers and maintainers disclose an employer or funding interest in a change they review, and step aside from deciding on it when another reviewer is available.

Comment on the proposal​

Comment in GitHub Discussions, on Discord, or on the mailing list. Say which part you would change and why. To help maintain a subsystem now, open a discussion with your relevant contributions and the area you want to review.