Skip to content

Commit 9851044

Browse files
committed
Added proposal process.
Signed-off-by: Bartlomiej Plotka <[email protected]>
1 parent b3a6f65 commit 9851044

18 files changed

+4947
-604
lines changed

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ docs-check: $(MDOX)
2424
.PHONY: web-pre
2525
web-pre: ## Pre process docs using mdox transform which converts it from GitHub structure to Hugo one.
2626
web-pre: $(MDOX)
27+
@rm -rf $(WEBSITE_DIR)/content # Do it in mdox itself.
2728
$(MDOX) transform --log.level=debug -c .mdox.yaml
2829

2930
$(WEBSITE_DIR)/node_modules:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Red Hat Observability Service
2+
3+
Status: Open to internal Red Hat Teams Only.
4+
5+
TBD
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# RHOBS: Telemeter
2+
3+
TBD
+59-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,61 @@
11
# Thanos
22

3-
> In progress.
3+
Thanos is a horizontally scalable, multi-tenant monitoring system in a form of distributed time series database that supports Prometheus data format.
4+
5+
### Official Documentation
6+
7+
https://thanos.io/tip/thanos/getting-started.md
8+
9+
### APIs
10+
11+
* Querying: Prometheus APIs, Remote Read
12+
* Series: Prometheus APIs, gRPC SeriesAPI
13+
* Metric Metadata: Prometheus API, gRPC MetricMetadataAPI
14+
* Rules, Alerts: Prometheus API, gRPC RulesAPI
15+
* Targets: Prometheus API, gRPC TargetsAPI
16+
* Exemplars: Prometheus API, gRPC ExemplarsAPI
17+
* Receiving: Prometheus Remote Write
18+
19+
### Tutorials
20+
21+
https://katacoda.com/thanos
22+
23+
### Notable Talks/Blog Posts
24+
25+
* 12.2020: [Absorbing Thanos Infinite Powers for Multi-Cluster Telemetry](https://www.youtube.com/watch?v=6Nx2BFyr7qQ)
26+
* 12.2020: [Turn It Up to a Million: Ingesting Millions of Metrics with Thanos Receive](https://www.youtube.com/watch?v=5MJqdJq41Ms)
27+
* 02.2019: [FOSDEM + demo](https://fosdem.org/2019/schedule/event/thanos_transforming_prometheus_to_a_global_scale_in_a_seven_simple_steps/)
28+
* 03.2019: [Alibaba Cloud user story](https://www.youtube.com/watch?v=ZS6zMksfipc)
29+
* [CloudNative Deep Dive](https://www.youtube.com/watch?v=qQN0N14HXPM)
30+
* [CloudNative Intro](https://www.youtube.com/watch?v=m0JgWlTc60Q)
31+
* [Prometheus in Practice: HA with Thanos](https://www.slideshare.net/ThomasRiley45/prometheus-in-practice-high-availability-with-thanos-devopsdays-edinburgh-2019)
32+
33+
* [Banzai Cloud user story](https://banzaicloud.com/blog/multi-cluster-monitoring/)
34+
35+
### Bug Trackers
36+
37+
https://github.com/thanos-io/thanos/issues
38+
39+
### Communication Channels
40+
41+
The CNCF Slack workspace's ([join here](https://cloud-native.slack.com/messages/CHY2THYUU)) channels:
42+
43+
* `#thanos` for user related things.
44+
* `#thanos-dev` for developer related things.
45+
46+
### Proposal Process
47+
48+
https://thanos.io/tip/contributing/contributing.md/#adding-new-features--components
49+
50+
### Our Usage
51+
52+
We use Thanos in many places within Red Hat, notably:
53+
54+
* In [Prometheus Operator (sidecar)](prometheusOp.md)
55+
* In Openshift Platform Monitoring (PM) (see [CMO](openshiftcmo.md))
56+
* In Openshift User Workload Monitoring (UWM)
57+
* In [RHOBS](RHOBS) (so [Observatorium](observatorium.md))
58+
59+
### Maintainers
60+
61+
https://thanos.io/tip/thanos/maintainers.md/#core-maintainers-of-this-repository

content/Proposals/Accepted/202106-handbook.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ The idea of a handbook is not new. Many organizations do this e.g [GitLab](https
100100
101101
### Flow of Adding/Consuming Documentation to Handbook
102102

103-
![flow](../../assets/handbook-proposal.png)
103+
![flow](../../assets/handbook-process.png)
104104

105105
If you want to add or edit markdown documentation, refer to [our technical guide](../../contributing.md).
106106

content/Proposals/Accepted/README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
# Accepted
22

3-
> In progress.
3+
This is a list of accepted proposals. This means proposal was accepted, but not yet implemented.
4+
5+
## Internal Accepted Proposals
6+
7+
* ...
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# 2021-06: Proposal Process
2+
3+
* **Owners:**:
4+
* [`@bwplotka`](https://github.com/bwplotka)
5+
6+
* **Other docs:**
7+
* [KEP Process](https://github.com/kubernetes/enhancements/blob/master/keps/README.md)
8+
* [Observability Team Process (Internal)](https://docs.google.com/document/d/1eojXStPdq1hYwv36pjE-vKR1q3dlBbpIx5w_L_v2gNo/edit)
9+
10+
> TL;DR: We would like to propose an improved, official proposal process for Monitoring Group that clearly states when, where and how to create proposal/enhancement/design documents.
11+
12+
## Why
13+
14+
More extensive architectural, process, or feature decisions are hard to explain, understand and discuss. It takes a lot of time to describe the idea, to motivate interested parties to review it, give feedback and approve. That's why it is essential to streamline the proposal process.
15+
16+
Given that we work in highly distributed teams and work with multiple communities, we need to allow asynchronous discussions. This means it's essential to structure the talks into shared documents. Persisting in those decisions, once approved or rejected, is equally important, allowing us to understand previous motivations.
17+
18+
There is a common saying [`"I've just been around long enough to know where the bodies are buried"`](https://twitter.com/AlexJonesax/status/1400103567822835714). We want to ensure the team related knowledge is accessible to everyone, every day, no matter if the team member is new or part of the team for ten years.
19+
20+
### Pitfalls of the current solution
21+
22+
Currently, the Observability Platform team have the process defined [here (internal)](https://docs.google.com/document/d/1eojXStPdq1hYwv36pjE-vKR1q3dlBbpIx5w_L_v2gNo/edit#heading=h.kpdg1wrd3pcc), whereas the In-Cluster part were not defining any official process ([as per here (internal)](https://docs.google.com/document/d/1vbDGcjMjJMTIWcua5Keajla9FzexjLKmVk7zoUc0_MI/edit#heading=h.n0ac5lllvh13)).
23+
24+
In practice, both teams had somehow similar flow:
25+
26+
* For upstream: Follow the upstream project's contributing guide, e.g Thanos
27+
* For downstream:
28+
* Depending on the size:
29+
* Small features can be proposed during the bi-weekly team-sync or directly in Slack.
30+
* If the team can reach consensus in this time, then document the decision somewhere written, e.g. an email, Slack message to which everyone can add an emoji reaction, etc.
31+
* Add a JIRA ticket to plan this work.
32+
* Large features might need a design doc:
33+
1. Add a JIRA ticket for creating the design doc
34+
2. Create a new Google Doc in the team folder based on [this template](https://docs.google.com/document/d/1ddl_dLxjoIvWQuRgLdzL2Gd1EX1mkJQUZ-rgUh-T4d8/edit)
35+
3. Fill sections
36+
4. Announce it on the team mailing list and Slack channel
37+
5. Address comments / concerns 6 Define what "done" means for this proposal, i.e. what is the purpose of this design document:
38+
* Knowledge sharing / Brain dump: This kind of document may not need a thorough review or any official approval
39+
* Long term vision and Execution & Implementation: If approved (with LGTM comments, or in an approved section) by a majority of the team and no major concerns consider it approved. NOTE: The same applies to rejected proposals.
40+
1. If the document has no more offline comments and no consensus was reached, schedule a meeting with interested parties.
41+
2. When the document changes status, move it to the appropriate status folder in the design docs directory of the team folder. If an approved proposal concerns a component with its own directory, e.g. Telemeter, then create a shortcut to the proposal document in the component-specific directory. This helps us find design documents by topic and by status.
42+
43+
It served us well, but it had the following issues (really similar to ones stated in [handbook proposal](../Accepted/202106-handbook.md#pitfalls-of-the-current-solution)):
44+
45+
* Even if our Google Design docs organized in our team drive, those Google documents are not easily discoverable.
46+
* Existing Google doc-based documents are hard to consume. The formatting is widely different. Naming is inconsistent.
47+
* Document creation is rarely actionable. There is no review process, so the effort of creating a relevant document might be wasted, as the document is lost. This also leads to docs being in the half-completed state, demotivating readers to look at it.
48+
* It's hard to track previous discussions around proposals, who approved them (e.g. proposals).
49+
* It's not public, and it's hard to share good proposals with other external and internal teams.
50+
51+
## Goals
52+
53+
Goals and use cases for the solution as proposed in [How](#how):
54+
55+
* Allow easy collaboration and decision making on design ideas.
56+
* Have a consistent design style that is readable and understandable.
57+
* Ensure design docs are discoverable for better awareness and knowledge sharing about past decisions.
58+
* Define a clear review and approval process.
59+
60+
## Non-Goals
61+
62+
* Define process for other documents (see [handbook proposal](../Accepted/202106-handbook.md#pitfalls-of-the-current-solution))
63+
64+
## How
65+
66+
We want to propose an improved, official proposal process for Monitoring Group that clearly states *when, where and how* to create proposal/enhancement/design documents.
67+
68+
Everything starts with a problem statement. It might be a missing functionality, confusing existing functionality or broken one. It might be an annoying process, performance or security issue (or potential one).
69+
70+
### Where to Propose Changes/Where to Submit Proposals?
71+
72+
As defined in [handbook proposal](../Accepted/202106-handbook.md#pitfalls-of-the-current-solution), our Handbook should tell you that Handbook is meant to be an index for our team resources and a linking point to other distributed projects we maintain or contribute to.
73+
74+
First, we need to identify if the idea we have is something we can contribute to an upstream project, or it does not fit anywhere else, so we can leverage the [Handbok Proposal directory](..) and the [process](#handbook-proposal-process). See the below algorithm to find it out:
75+
76+
![where](../../assets/proposal-where.png)
77+
78+
[Internal Team Drive for Public and Confidential Proposals](https://drive.google.com/drive/folders/1WGqC3gMCxIQlrnjDUYfNUTPYYRI5Cxto)
79+
80+
[Templates](../process.md#templates)
81+
82+
### Handbook Proposal Process
83+
84+
If there is no problem, there is no need for changing anything, no need for a proposal. This might feel trivial, but we should first ask ourselves this question before even thinking about writing a proposal.
85+
86+
It takes time to propose an idea, find consensus and implement more significant concepts, so let's not waste time before it's worth it. But, unfortunately, even good ideas sometimes have to wait for a good moment to discuss them.
87+
88+
Let's assume the idea sounds interesting to you; what to do next, where to propose it? How to review it? Follow the algorithm below:
89+
90+
![where](../../assets/proposal-how.png)
91+
92+
> Note: It's totally ok to reject a proposal if a team member feels the idea is wrong. It's better to explicitly oppose it than to ignore it and leave it in limbo.
93+
94+
> NOTE: We would love to host Logging and Tracing Teams if they choose to follow our process, but we don't want to enforce it. We are happy to extend this process from the Monitoring Group handbook to Observability Group. Still, it has to grow organically (if the Logging, Tracing team will see the value of joining us here).
95+
96+
## Alternatives
97+
98+
1. Organize Team Google Drive with all Google docs we have.
99+
100+
Pros:
101+
* Great for initial collaboration
102+
103+
Cons:
104+
* Inconsistent format
105+
* Hard to track approvers
106+
* Never know when the doc is "completed."
107+
* Hard to maintain over time
108+
* Hard to share and reuse outside
109+
110+
## Action Plan
111+
112+
* [X] Explain process in [Proposal Process Guide](../process.md)
113+
* [ ] Move existing up-to-date public design docs over to the Handbook (deadline: End of July).
114+
* TIP: You can use [Google Chrome Plugin](https://workspace.google.com/marketplace/app/docs_to_markdown/700168918607) to convert Google Doc into markdown easily.
115+
* [ ] Propose a similar process to upstream projects that do not have it.

content/Proposals/Done/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Done
2+
3+
This is a list of implemented proposals.
4+
5+
## Internal Implemented Proposals
6+
7+
* ...

content/Proposals/Rejected/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Rejected
2+
3+
This is a list of rejected proposals.
4+
5+
> NOTE: This does not mean we can return to them and accept!
6+
7+
## Internal Rejected Proposals
8+
9+
* ...

content/Proposals/process.md

+38-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,36 @@
11
# Proposals Process
22

3-
# Google Docs Template
3+
## Where to Propose Changes/Where to Submit Proposals?
4+
5+
As defined in [handbook proposal](Accepted/202106-handbook.md#pitfalls-of-the-current-solution), our Handbook should tell you that Handbook is meant to be an index for our team resources and a linking point to other distributed projects we maintain or contribute to.
6+
7+
First, we need to identify if the idea we have is something we can contribute to an upstream project, or it does not fit anywhere else, so we can leverage the [Handbok Proposal directory](..) and the [process](#proposal-process). See the below algorithm to find it out:
8+
9+
![where](../assets/proposal-where.png)
10+
11+
[Internal Team Drive for Public and Confidential Proposals](https://drive.google.com/drive/folders/1WGqC3gMCxIQlrnjDUYfNUTPYYRI5Cxto)
12+
13+
## Proposal Process
14+
15+
If there is no problem, there is no need for changing anything, no need for a proposal. This might feel trivial, but we should first ask ourselves this question before even thinking about writing a proposal.
16+
17+
It takes time to propose an idea, find consensus and implement more significant concepts, so let's not waste time before it's worth it. But, unfortunately, even good ideas sometimes have to wait for a good moment to discuss them.
18+
19+
Let's assume the idea sounds interesting to you; what to do next, where to propose it? How to review it? Follow the algorithm below:
20+
21+
![where](../assets/proposal-how.png)
22+
23+
> Note: It's totally ok to reject a proposal if a team member feels the idea is wrong. It's better to explicitly oppose it than to ignore it and leave it in limbo.
24+
25+
> NOTE: We would love to host Logging and Tracing Teams if they choose to follow our process, but we don't want to enforce it. We are happy to extend this process from the Monitoring Group handbook to Observability Group. Still, it has to grow organically (if the Logging, Tracing team will see the value of joining us here).
26+
27+
## Templates
28+
29+
### Google Docs Template
430

531
[Open Source Design Doc Template](https://docs.google.com/document/d/1zeElxolajNyGUB8J6aDXwxngHynh4iOuEzy3ylLc72U/edit#).
632

7-
# Markdown Template:
33+
### Markdown Template:
834

935
## Your Proposal Title
1036

@@ -17,11 +43,9 @@
1743
* **Other docs:**
1844
* `<Links…>`
1945

20-
## TL;DR
21-
22-
Give here a short summary of what this document is proposing and what components it is touching.
23-
24-
*For example: This design doc is proposing a consistent design template for “example.com” organization.*
46+
> TL;DR: Give here a short summary of what this document is proposing and what components it is touching.
47+
>
48+
> *For example: This design doc is proposing a consistent design template for “example.com” organization.*
2549
2650
## Why
2751

@@ -43,6 +67,10 @@ Goals and use cases for the solution as proposed in [How](#how):
4367
* Have a consistent design style that is readable and understandable.
4468
* Have a design style that is concise and covers all the essential information.
4569

70+
### Audience
71+
72+
If not clear, the target audience that this change relates to.
73+
4674
## Non-Goals
4775

4876
* Move old designs to the new format.
@@ -66,3 +94,6 @@ The section stating potential alternatives. Highlight the objections reader shou
6694
## Action Plan
6795

6896
The tasks to do in order to migrate to the new idea.
97+
98+
* [ ] Task one <GH issue/JIRA ticket>
99+
* [ ] Task two <GH issue/JIRA ticket> ...

0 commit comments

Comments
 (0)