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

docs(policy)_: Introduction of policy zero #6165

Merged
merged 13 commits into from
Jan 22, 2025
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
3 changes: 2 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ shell.nix @status-im/devops

# Custom ownership for specific folders
# Feel free to add yourself for any new packages you implement.
/_docs/policies @status-im/status-go-guild @iurimatias @alaibe @shivekkhurana @ilmotta @plopezlpz
/cmd/status-backend @igor-sirotin
/internal/sentry @igor-sirotin
/healthmanager @friofry
/healthmanager @friofry
90 changes: 90 additions & 0 deletions _docs/policies/README.md
igor-sirotin marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Foundational Principles for Policies

**Purpose**: Policies establishes the fundamental rules that govern
the creation, amendment, and enforcement of all actions within the
`status-go` repository. These policies reflect our core values of
inclusivity, transparency, and consensus-driven decision-making while
defining enforceable rules that guide `status-go` contributions. Policies
are not merely guidelines but are to be respected and adhered to, ensuring
alignment across contributors.

## Upholding Policies Through Consensus

### Collective Agreement

The enforceability of policies stems not from the authority of any
single individual or group but from the collective agreement and shared
commitment of all `status-go` contributors. Policies are not imposed
unilaterally but are the result of transparent discussions and explicit
recorded approval from key stakeholders. This includes team leads,
members of the @status-im/status-go-guild GitHub team, and other
relevant contributors.

### Shared Responsibility

Respecting and adhering to policies is a shared responsibility
that reflects the values and goals of `status-go` contributors. Approved
policies are not merely recommendations but agreed-upon standards,
created through mutual understanding and collaboration, that guide
how we work together and contribute to the project.

### Mutual Enforcement through Alignment

The power of enforcement does not rest with any one authority; it
arises from the collective commitment of all contributors to uphold
policies that have been collaboratively crafted and agreed upon. This
ensures that policies are respected not out of obligation but because
they represent the shared vision and trust of the contributors.

### Fostering Alignment

Policies are designed to ensure consistency, fairness, and alignment
across the teams, creating a framework that supports effective
collaboration and decision-making. By honouring the principles of
inclusivity and consensus, we strengthen trust and accountability
within all contributors.

By grounding our policies in transparency, mutual respect, and collective
ownership, the `status-go` project ensures they are both enforceable and
reflective of the shared goals of all contributors.

## Inclusivity

Every `status-go` contributor must have an equal opportunity to
participate in the creation and review of policies. Contributions
from all backgrounds and perspectives are encouraged and respected.
The process must ensure:

- **Open participation**: Any individual or group who interacts
with or contributes to the project has the right to voice their
opinions and suggestions.
- **Accessibility**: Policies must be written in clear, accessible
language, and the decision-making process should be easy to understand
for everyone involved.

## Transparency

All discussions, decisions, and processes related to policy creation
must be fully transparent. This includes:

- **Open documentation**: Discussions leading to policy decisions

Choose a reason for hiding this comment

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

Would be good to have some guidelines on where you intend to hold these discussions and publish the documentation.

From experience, a lot of discussions are happening in private Discord groups or Discord channels.

Copy link
Collaborator

Choose a reason for hiding this comment

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

But this clause is specifically about keeping the decisions public 🤔

In general, it will a PR, just like this one. All comments and resolutions are publicly documented.
But the README shouldn't limit it to a specific platform. README document describes the intentions, it's not a policy itself.

At the same time _docs/policies/submitting-policy.md describes that the policy should be a PR and all feedbacl must be resolved. This covers the intentions described in the README.

@fryorcraken does this make sense?

must be documented and made publicly available. This ensures that
anyone can review the rationale behind a decision.
- **Clear communication**: Changes to policies, including their
rationale, must be clearly communicated to the contributors through
appropriate channels.

## Consensus

Policies must be created and modified through a consensus-based approach,
ensuring that contributors agree on how to move forward. The following
principles should guide consensus building:

- **Collaborative discussion**: Proposals must be discussed openly,
with all points of view considered.
- **Dispute resolution**: If disagreements arise, efforts must be
made to find a compromise that balances the needs of all stakeholders.
- **Final agreement**: Policies should be approved by a clear consensus,
meaning that while not everyone may agree 100%, all should feel their
voices were heard and respected, and the final decision reflects
contributors’ general will.
71 changes: 71 additions & 0 deletions _docs/policies/introduce-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Purpose

Policy Zero establishes the foundational guidelines for creating,
reviewing, and maintaining policies in the `status-go` Git repository.
This policy aims to create a collaborative, inclusive, and transparent
process for defining repository policies, specifically regarding how
developers engage with and contribute to the `status-go` repository.
For a more detailed description, please refer to [the README.md](./README.md).

# Submitting a Policy Proposal

- Any individual MAY propose a new policy.
- Policy ideas SHOULD be discussed with contributors who wish to have
a voice in how the repository operates, including Core Contributors
(CCs) and external contributors.
- All policies MUST be submitted to the `_docs/policies`
directory as a pull request (PR) within the `status-go` repository.
- All policies MUST be in Markdown format.
- Policy file names MUST follow [File name conventions for ADRs](https://github.com/joelparkerhenderson/architecture-decision-record?tab=readme-ov-file#file-name-conventions-for-adrs), e.g. `submitting-policy.md`.
- A policy MUST include a brief justification, addressing the question:
"Why has this policy been introduced?"

# Review and Approval Process

- Policy PRs SHOULD be reviewed by as many contributors as possible
who wish to engage in the process.
- Any CC MAY review, approve, and/or request changes to a policy
proposal PR.
- For any policy PR to be eligible for merging, it:
- MUST address all feedback provided during the review process.
- MUST be approved by all team leads (of Status Desktop, Mobile and Waku Chat).
- MUST be approved by all members of the @status-im/status-go-guild
GitHub team.
- MUST receive a minimum of six approvals, regardless of the number
of team leads or members of the @status-im/status-go-guild GitHub team.

# Policy Overrides

On rare occasions, circumstances may necessitate that an established
policy is intentionally circumvented. This is considered an **override**
and MUST follow the process outlined below to ensure transparency
and collective agreement:

- Any override MUST be documented in a public and permanently
referenceable form (such as a forum post, or GitHub comment or issue),
and MUST include:
- The specific policy being overridden,
- The rationale for taking this action,
- The potential risks and impacts of the **override**, AND
- Steps taken to minimise those risks.
- Before executing the override of any policy, the override:
- MUST be approved in writing by at least one team lead from the
Status Desktop or Status Mobile teams, AND
- MUST be approved in writing by at least one member of the
@status-im/status-go-guild GitHub team.
- Policies MAY define additional rules for handling overrides, provided
the above baseline requirements are also met.

# Policy Amendments and Archival

- Amendments
- Policies MAY be amended at any time.
- Amendments MUST be submitted via a PR to the `status-go` repository.
- Archival
- Policies MAY be archived if they are obsolete or replaced by
newer policies.
- Archival MUST be performed by submitting a PR that moves the
policy to `_docs/policies/archived`.
- The PR MUST include a rationale for the proposed amendment or
archival in the PR description.
- The PR MUST follow the [Review and Approval Process](#review-and-approval-process).
97 changes: 0 additions & 97 deletions _docs/policies/tests.md

This file was deleted.

Loading