Skip to main content
Version: Next

Metal Stack Enhancement Proposals (MEPs)

This section contains proposals which address substantial modifications to metal-stack.

Every proposal has a short name which starts with MEP followed by an incremental, unique number. Proposals should be raised as pull requests in the website repository and can be discussed in Github issues.

The list of proposals and their current state is listed in the table below.

Possible states are:

  • In Discussion
  • Accepted
  • Declined
  • In Progress
  • Completed
  • Aborted

Once a proposal was accepted, an issue should be raised and the implementation should be done in a separate PR.

NameDescriptionState
MEP-1Distributed Control Plane DeploymentDeclined
MEP-2Two Factor AuthenticationAborted
MEP-3Machine Re-Installation to preserve local dataCompleted
MEP-4Multi-tenancy for the metal-apiIn Progress
MEP-5Shared NetworksCompleted
MEP-6DMZ NetworksCompleted
MEP-7Passing environment variables to machinesDeclined
MEP-8Configurable FilesystemlayoutCompleted
MEP-9No Open Ports To the Data CenterCompleted
MEP-10SONiC SupportCompleted
MEP-11Auditing ^of metal-stack resourcesCompleted
MEP-12Rack SpreadingCompleted
MEP-13IPv6Completed
MEP-14Independence from external sourcesCompleted
MEP-15HAL ImprovementsIn Discussion
MEP-16Firewall Support for Cluster API ProviderIn Discussion
MEP-17Global Network ViewIn Discussion
MEP-18Autonomous Control PlaneIn Discussion

Proposal Process

  1. Before starting a new proposal, it is advised to have a quick chat with one of the maintainers.
  2. Create a draft pull request in the website repository with your proposal. Your proposal doesn't have to be finished at this point.
  3. Share the PR in the metal-stack Slack and invite maintainers to review it.
  4. The review itself will probably take place in multiple iterations. Don't be discouraged if your proposal is not accepted right away. The goal is to reach consensus.
  5. Once your proposal is accepted, create an umbrella issue in the relevant repository or when multiple repositories are involved in the releases.
  6. Other issues should be created in different repositories and linked to the umbrella issue.
  7. Unless stated otherwise, the proposer is responsible for the implementation of the proposal.

How to Write a Good MEP

In the first section of your MEP, start with the current situation and the motivation for the change. Summarize your proposal briefly.

Next follows the main part: describe your proposal in detail. Which parts of of metal-stack are affected? Are there API changes? If yes, describe them and provide examples here. Try to think of side effects your proposal might have. Try to provide a view on how your proposal affects users of metal-stack. Highlight breaking changes and think of a migration path for existing users. If your proposal affects multiple components, try to describe the interaction between them.

After the main part of your proposal, feel free to add additional sections, e.g. about alternatives that were considered, non-goals or future possibilities.

Depending on the complexity of your proposal, you might want to add a section about the implementation plan or roadmap.

You can have a look at the existing MEPs for inspiration. As you will notice: not every MEP has the same structure. Feel free to structure your MEP in a way that makes sense for your proposal.