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

WEP0, a proposal for the WEP process #1

Merged
merged 15 commits into from
Dec 13, 2019
Merged
228 changes: 228 additions & 0 deletions WEP0000_wep-proposal.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
:WEP-Number: 0000
:Created: 2019-10-01
:Last-Modified: 2019-10-01
:Author: - Eric Holscher
- Sasha Romijn
- Samuel Wright
- Mikey Ariel
:Status: Draft
:Replaces: N/A
:Superceded-By: N/A

WEP0000 - Initial Launch of the WEP Process
ericholscher marked this conversation as resolved.
Show resolved Hide resolved
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Abstract
========

This is the first Write the Docs Enhancement Proposal (WEP), which introduces the WEP process itself and proposes to implement it in the Write the Docs community. The WEP process enables anyone from the community to propose process and policy changes to the community. The community then reviews the proposed change and if the change is accepted, the policy or process change is implemented in the community.

This "meta-WEP" follows the WEP process to show how the process works and to help the community learn how to use it.

Motivation
==========

When Write the Docs first started in 2013, it was a small collection of humans who were seeking a community of like-minded folks in Portland, Oregon. These folks named themselves **Documentarians**, and the community became our home to share knowledge and socialize with our peers from various roles, locations, and industries.

Over the years, we have grown to a global community with multiple conferences, scores of meetups, and a robust Slack group with thousands of members. The conference teams converged and developed beyond anything that we imagined when we first started, and the Write the Docs organization has become just that -- an organization.

During the past year it has become apparent, by talking to various long-term community members and by reviewing our current processes and policies, that there is a need for a formal system to manage changes to the community. We have multiple platforms where community members can interact, and we want to provide a way to communicate and engage the global community in decisions that will affect how the community is organized and moderated.

We examined other open-source communities to see how they manage their governance and process changes, and we decided to propose the WEP system because we saw it was successful in multiple open-source communities, who contain a much larger user and contributor base and used similar systems for many years. We hope that laying the groundwork with this system will help Write the Docs scale globally with maximum transparency and collaboration.

We believe that the WEP process will help facilitate open decision-making by being a public place to change and document governance for the whole community. Having our foundational documents, and the conversations that lead to them, available publicly will inform new and existing members of the community. Over time, we hope that the WEP repository will become the foundational set of policies that the community is built upon, with this document being the first act.

Proposal
========

The WEP system consists of a dedicated `GitHub repository <https://github.com/writethedocs/weps>`_, which contains individual files that represent specific proposals to policies, processes, and programs in the community. The repository is public, and all WEPs are submitted and reviewed publicly by the entire community.

What is a WEP?
--------------

WEP stands for Write the Docs Enhancement Proposal. A WEP is a document that provides process information to the Write the Docs community or that describes a new policy for the Write the Docs organization.

WEPs describe **policies and processes** surrounding Write the Docs events and online community, and therefore require community consensus. For example, a WEP might propose a change to an organizational process, community policies, or the decision-making process itself.

Scope of WEPs
-------------

WEPs are generally intended for long-term policies that affect either a large number of community members, or that affect fewer but more significant segments of the community.

Examples of topics that should use the WEP process:

- Adjusting the structure of the Slack community to make it more accessible to new community members
- Policies about the structure of the Write the Docs organization
- Policy related to Slack team or channel guidelines
- Changes to the Code of Conduct (CoC)
- A grant policy to support conference attendees that need financial support
- A policy on how to balance various topics submitted to the Call for Proposals at the various Write the Docs conferences

Examples of topics that are out of the scope of the WEP process:
- Requests to change CFP policies in a specific conference
- Requests to create a new Slack channel
- Specific CoC violation reports
- Requests to create a new meetup

Topics that are out of scope for a WEP should be discussed in other community platforms, such as within the conference team, Slack team, or Code of Conduct team. The WEP team will direct out-of-scope pre-proposals to the relevant team in the rejection comments.

Generally, WEPs do not contain the names of individual people, but rather references to teams in the Write the Docs organization. Similarly, they don’t contain fixed budget numbers, but instead guidelines for how to implement the budget.

How to submit a WEP
-------------------

Anyone from the community can submit a WEP! Here's how it works, and what to expect.

The WEP process and system are administered by the following teams:

Core Operations team
There are several reference in this WEP to the **core operations (CoreOps) team**. This team is currently known as the **core team** and the team description can be found on the `Core team page <https://www.writethedocs.org/team/#core-team>`_. The updated name is intended to reflect the purpose of the team more accurately in the context of its duties for the community.
Copy link
Contributor

Choose a reason for hiding this comment

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

s/reference/references/


WEP team
The **WEP team** is a new team that reviews WEP proposals for clarity and completeness. For the purpose of this WEP the team is initially composed of the Core Operations team, but in the the future will be open for other community members to join.
ericholscher marked this conversation as resolved.
Show resolved Hide resolved

Note that the process to join and leave teams is out of scope of this WEP and will be handled in a future WEP.

At a very high level, the WEP submission process includes the following stages:
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this be written in a more active voice, e.g. If you have an idea for , take the following steps:

Copy link
Member Author

Choose a reason for hiding this comment

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

I think this is more the definition of the process, I think we'll grow a "how to" guide in the future as we get more process around it.


#. `Pre-proposal`_ — Someone has an idea and they start collecting early input and feedback to see if it is within the scope of a WEP. This can be done informally, publicly or privately.

#. `Draft submission and pre-review`_ — The WEP author writes a rough draft of the WEP and submits it in a pull request (PR) to the WEPs repository. The draft is pre-reviewed by an editor for style, formatting, and eligibility for the WEP process. If the WEP is pre-approved, it is accepted for discussion and the review period begins.
mxsasha marked this conversation as resolved.
Show resolved Hide resolved

#. `Community review, discussion, and updates`_ — During the review period, the WEP draft is discussed, improved, and updated based on incoming feedback from the community. Feedback is welcome from the whole community, as long as it arrives within the review period.

#. `Final review and resolution`_ — At the end of the review period, the WEP is examined for **lazy consensus**. A lazy consensus means a situation where the community either provided feedback, approved the WEP explicitly, or ignored the WEP altogether. In some cases where consensus wasn't reached, the review period might be extended, but never shortened.

#. `Implementation`_ — If the WEP is accepted, the processes or policies described in the WEP are implemented by the CoreOps team, the WEP author, or specific community members as defined in the WEP.

The following sections describe each stage in more detail.

Pre-proposal
............

The WEP process begins with a new idea for Write the Docs. It is highly recommended that a single WEP contain a single key proposal or new idea.
Copy link
Contributor

Choose a reason for hiding this comment

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

Does it have to be a "new idea"?

If the WEP contains multiple proposals, I think that would come out in the discussion.

Copy link
Member 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 we're going to judge things by any new-ness quality, it's more just a turn of phrase. Perhaps "process update" is more explicit?

Copy link
Contributor

Choose a reason for hiding this comment

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

In the tech writing world, the word "new" is usually redundant. I vote we clean it up and just say "idea".

ericholscher marked this conversation as resolved.
Show resolved Hide resolved

To help prepare the WEP draft, we encourage community members to discuss the idea publicly, for example in the Slack group, and gather initial community feedback before writing a full WEP. Public discussions on pre-proposals also help to make sure the idea is applicable to the entire community and not just to the author.
ericholscher marked this conversation as resolved.
Show resolved Hide resolved

A WEP can be co-authored by more than one community member, but we recommend keeping the number of co-authors small and choosing a representative who will submit the PR to the WEPs repository on behalf of the co-authors.
Copy link
Contributor

Choose a reason for hiding this comment

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

we recommend keeping the number of co-authors small

I'm not sure we should even mention this. But if you think it's important, I'd like an explanation.

If I were a WEP author, I'd want to have as many "co-sponsors" as possible.

Copy link
Contributor

Choose a reason for hiding this comment

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

There is a difference between "co-authors" and "co-sponsors". Co-authors are actively creating the WEP before it's submitted to community discussion, while co-sponsors should be enlisted during the discussion phase. The goal here is to distinguish ownership of the WEP creation and feedback implementation, and you probably don't want 10 people authoring the same WEP for logistical reasons :)

Copy link
Member Author

Choose a reason for hiding this comment

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

I think we stole this from the PEP process, but I think the goal is to have a couple people responsible for shepherding it. If 5 people come together it becomes hard to figure out who is in charge and can make decisions. I think smaller is definitely better in terms of the proposal team, but not in terms of who looks at and reviews it.

Copy link
Contributor

Choose a reason for hiding this comment

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

Appreciate the explanation. Then maybe s/on behalf of the co-authors/on behalf of all supporters of the WEP/

(The current text, to me, implies that support is limited to the authors)

Copy link
Contributor

Choose a reason for hiding this comment

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

I wrote in a suggestion to expand this paragraph and differentiate between authors and supporters. Feel free to edit/adapt as needed.

ericholscher marked this conversation as resolved.
Show resolved Hide resolved

Draft submission and pre-review
...............................

A draft WEP must be submitted in a GitHub pull request to the `writethedocs/weps <https://github.com/writethedocs/weps>`_ repository, in the ``drafts/`` directory. If you need help with working with GitHub or creating a PR, please feel free to send an e-mail to [email protected], and the Write the Docs team will help you get started.
thatdocslady marked this conversation as resolved.
Show resolved Hide resolved

The WEP draft must follow these guidelines:

- WEP is actionable and implementable. The proposed change must be specific and the resulting action clear.
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd leave out "WEP is actionable and implementable"

Copy link
Member Author

Choose a reason for hiding this comment

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

Agreed, it's a bit of a weird sentence, the second one is more clear 👍

- WEP fits the scope of the WEP process, as described in **Scope of WEPs**. WEPs that are out of scope of the process will be rejected by the reviewer.
Copy link
Contributor

Choose a reason for hiding this comment

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

s/reviewer/WEP team/

(since anyone can review a PR, we should be specific)

- Content format must follow the WEP style as described in the **WEP format and style** section. This includes language, grammar, structure, and markup. The PR might be blocked until proper formatting rules are applied.
- The WEP content is complete. If you want to submit a Work in Progress (WIP) draft before it is ready for pre-review, you can mark the PR as ``WIP`` and the review team will wait until the draft is ready.
- **Allow edits from maintainers** option is selected. This helps the reviewer merge your WEP draft if it is accepted.
- The PR is tagged with a **draft** flag, to indicate that it is in a draft state and is ready for pre-review.
Copy link
Member

Choose a reason for hiding this comment

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

What is "tagged" here? Is this opening the PR in GitHub's draft status, a label on the PR, text in the WEP, or something else?

Choose a reason for hiding this comment

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

My understanding is this: https://github.com/writethedocs/weps/pull/1/files#diff-f47194e85dd085426bc962ab2fd3baf6R202

A GH action to parse that and set labels would be super cute.

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 that it boils down to labels that are manually assigned, rather than a draft state. Let's reword this to align with GH terminology.

ericholscher marked this conversation as resolved.
Show resolved Hide resolved


After the pull request for the WEP draft is submitted, a WEP team member reviews the pull request to make sure it adheres to the guidelines. If the WEP is clearly not ready, the reviewer might reject the pull request and ask the author to submit a new WEP after the problems have been fixed.
thatdocslady marked this conversation as resolved.
Show resolved Hide resolved

The reviewer does not vote on the proposed change itself, and only reviews the WEP for scope compliance, format, and completeness. The pre-review period is usually one week, but might change based on the scope of the pre-review feedback and the availability of the author to implement changes.
Copy link
Contributor

Choose a reason for hiding this comment

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

That suggests the "reviewer" is different from the "WEP team", which upon first reading contradicts earlier text

Copy link
Contributor

Choose a reason for hiding this comment

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

The term "reviewer" is defined in the first paragraph as "a WEP team member... reviews"

Copy link
Member Author

Choose a reason for hiding this comment

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

I've added WEP team reviewer to be more explicit, which seems fine.


After the WEP is ready for the community review, the reviewer assigns the **ready-for-discussion** label to the PR. The CoreOps team is then responsible for distributing announcements of each WEP to the relevant community segment. For example, a WEP about meetups will be shared with the Meetup team for distribution between the meetup organizers. For some WEPs, community-wide announcements will be made on Slack or to the mailing list.
thatdocslady marked this conversation as resolved.
Show resolved Hide resolved

Community review, discussion, and updates
.........................................

The standard community review period for a WEP is **30 days**. The WEP is reviewed by a process called **lazy consensus**. This means that community members either provide feedback, approve the WEP explicitly, or ignore the WEP.
Copy link
Contributor

Choose a reason for hiding this comment

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

The "community review" is different from the "reviewer" who looks at scope and compliance? The redundancy in these terms is confusing me

Copy link
Member Author

Choose a reason for hiding this comment

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

Yea, the WEP team does the initial review for acceptance, then the wider community will look at it and have input. There are effectively 2 stages of review.

Copy link
Member Author

Choose a reason for hiding this comment

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

I've changed the language to decided on, since reviewed here I agree is ambiguous.


If the review period ends without a clear consensus, but further discussion is still needed, the review period might be extended by the WEP team. The review period is never shorter than one month, but other WEPs can be submitted in the meantime, and multiple WEPs might be undergoing a community review simultaneously.

During the community review period, the WEP goes through one or more iterations of feedback and updates. Community feedback is submitted in the form of comments to the PR, and the WEP author is responsible to update the WEP content in case the incoming feedback is accepted.

All discussion on the WEP must happen on the PR in the form of comments in order to be considered as official feedback on the WEP. Of course external conversations can happen on other platforms, but the official record for a WEP discussion is only on the PR itself. If discussion happens on another platform, we recommend copying the most important points or the results of those discussions into the WEP comments.

You must have a GitHub account to post comments to a PR. If you need help getting started with GitHub, email support@writethedocs and the WTD team will help you set up your account and get familiar with GitHub basics.
mxsasha marked this conversation as resolved.
Show resolved Hide resolved

Final review and resolution
...........................

At the end of the community review period, the WEP is accepted if it meets the minimum criteria and received lazy consensus as described in the previous process stages.

The WEP team reviews the final WEP content and if it is accepted, the team merges the PR, removes the **ready-for-discussion** flag, and moves the WEP to the ``accepted`` directory of the GitHub repository.

Possible resolutions for a WEP are:

Accepted
Reason: Community feedback was completed with lazy consensus achieved, and the WEP content is complete and follows the formatting guidelines.
Action: The WEP team merges the PR and stores the WEP in the ``accepted`` directory.

Rejected
Reason: Community feedback led to disagreements about the WEP that cannot be resolved, or the original goal of the WEP is no longer considered an improvement to the community.
Copy link
Member

Choose a reason for hiding this comment

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

no longer considered an improvement to the community

I think the passive voice here makes it hard to understand the process. Is this meant to be a characterization of the review discussion (e.g., community feedback leads to a negative consensus that the WEP should be rejected)? Or is this an independent conclusion of the WEP team (e.g., the WEP team reviews the final text and makes its own decision on whether its an improvement to the community)?

Copy link
Contributor

Choose a reason for hiding this comment

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

The former, I'd say.

Copy link
Member Author

Choose a reason for hiding this comment

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

Agreed that I think we meant the former. I guess we should have a state that is "rejected by the powers that be" -- perhaps Vetoed, which makes this more explicit?

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not comfortable with a Veto option here, since it seems a bit contradictory to the consensus idea. I made a suggestion to reword the text to make it more explicit, maybe it'll solve the question.

ericholscher marked this conversation as resolved.
Show resolved Hide resolved
Action: The WEP team moves the WEP to the ``rejected`` directory and merges the PR with a description of the rejection decision.

Withdrawn
WEP author is no longer interested in pursuing the change, or no progress was made during the pre-review stage before the WEP was sent to community review.
Action: The WEP author moves the WEP moves the WEP to the ``withdrawn`` folder and merges the PR with a description of the withdrawal decision.
thatdocslady marked this conversation as resolved.
Show resolved Hide resolved

If no community consensus was reached, the CoreOps team has the final authority to decide the resolution for a WEP. The CoreOps team is responsible to communicate their decision in the PR discussion and in community announcements as needed.

Any community member can restart the WEP process on a rejected or withdrawn WEP in the future, by creating a new PR and updating the WEP according to the new information or ideas. If you are interested in restarting a WEP that was authored by someone else, we encourage you to contact the original author before you begin, in case they are interested in collaborating or have information that can help you in the process.

Implementation
..............

After a WEP is accepted, the work outlined in the WEP must be done. For most WEPs, the CoreOps team is responsible to take the needed action or coordinate with other teams to take the need actions.

For example, if this WEP is accepted, it means the system is now in place and the CoreOps team will publish the information to the community website and establish the WEP team, along with other related tasks that need to be done to implement the process in the community.

Some WEPs might require specific community segments to implement the resolution, and such requirements are described in the WEPs directly.

WEP format and style
--------------------

To make the authoring and reviewing process easier, WEPs must follow a common format and style.

We use `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ markup language for all WEPs, to align with the same markup that is used in all other Write the Doc documentation.

In most cases, you can start by copying the `WEP template <../wep-template.rst>`_ and adding content as needed. The following sections describe the various sections of the template:

.. AI - Make the template!
mxsasha marked this conversation as resolved.
Show resolved Hide resolved

File name
.........
The file name must follow the naming convention ``WEP[####]_[descriptive-but-short-title]``. For example, this WEP file is named ``WEP0000_wep-proposal``. In another example, a WEP to propose a new Slack channel naming convention might be named ``WEP0001_slack-channel-renaming``.

ericholscher marked this conversation as resolved.
Show resolved Hide resolved
Metadata
........
The WEP file must begin with a header list of metadata fields, using the standard `RST field list <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#field-lists>`_ format.

The field list usually includes the following fields:

- ``:WEP-Number:`` - Number of the WEP, in running order in 4-digit format. Only use the number value, without the acronym **WEP**. For example, this WEP is numbered ``0000``. If the number is unknown or unassigned when you first create the WEP, you can leave this field blank and the number will be updated at the resolution stage.
ericholscher marked this conversation as resolved.
Show resolved Hide resolved
- ``:Created:`` Date of initial creation, in the format YYYY-MM-DD.
- ``:Last-Modified:`` Date of the most recent changes to the WEP, in the format YYYY-MM-DD.
- ``:Author:`` - Full names of one or more authors of the WEP. Do not write email addresses or social media nicknames in this field. If the WEP is co-authored by multiple people, use a bulleted list similar to the header of this WEP.
- ``:Status:`` - Current status of the WEP. All WEPs begin with a ``Draft`` status, and the field changes with every stage in the WEP lifecycle. For example, ``Accepted``, ``Rejected``, ``Withdrawn``, ``Final``, or ``Superseded``.
- ``:Replaces:`` - Optional. If this WEP was created instead of a previous WEP that was rejected or withdrawn, list the number and title of the previous WEP.
- ``:Superceded-By:`` - Optional. If this WEP rejected or withdrawn and a newer WEP was submitted instead with updated content, list the number and title of the WEP that supercedes this WEP.
mxsasha marked this conversation as resolved.
Show resolved Hide resolved
mxsasha marked this conversation as resolved.
Show resolved Hide resolved

Structure
.........

Each WEP must contain the following sections:

#. **Header.** Header with a list of metadata fields as described in this section.
#. **Title.** Short descriptive title of the WEP. The title must follow the naming convention ``WEP[#] - [Descriptive title]``.
ericholscher marked this conversation as resolved.
Show resolved Hide resolved
#. **Abstract.** Short description of the topic that the WEP addresses. Use only 1-2 paragraphs and focus on the summary of the topic.
#. **Motivation.** Background information explaining why the existing processes or solutions need to change.
#. **Proposal.** Full description of the proposed change. This section can be as short or as long as needed, including explanations or alternatives if applicable. Use sub-headings to divide the proposal section if it contains a large amount of text.
#. **Copyright.** Boilerplate license statement for the WEP. All WEPs must be published under the **Creative Commons CC-BY 4.0** license. This boilerplate text must be used as-is without alterations.

If you are unsure whether the WEP you are authoring is structured correctly, you can submit it as a WIP draft and ask for help from the WEP team, or email us at [email protected] and we will be happy to help you with the preparation.

Acknowledgments
---------------

The WEP process is based on the `Django DEP <https://github.com/django/deps/blob/master/final/0001-dep-process.rst>`_ process, which in turn was based on the `Python PEP <https://www.python.org/dev/peps/pep-0001/>`_ process. We would like to thank the Python and Django communities for providing these open-source resources publicly and freely to help other communities.

Copyright
=========

This document is published under the `Creative Commons CC-BY 4.0 Attribution <https://creativecommons.org/licenses/by/4.0/>`_ license.
Loading