Skip to content

Commit 7d2aaf1

Browse files
authored
Merge pull request #53 from prometheus/proposal-ids
proposal: PROM-<number> Proposal Referencing
2 parents 1592414 + bbbeb4b commit 7d2aaf1

File tree

3 files changed

+66
-4
lines changed

3 files changed

+66
-4
lines changed
File renamed without changes.

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ Don’t get scared to propose ideas! It’s amazing to innovate in the open and
2828
The process of proposing a change via a design document is the following:
2929

3030
1. Fork `github.com/prometheus/proposals`.
31-
2. Create a GitHub Pull Request with a design document in markdown format to the [proposals directory](./proposals). Make sure to use the [template](0000-00-00_template.md) as the guide for what sections should be present in the document. Put the creation date (the day you started preparing this design document) as the prefix and some unique name as the suffix in the file name. Once the PR is proposed, a maintainer will assign a `proposal` label.
32-
1. If you prefer Google Docs to any other collaboration tool, feel free to use it in the initial state. We recommend the [Open Source Design document Template](https://docs.google.com/document/d/1zeElxolajNyGUB8J6aDXwxngHynh4iOuEzy3ylLc72U/edit#). However, the approval process will only happen officially in the Pull Request.
33-
3. An automatic formatter is enabled in the repository. Use `make` locally to trigger the formatting of all markdown documents (requires a working Go environment). Use `make check` to check all links (will be done by the CI pipeline, too).
34-
4. After a sufficient amount of discussion, the Prometheus team will try to reach a consensus of accepting or rejecting the proposal. In the former case, the PR gets merged. In the latter case, the PR gets closed with meaningful reasons why the proposal was rejected.
31+
2. Copy the [template](0000-template.md) to [proposals directory](./proposals) as `./proposals/0000-<my-proposal>.md` where `<my-proposal>` is the relevant proposal title. Once a Pull Request is made, update the prefix number to match the PR ID. As a result your proposal will be referenced as `PROM-<PR ID>`.
32+
3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
33+
4. Create a GitHub Pull Request with the proposal, using `proposal:` prefix in the PR Title. Once the PR is proposed, a maintainer will assign a `proposal` label.
34+
1. If you prefer Google Docs to any other collaboration tool, feel free to use it in the initial state. We recommend the [Open Source Design document Template](https://docs.google.com/document/d/1zeElxolajNyGUB8J6aDXwxngHynh4iOuEzy3ylLc72U/edit#). However, the approval process will only happen officially in the Pull Request.
35+
5. An automatic formatter is enabled in the repository. Use `make` locally to trigger the formatting of all markdown documents (requires a working Go environment). Use `make check` to check all links (will be done by the CI pipeline, too).
36+
6. After a sufficient amount of discussion, the Prometheus team will try to reach a consensus of accepting or rejecting the proposal. In the former case, the PR gets merged. In the latter case, the PR gets closed with meaningful reasons why the proposal was rejected.
3537
1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the [Prometheus DevSummit](https://docs.google.com/document/d/11LC3wJcVk00l8w5P3oLQ-m3Y37iom6INAMEu2ZAGIIE/edit) or announce it to the [developer mailing list](https://groups.google.com/forum/#!forum/prometheus-developers) to gather more information. You are welcome to start working on the design document before a bigger discussion—it is often easier to discuss with prior details provided. Be prepared that the idea might be rejected later. Still, the record of the document in the Pull Request is valuable even in a rejected state to inform about past decisions and opportunities considered.
3638
2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
3739
3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

proposals/0053-proposal-ids.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
## Proposal IDs
2+
3+
* **Owners:**
4+
* `@bwplotka`
5+
6+
* **Implementation Status:** `Implemented`
7+
8+
* **Related Issues and PRs:**
9+
* https://github.com/prometheus/proposals/issues/51
10+
11+
> TL;DR: We propose every Prometheus proposal has a stable reference/ID in the form of the PROM-<number>. The number is the PR ID from the original PR that was used to discuss and approve the proposal.
12+
13+
## Why
14+
15+
It's important to reference decisions made in the proposal in the following development (code, docs, discussions). Currently, we either have some tribal naming for a proposal, link to a proposal repo PR when proposal is not yet approved or GH link to the proposal file with that original `<date>-template.md`.
16+
17+
We want to ensure that "link" is even more consistent, stable and short than the current approach.
18+
19+
### Pitfalls of the current solution
20+
21+
* We use inconsistent references (name, PR link, file link).
22+
* The references e.g. links are hard to use (e.g. mentioning in the code commentary) and hard to memorize.
23+
* The date in the file is usually misleading. It's a creation date vs approval date (the latter might be what we usually expect).
24+
* While we try to ensure links in the `proposal/` directory never change, there's a risk we break those one day.
25+
26+
## Goals
27+
28+
Goals and use cases for the solution as proposed in [How](#how):
29+
30+
* Each proposal has a short, memorable and unique ID.
31+
32+
## How
33+
34+
We propose every Prometheus proposal has a stable reference/ID in the form of the `PROM-<number>`. This number is captured in the file name and it originates from the ID of the Pull Request that was used to approve and merge the proposal.
35+
36+
We propose to NOT add a stable number of digits in the official referencing. However, we propose we DO add a stable number of digits in the file name, so the file browsing has a convenient ordering. We propose 4 digits for now, prefixed by zeros, which can be increased to 5 once we have PR numbers in ten-thousands (likely in a decade).
37+
38+
For example, this proposal is referenced as `PROM-53`, because we proposed this in the [PR `#53`](https://github.com/prometheus/proposals/pulls/53). This proposal file name is then `0053-proposal-ids.md`.
39+
40+
For the existing proposals, we propose to rename existing proposal's file to have its PROM-<number> (based on their initial PRs), but leave the old files with a link to a new file, so the old links work.
41+
42+
## Alternatives
43+
44+
### Different Prefixes
45+
46+
There are a few alternatives to the `PROM-` prefix e.g.
47+
48+
* PEP- ("Prometheus Enhancement Proposal")
49+
* Consistent with K8s and Otel, but Prometheus community never used "EP" naming.
50+
* P- or PP- ("Prometheus Proposal")
51+
* Short but NOT clearly unique for Prometheus (e.g. Python [PEPs](https://peps.python.org/)) and not suggesting proposals
52+
* PROMETHEUS-
53+
* A bit too long?
54+
55+
## Action Plan
56+
57+
The tasks to do in order to migrate to the new idea.
58+
59+
* [X] Adjust template and proposal docs.
60+
* [ ] Rename each existing proposal's file to have its PROM-<number>; Leave the old files with a link to a new file, so the old links work.

0 commit comments

Comments
 (0)