Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added proposal process. #15

Merged
merged 2 commits into from
Jun 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ docs-check: $(MDOX)
.PHONY: web-pre
web-pre: ## Pre process docs using mdox transform which converts it from GitHub structure to Hugo one.
web-pre: $(MDOX)
@rm -rf $(WEBSITE_DIR)/content # Do it in mdox itself.
$(MDOX) transform --log.level=debug -c .mdox.yaml

$(WEBSITE_DIR)/node_modules:
Expand Down
5 changes: 5 additions & 0 deletions content/Projects/Observability/RHOBS/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Red Hat Observability Service
bwplotka marked this conversation as resolved.
Show resolved Hide resolved

Status: Open to internal Red Hat Teams Only.

TBD
3 changes: 3 additions & 0 deletions content/Projects/Observability/RHOBS/telemeter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# RHOBS: Telemeter
bwplotka marked this conversation as resolved.
Show resolved Hide resolved

TBD
60 changes: 59 additions & 1 deletion content/Projects/Observability/thanos.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,61 @@
# Thanos

> In progress.
Thanos is a horizontally scalable, multi-tenant monitoring system in a form of distributed time series database that supports Prometheus data format.
bwplotka marked this conversation as resolved.
Show resolved Hide resolved

### Official Documentation

https://thanos.io/tip/thanos/getting-started.md

### APIs

* Querying: Prometheus APIs, Remote Read
* Series: Prometheus APIs, gRPC SeriesAPI
* Metric Metadata: Prometheus API, gRPC MetricMetadataAPI
* Rules, Alerts: Prometheus API, gRPC RulesAPI
* Targets: Prometheus API, gRPC TargetsAPI
* Exemplars: Prometheus API, gRPC ExemplarsAPI
* Receiving: Prometheus Remote Write

### Tutorials

https://katacoda.com/thanos

### Notable Talks/Blog Posts

* 12.2020: [Absorbing Thanos Infinite Powers for Multi-Cluster Telemetry](https://www.youtube.com/watch?v=6Nx2BFyr7qQ)
* 12.2020: [Turn It Up to a Million: Ingesting Millions of Metrics with Thanos Receive](https://www.youtube.com/watch?v=5MJqdJq41Ms)
* 02.2019: [FOSDEM + demo](https://fosdem.org/2019/schedule/event/thanos_transforming_prometheus_to_a_global_scale_in_a_seven_simple_steps/)
* 03.2019: [Alibaba Cloud user story](https://www.youtube.com/watch?v=ZS6zMksfipc)
* [CloudNative Deep Dive](https://www.youtube.com/watch?v=qQN0N14HXPM)
* [CloudNative Intro](https://www.youtube.com/watch?v=m0JgWlTc60Q)
* [Prometheus in Practice: HA with Thanos](https://www.slideshare.net/ThomasRiley45/prometheus-in-practice-high-availability-with-thanos-devopsdays-edinburgh-2019)

* [Banzai Cloud user story](https://banzaicloud.com/blog/multi-cluster-monitoring/)

### Bug Trackers

https://github.com/thanos-io/thanos/issues

### Communication Channels

The CNCF Slack workspace's ([join here](https://cloud-native.slack.com/messages/CHY2THYUU)) channels:

* `#thanos` for user related things.
* `#thanos-dev` for developer related things.

### Proposal Process

https://thanos.io/tip/contributing/contributing.md/#adding-new-features--components

### Our Usage

We use Thanos in many places within Red Hat, notably:

* In [Prometheus Operator (sidecar)](prometheusOp.md)
* In Openshift Platform Monitoring (PM) (see [CMO](openshiftcmo.md))
* In Openshift User Workload Monitoring (UWM)
* In [RHOBS](RHOBS) (so [Observatorium](observatorium.md))

### Maintainers

https://thanos.io/tip/thanos/maintainers.md/#core-maintainers-of-this-repository
2 changes: 1 addition & 1 deletion content/Proposals/Accepted/202106-handbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ The idea of a handbook is not new. Many organizations do this e.g [GitLab](https

### Flow of Adding/Consuming Documentation to Handbook

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

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

Expand Down
6 changes: 5 additions & 1 deletion content/Proposals/Accepted/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Accepted

> In progress.
This is a list of accepted proposals. This means proposal was accepted, but not yet implemented.

## Internal Accepted Proposals

* ...
127 changes: 127 additions & 0 deletions content/Proposals/Done/202106-proposals-process.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# 2021-06: Proposal Process
bwplotka marked this conversation as resolved.
Show resolved Hide resolved

* **Owners:**:
* [`@bwplotka`](https://github.com/bwplotka)

* **Other docs:**
* [KEP Process](https://github.com/kubernetes/enhancements/blob/master/keps/README.md)
* [Observability Team Process (Internal)](https://docs.google.com/document/d/1eojXStPdq1hYwv36pjE-vKR1q3dlBbpIx5w_L_v2gNo/edit)

> 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.

## Why

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.

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.

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.

### Pitfalls of the current solution

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)).

In practice, both teams had somehow similar flow:

* For upstream: Follow the upstream project's contributing guide, e.g Thanos
* For downstream:
* Depending on the size:
* Small features can be proposed during the bi-weekly team-sync or directly in Slack.
* 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.
* Add a JIRA ticket to plan this work.
* Large features might need a design doc:
1. Add a JIRA ticket for creating the design doc
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)
3. Fill sections
4. Announce it on the team mailing list and Slack channel
5. Address comments / concerns 6 Define what "done" means for this proposal, i.e. what is the purpose of this design document:
* Knowledge sharing / Brain dump: This kind of document may not need a thorough review or any official approval
bwplotka marked this conversation as resolved.
Show resolved Hide resolved
* 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.
1. If the document has no more offline comments and no consensus was reached, schedule a meeting with interested parties.
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.

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)):

* Even if our Google Design docs organized in our team drive, those Google documents are not easily discoverable.
* Existing Google doc-based documents are hard to consume. The formatting is widely different. Naming is inconsistent.
* 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How will the new process ensure that people drive their proposals to completion?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very solid point. It's always based on authors motivation. Usually, the problem is not author motivation but lack of process, lack of visibility or decision making time. I think this proposal fixes those things.

It does not fix the motivation part. If author does not want to finish the proposal, maybe it's not that important and it will get just stale PR, closed after some time of inactivitiy

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my opinion, the guarantee of a process that says "your doc will be reviewed by a human in X time and you will be given feedback" is a good motivation. This, coupled with "your work is recognized and you can add it to your list of achievements" is much more than we currently have and should motivate the completion of designs more than we already do. The goals is not to ensure 100% completion of a design doc; it's impossible and not part of anyone's job description. But a structures process should create a positive difference IMO

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added summary

* It's hard to track previous discussions around proposals, who approved them (e.g. proposals).
* It's not public, and it's hard to share good proposals with other external and internal teams.

## Goals

Goals and use cases for the solution as proposed in [How](#how):

* Allow easy collaboration and decision making on design ideas.
* Have a consistent design style that is readable and understandable.
* Ensure design docs are discoverable for better awareness and knowledge sharing about past decisions.
* Define a clear review and approval process.

## Non-Goals

* Define process for other documents (see [handbook proposal](../Accepted/202106-handbook.md#pitfalls-of-the-current-solution))

## How

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.

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).

### Where to Propose Changes/Where to Submit Proposals?

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.

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:

![where](../../assets/proposal-where.png)

[Internal Team Drive for Public and Confidential Proposals](https://drive.google.com/drive/folders/1WGqC3gMCxIQlrnjDUYfNUTPYYRI5Cxto)

[Templates](../process.md#templates)

### Handbook Proposal Process

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.

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.

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:

![where](../../assets/proposal-how.png)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit concerned with having only leads and architects as reviewers. That amounts to a pool of 3 people out of ~20 who can add feedback and approve changes. It also inhibits knowledge sharing and collaboration within the team since other members will be left out.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, was thinking about this too. Everyone should review. But question is, who is making final decision? What is the final vote? I would be totally for equal vote priority, but this would mean you have to have 11 out of 20 ppl to review which is unrealistic too. So at then end lead and architects has to know about it no?

This is BTW rare: What it will come next is that I will propose same to CMO, Observatorium, Prometheus Operator, Prometheus, Thanos etc, and then normal procedure applies as to any bigger change (consensus in maintainers team)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any proposed flow? Just get it reviewed by interested team members you choose? Consensus in the team?

Copy link
Contributor

@fpetkovski fpetkovski Jun 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes complete sense to have the architect and lead from the respective team in the list of reviewers.

I would, however, also encourage involving team members with the subject-specific domain knowledge in the review process. We have a list of contributors in this doc that we can use to select the appropriate team members. I think anywhere from 2 to 4 reviewers is manageable without creating too much overhead.

In addition to that, anyone should feel free to comment on the proposal, regardless of whether they're selected as reviewers or not. In my view, a proposal should be treated as a tool for collaboration, innovation and dissipating knowledge within the team.

Copy link
Contributor

@squat squat Jun 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review should be open to everyone, even outside of the team: this is open-source after all and anyone can comment, which is free input for us.

We do want some accountability when it comes to approval to ensure that things do not hang around in limbo indefinitely and ensure that proposals are either accepted or rejected. I originally proposed a few weeks ago at a team sync that we follow a structured process for our design proposals to avoid them getting stuck in this design-purgatory that many of our docs have ended up in. This limbo is really sad because it means that engineers who write designs never get feedback on their work, recognition for their good ideas (especially if the idea is implemented but the doc was not "accepted"), and appreciation for the hard effort they made. I had suggested we follow a process inspired by Hashicorp's RFC process [0]:

Once you’ve written the first draft of an RFC, share it with your team. They’re likely to have the most context on your proposal and its potential impacts, so most of your feedback will probably come at this stage. Any team member can comment on and approve an RFC, but you need explicit approval only from the appropriate team leads in order to move forward. Once the RFC is approved and shared with stakeholders, you can start implementing the solution. For major projects, also share the RFC to the company-wide email list. While most members of the mailing list will just read the email rather than the full RFC, sending it to the list gives visibility into major decisions being made across the company.

In our case, the architect would be ultimately responsible for signing off on something, but ANYONE can give feedback. We can even say: X people are chosen to review and give expert input on given document and present recommendations to the architect who ultimately signs off (or not). Alternatively, these X people could approve/reject the document by consensus.

[0]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added mention to that to our process

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an SLO on how long we want proposals to:

  • Stay in Review state
  • Stay in Approved state before starting implementation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so. It's similar to PR (code change) process now? Depends on sprint priority. Do you think we need SLO?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there should be an SLO for how long things stay in review state but not necessarily how long before they are implemented. Our problem to-date has been that docs hang around in review-limbo for eternity, which is super demotivating for writers and means they don't get credit for their good ideas. Whether or not a design is implemented is a different problem: the design may be a great idea but the feature may not be prioritized by the PM so it's not on our roadmap for the coming X quarters. Architects and leads should be responsible for circulating designs to the right ppl, e.g. managers and PMs, and to advocate for prioritizing them as needed, but it's not only up to the team to decide what we work on. Otherwise, cynically, this SLO would be a backdoor to override the needs of Red Hat as a business and get engineer hours dedicated to pet projects that have architect approval.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What specific SLO we should set?

Each iteration between change and review should not last longer than 3 days? 🤔

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to set something that is simple to start with. We can always adjust it if we need to. E.g. we can say each proposal needs to be approved or rejected within 1 month. We can also easily measure this SLO to see whether we are breaching it.

I guess the more important question is, what is the SLA for breaching the SLO :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@squat yeah I get your point, makes total sense and at the end of the day someone or some relativity small group need to take the lead and "steer the ship" so I am all for it in that respect.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem IMO has not been that no one reads proposals but rather that they are read and they are never officially taken out of limbo.

I agree that this is a problem, I am just not sure if approving a proposal and not acting on it makes things better. With the current team processes, sprint and roadmap planning is done by a handful of people. This makes it hard for proposal authors to get visibility into if and when their proposal would be planned for implementation. Approving a proposal and not implementing it for a year or two still feels like a limbo state.

It was mentioned above that approving and implementing a proposal should be treated as different problems. I think this could be a good way to look at things. However, not having a feedback loop for the implementation phase leaves a big gap in the process.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I totally see this problem, but I think it's better to NOT couple the proposal process with the implementation process.

I am just not sure if approving a proposal and not acting on it makes things better.

I have to disagree. (: Let's say we don't have time to implement a new idea which someone has in mind. Do we think it will help to NOT do the proposal at least? I feel it's extremely helpful to at least cover that idea while it's hot, so anyone can take it up anytime later. Especially when we are working open-source it helps the community to get it up for us too! Not mentioning we would have a ready answer if someone asks about new idea that was discussed before. We can point how we would discuss this and that person can either update proposal if needed with new info or see what was decided before.

Also we do the same for bugs no? We acknowledge them but sometimes we can't fix everything. Still it's good to report them instead of ignoring and move the fix process as much as further as possible.

However, not having a feedback loop for the implementation phase leaves a big gap in the process.

In some way there is a process for planning things for our teams: This is part of backlog grooming, sprint planning, syncs with team leads. Those are not properly documented, and probably there should be another piece of documentation for that WDYT? (:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, this seems like a good direction. To summarize:

  • Keep approval and implementation phases independent
  • Potentially iterate on adding visibility into planning and grooming processes of the teams. I would not rush this work to much before the team stabilizes. Constantly updating documentation can be a bit wasteful :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proposal - follow KEP process.

  • Proposal itself should state who is the approver/reviewer (creator can assign on first draft and can be changed in further iterations)
  • Proposal should state if it is implementable right now or if it isn't
  • Proposals without any activity are labeled as stale after 60d of inactivity
  • Stale proposals are closed after an additional 30d of inactivity

More in KEP-0000 - https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md


> 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.

> 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).

bwplotka marked this conversation as resolved.
Show resolved Hide resolved
### On Review Process

As you see on the above algorithm, if the content relates to any upstream project, it should be proposed, reviewed and potentially implemented together with the community. This does not mean that you cannot involve other team members towards this effort. Share the proposal with team members, even if they are not part of maintainer's team on a given project, any feedback, and voice are useful and can help to move idea further.

Similar to proposals that touch our team only, despite mentioning mandatory approval process from leads, anyone can give feedback! Our process is in fact very similar to [Hashicorp's RFC process](https://works.hashicorp.com/articles/writing-practices-and-culture):

> Once you’ve written the first draft of an RFC, share it with your team. They’re likely to have the most context on your proposal and its potential impacts, so most of your feedback will probably come at this stage. Any team member can comment on and approve an RFC, but you need explicit approval only from the appropriate team leads in order to move forward. Once the RFC is approved and shared with stakeholders, you can start implementing the solution. For major projects, also share the RFC to the company-wide email list. While most members of the mailing list will just read the email rather than the full RFC, sending it to the list gives visibility into major decisions being made across the company.

### Summary

Overall, we want to bring a culture where design docs will be reviewed in certain amount of time and authors (team members) will be given feedback. This, coupled with recognizing the work and being able to add it to your list of achievements (even if proposal was rejected), should bring more motivation for people and teams to assess ideas in structure, sustainable way.

## Alternatives

1. Organize Team Google Drive with all Google docs we have.

Pros:
* Great for initial collaboration

Cons:
* Inconsistent format
* Hard to track approvers
* Never know when the doc is "completed."
* Hard to maintain over time
* Hard to share and reuse outside

## Action Plan

* [X] Explain process in [Proposal Process Guide](../process.md)
* [ ] Move existing up-to-date public design docs over to the Handbook (deadline: End of July).
* TIP: You can use [Google Chrome Plugin](https://workspace.google.com/marketplace/app/docs_to_markdown/700168918607) to convert Google Doc into markdown easily.
* [ ] Propose a similar process to upstream projects that do not have it.
7 changes: 7 additions & 0 deletions content/Proposals/Done/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Done

This is a list of implemented proposals.

## Internal Implemented Proposals

* ...
9 changes: 9 additions & 0 deletions content/Proposals/Rejected/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Rejected

This is a list of rejected proposals.

> NOTE: This does not mean we can return to them and accept!

## Internal Rejected Proposals

* ...
53 changes: 46 additions & 7 deletions content/Proposals/process.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,44 @@
# Proposals Process

# Google Docs Template
## Where to Propose Changes/Where to Submit Proposals?

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.

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:

![where](../assets/proposal-where.png)

[Internal Team Drive for Public and Confidential Proposals](https://drive.google.com/drive/folders/1WGqC3gMCxIQlrnjDUYfNUTPYYRI5Cxto)

## Proposal Process

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.

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.

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:

![where](../assets/proposal-how.png)

> 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.

> 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).

### On Review Process

As you see on the above algorithm, if the content relates to any upstream project, it should be proposed, reviewed and potentially implemented together with the community. This does not mean that you can involve other team members towards this effort. Share the proposal with team members, even if they are not part of maintainer's team on a given project, any feedback, and voice are useful and can help to move idea further.

Similar to proposals that touch our team only, despite mentioning mandatory approval process from leads, anyone can give feedback! Our process is in fact very similar to [Hashicorp's RFC process](https://works.hashicorp.com/articles/writing-practices-and-culture):

> Once you’ve written the first draft of an RFC, share it with your team. They’re likely to have the most context on your proposal and its potential impacts, so most of your feedback will probably come at this stage. Any team member can comment on and approve an RFC, but you need explicit approval only from the appropriate team leads in order to move forward. Once the RFC is approved and shared with stakeholders, you can start implementing the solution. For major projects, also share the RFC to the company-wide email list. While most members of the mailing list will just read the email rather than the full RFC, sending it to the list gives visibility into major decisions being made across the company.

## Templates

### Google Docs Template

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

# Markdown Template:
### Markdown Template:

## Your Proposal Title

Expand All @@ -17,11 +51,9 @@
* **Other docs:**
* `<Links…>`

## TL;DR

Give here a short summary of what this document is proposing and what components it is touching.

*For example: This design doc is proposing a consistent design template for “example.com” organization.*
> TL;DR: Give here a short summary of what this document is proposing and what components it is touching. Outline rough idea of proposer's view on proposed changes.
>
> *For example: This design doc is proposing a consistent design template for “example.com” organization.*

## Why

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

### Audience

If not clear, the target audience that this change relates to.

## Non-Goals

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

The tasks to do in order to migrate to the new idea.

* [ ] Task one <GH issue/JIRA ticket>
* [ ] Task two <GH issue/JIRA ticket> ...
Loading