Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Commit

Permalink
feat: promote Lead Maintainer Protocol to be Org wide -> Repo Lead Ma…
Browse files Browse the repository at this point in the history
…intainer Protocol (#822)

* docs: promote Lead Maintainer Protocol to be Org wide

* docs: make it clear that this is about maintaining the repo and not the whole project

* apply CR

* Update LEAD_MAINTAINER_PROTOCOL.md

Co-Authored-By: daviddias <daviddias.p@gmail.com>
  • Loading branch information
daviddias authored May 1, 2019
1 parent f2275a5 commit 42b7481
Showing 1 changed file with 42 additions and 21 deletions.
63 changes: 42 additions & 21 deletions LEAD_MAINTAINER_PROTOCOL.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,72 @@
## Tech Leads and Lead Maintainers
## Repo Lead Maintainer Protocol

> This section is a formalization of the proposal and discussion around the [Module Lead Maintainers - Sharing the Responsibility over the IPFS module base](https://github.com/ipfs/pm/issues/600) proposal.
> This section is a formalization of the proposal and discussion around the [Module Lead Maintainers - Sharing the Responsibility over the IPFS module base](https://github.com/ipfs/pm/issues/600) proposal, originally desined for the JS Ecosystem within the IPFS Project.
**Currently, this Protocol is only being executed by the JS ecosystem of the IPFS Project.**
## Motivation

We have two types of leads in the JavaScript project ecosystems, the Tech Lead and the Module Lead Maintainer. A brief description of both roles is:
We develop the IPFS Project as an Asynchronous and Distributed Organization. In order to operate at a global scale, written documentation, curation and improving its discoverability needs be at the core of our competencies. Having clear and lean docs that are well maintained can avoid a misdirection or misinformation, saving hours in productivity and making our contributors happier.

- A Tech Lead directs the development of an entire ecosystem of modules (i.e js-ipfs, js-libp2p, js-ipld and js-multiformats), it has a complete understanding of the stack, the IPFS project, its goals and participates actively in the ROADMAP planning.
- A Lead Maintainer is a contributor that has shown extraordinary ability to contribute to the project and willingness to make the project better by taking the responsibility of stewarding one of its modules forward.
To plant the idea of how important this written communication is, here is a thought example: Imagine that you spend 30 minutes refactoring a README of a repo, fixing broken links, making sure that the information is accurate and so on and in the end, what you achieve is that the next person will be able to save 1 minute of their time searching for the info they need. You might think "whoa, I just spend 30 minutes for an individual to save 1? Maybe this was not worth it at all". This thinking is incorrect, because within a project of 3500+ contributors, you are saving time for thousands. Some of those people might not have ever found the information if not for your work (or may have left the repo confused), which magnifies your contribution even more.

In addition to this, having a clear Repo Lead Maintainer Protocol for Software Projects yields other values results, such as reduced release time, code reviews and faster response to issues.

## Description

A Repo Lead Maintainer is a contributor that has shown extraordinary ability to contribute to the project and willingness to make the project better by taking the responsibility of stewarding one of the repos forward. This repo can be code, documentation, specifications, research discussion, etc.

With this structure, we expect to achieve the following goals:

- Recognize extraordinary contributions and empower contributors to take an even more important role in the project.
- Keep issues and information organized.
- Reduce PR review time and Time To Release.
- Increase the overall quality of the project.
- Help users know who to reach out to for help.
- Have a clear protocol to pass on the baton.

The current Tech Leads are:
The current Lead Maintainers should be identified in a `Repo Lead Maintainer` section in the README.md of the repo and a maintainer.json file at the root of the repo with the following format:

- [David Dias](https://github.com/daviddias/) for js-ipfs, js-libp2p js-multiformats ecosystems.
- [Volker Mische](https://github.com/vmx) for the js-ipld ecosystem.
```JavaScript
{
"repoLeadMaintainer": {
"name": "<Repo Lead Maintainer Name>",
"email": "<Repo Lead Maintainer Email Address>",
"username": "<Github Username>"
},
"workingGroup": {
"name": "<Name of the Working Group that owns this Repo>",
"entryPoint": "<Url to the coordination entry point for the Working Group>"
}
}
```

The current Lead Maintainers can be identified either by the `leadMaintainer` field in the package.json of the module and/or the section `Lead Maintainer` in the README.md of the module.

**Lead Maintainer responsibilities:**
**Repo Lead Maintainer responsibilities:**

- Respect and follow the [IPFS Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
- Have a complete understanding of the module purpose, its specification (if any) and how the module is used by other parts of the project.
- Review and merge PRs.
- Respond in a timely manner to Github issues and curate them to ensure that duplicates are coalesced, issues are labeled with difficulty and priority, and also tag any issue that is open for new contributors with the `help wanted` label.
- Publish new versions of the module to npm.
- Release new versions of the module/package (if a code Repo).

**Lead Maintainer expected attitude:**
**Repo Lead Maintainer expected attitude:**

- Be proactive in increasing the quality of the module. This goes from improving documentation, tests, codebase and more.
- Show a great level of rigor and polish in the code that they ship.
- Help others in understanding how the module works and why it exists.
- Help others in understanding how the module works (or repo) and why it exists.
- Apply the established Contributing Guidelines to the project and help others do too

**How to become a Lead Maintainer:**
**How to become a Repo Lead Maintainer:**

Currently, there is no formal test or request form to do so. Lead Maintainers will be invited and nominated by the Tech Lead once the expected behaviour and rigor is observed. A Lead Maintainer can nominate the next Lead Maintainer to the Tech Lead
Currently, there is no formal test or request form to do so. Repo Lead Maintainers will be invited and nominated by one of the IPFS Tech Leads and/or Working Group Captains once the expected behaviour and rigor is observed. A Repo Lead Maintainer can nominate the next Repo Lead Maintainer to the IPFS Tech Lead and/or Working Group Captain.

**In practice:**

- Update each package.json and README.md to have a `leadMaintainer` field.
- Update packages table on each entry module (e.g https://github.com/ipfs/js-ipfs#packages) to also list the maintainer for each.
- Protect the master branch and only grant permissions for merge to the Maintainer and the Tech Lead, only.
- Grant publish permission to the Maintainer and Tech Lead (or another Tech Lead if it’s the same person), only.
- Create a maintainer.json and update the README.md to have a `Repo Lead Maintainer` section.
- Protect the master branch and only grant permissions for merge to the Lead Maintainer and respective Working Group members.
- If a software project, grant publish permission to the Lead Maintainer and Tech Lead (or another Tech Lead if it’s the same person), only.
- Ensure that the repo also has the Working Group respective badge on the README for easy one click jump to entrypoint.

## Repo Lead Maintainers for IPFS Repos

```
TODO - Create table using package-table
```

0 comments on commit 42b7481

Please sign in to comment.