Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Proposals

This repository holds all the past and current proposals for the Prometheus Ecosystem. It’s the single place for reviewing, discovering, and working on the design documents. It is also a record of past decisions and approvals.

Current Proposals

What’s a Design Document?

It’s essential to clearly explain the reasons behind certain design decisions to have a community consensus. This is especially important in Prometheus, where every decision might have a significant impact given the high adoption and stability of the software and standards we work on.

In our world, no decision is perfect, so having a design document explaining our trade-offs is essential. Such a document can also be used later as a reference and for knowledge-sharing purposes.

Design documents do not always reflect what has been (or will be) implemented. Implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard. Instead, it should explain the motivation, scope, decisions, and alternatives considered.

Proposal Process

Don’t get scared to propose ideas! It’s amazing to innovate in the open and get feedback on ideas.

The process of proposing a change via a design document is the following:

  1. Fork github.com/prometheus/proposals.
  2. Copy the template to proposals directory 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>.
  3. Fill the proposal details. Use the template as the guide for what sections should be present in the document.
  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.
    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. However, the approval process will only happen officially in the Pull Request.
  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).
  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.
    1. If more eyes are needed or no consensus was made: Propose your idea as an agenda item for the Prometheus DevSummit or announce it to the developer mailing list 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.
    2. To merge the PR, we need approval (consensus) from the maintainers of the related component(s).
    3. Optionally: Find a sponsor among the Prometheus maintainers to get momentum on a change.

Once the PR gets merged, the design document can change, but it requires (less strict, but still) a PR with review and merge by a maintainer.

About

Design documents for Prometheus Ecosystem

Topics

Resources

Code of conduct

Security policy

Stars

33 stars

Watchers

19 watching

Forks

Used by

Contributors

Languages