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

Commit a4176a7

Browse files
Merge pull request #131 from ipfs/processdoc
(WIP) Project Management Process document
2 parents e969654 + 4b98a7c commit a4176a7

File tree

1 file changed

+298
-0
lines changed

1 file changed

+298
-0
lines changed

drafts/Project Management Process.md

+298
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
# IPFS Project Management Process
2+
3+
**Status: work in progress, not even a full draft yet**
4+
5+
## Introduction
6+
TODO: describe the purpose of this document
7+
8+
- this is an opt-in process, nobody in the community is *required* to use this process
9+
10+
## Table on Contents
11+
- [TL;DR](#tldr)
12+
- [Projects](#projects)
13+
- [Roles](#roles)
14+
- [Product Owners](#product-owners)
15+
- [Project Leads](#project-leads)
16+
- [Project Managers](#project-managers)
17+
- [Structure](#structure)
18+
- [Overview](#overview)
19+
- [Goals](#goals)
20+
- [Backlog](#backlog)
21+
- [Milestones](#milestones)
22+
- [Project Roadmap](#project-roadmap)
23+
- [Organization Roadmap](#organization-roadmap)
24+
- [Workflow](#flow)
25+
- [Pipelines](#pipelines)
26+
- [Stages](#stages)
27+
- [Flow](#flow)
28+
- [Example](#example)
29+
- [Weekly Updates](#weekly-updates)
30+
- [Roadmap Updates](#roadmap-updates)
31+
- [Implementation Guideline](#implementation-guideline)
32+
33+
## TL;DR
34+
35+
**The IPFS project management process has the following cadence**:
36+
37+
Weekly Updates
38+
- once a week (2 weeks?)
39+
- discuss last week's progress
40+
- discuss the plans for next week
41+
42+
Roadmap Updates
43+
- every 3 months
44+
- identify, discuss and plan the next steps for the organization as a whole
45+
46+
**The IPFS project management process defines the following units of work**:
47+
48+
Projects
49+
- may contain other projects
50+
- have a project leader who "roadmaps" (decides what are goals and milestones, and when they should happen)
51+
- have a roadmap (list of milestones and goals)
52+
- have a backlog (list of goals)
53+
54+
Milestones
55+
- measurable unit of progress
56+
- contains a list of goals, ordered by priority
57+
- usually but not always sequentially ordered
58+
- may have a deadline
59+
60+
Goals
61+
- an individual actionable unit of work
62+
- may have other Goals as dependencies
63+
- may have parts or sub-goals
64+
- may have parts or sub-goals big enough to merit own Goals
65+
66+
**The IPFS project management process, planning and tracking work is done with the following tools**:
67+
68+
Roadmaps
69+
- are attached to a project
70+
- have a list of milestones, ordered by estimated completion date or dependencies
71+
72+
Backlogs
73+
- are attached to a project
74+
- have a list of all unfinished goals for a project, ordered by priority
75+
76+
Pipelines
77+
- have a set of stages through which goals move (the steps between "not done" and "done")
78+
- show what has been completed, what's being worked on at the moment and what will be worked on next
79+
80+
81+
## Projects
82+
TODO
83+
84+
## Roles
85+
TODO
86+
87+
#### Project Leads
88+
TODO
89+
- the leaders and drivers of the projects
90+
- the goto person of a project, the one with all the details as well as the big picture
91+
- responsible of managing the plan and work for a project
92+
- one can own multiple projects
93+
94+
#### Product Owners
95+
TODO
96+
- possibly drop this?
97+
98+
#### Project Managers
99+
TODO
100+
- possibly drop this?
101+
102+
#### The Sprint Master
103+
104+
Ideally, there should be a sprint master who knows every participant's tasks and projects intimately, helps moderate work loads, checks in when a task has been taking long than expected, sets the sprint goals, and adds any urgent or incoming business to the sprint. Realistically, this is done by the discussion leads and the team as a whole. The sprint administrator was created to minimize the sprint master's admin, and to help the discussion leads.
105+
106+
#### The Discussion Leads
107+
108+
Each discussion has a lead, and each lead is responsible for preparing for that talk before hand. There is a [sprint-issue-template](sprint-issue-template.md) available for discussion leads to add into an Etherpad for their sprint; the admin should have already filled out the Etherpad with the template, and linked to your Etherpad in the sprint issue. After the discussions, the lead should add the notes directly into the current sprint issue.
109+
110+
#### Sprint Administrator
111+
112+
The sprint administrator (normally [@RichardLitt](//github.com/RichardLitt)) is responsible for the sprint process every week.
113+
114+
***TODO: Link to a document with the specific tasks***
115+
116+
## Structure
117+
118+
### Overview
119+
The project information across the organization is tracked with the structure described in this section. At the highest level, we have an Organization Roadmap, which lists all projects and their milestones. Each project contains a set of milestone and milestones contain one or more goals. Goals are the basic unit of work and they describe everything from bugs and new features to general tasks. Goals are collected and tracked in a Backlog.
120+
121+
```
122+
Organization | Project 1 Project 2 ...
123+
|
124+
Roadmap | Roadmap Roadmap
125+
|
126+
Milestones | Milestone 1 Milestone A
127+
Milestone 1 | Goal 1 Goal A
128+
Milestone 2 | Goal 2 Milestone B
129+
Milestone 3 | Goal 3 Goal B
130+
Milestone A | Milestone 2 Goal C
131+
Milestone B | Goal 4 Goal D
132+
Milestone C | Milestone 3
133+
... | Goal 5
134+
|
135+
Projects |
136+
Project 1 | Backlog Backlog
137+
Project 2 | Goal 1 Goal A
138+
... | Goal 2 Goal B
139+
| Goal 3 Goal C
140+
| Goal 4 Goal D
141+
| Goal 5
142+
```
143+
*Goals are collected in project's backlog. Milestones bundle goals together. A roadmap consists of milestones. Organization's roadmap collects al milestones from all projects together.*
144+
145+
### Goals
146+
At the heart of each project are the goals. They are the basic unit of work. Goals can be anything that ***adds value to a release***. This includes issues reported by users, feature requests, bugs, Pull-Requests, general tasks such as refactoring, documentation or research. Goals are collected, maintained and tracked in the backlog by the project lead.
147+
148+
A goal description includes the following:
149+
- Name / Summary
150+
- Describes what the goal is on high level
151+
- Example 1: "Reduce the size of the go-ipfs executable"
152+
- Example 2: "js-ipfs should have API Documentation"
153+
- Description
154+
- What the problem is and how to achieve this goal
155+
- Should tell you how you will know that the problem has been solved or the goal has been achieved
156+
- Describe the type of this goal: is it a bug? a new feature? something else?
157+
- Status
158+
- The status should signal the goal's status towards completion
159+
- What is the current state of this goal? Is it to-be-reviewed? In progress? Blocked? Done?
160+
- A goal can be in only one state at a time
161+
- Dependencies (where applicable)
162+
- Links to other goals that must happen before or concurrently with this one
163+
- Any additional information that helps to reach this goal (optional)
164+
165+
TODO: a clear example
166+
167+
### Backlog
168+
Backlog is the collection of all goals in a project. It should be as comprehensive as possible, including everything that needs to happen or should happen in a particular project. The backlog indicates priority by order: the items that have the highest priority are at the top of the list. The backlog is owned and maintained by the project lead. As part of daily work, the backlog gets updated and a general grooming should happen on weekly basis.
169+
170+
A backlog has the following information:
171+
- All goals of a project
172+
- Priority of goals in sorted order
173+
- Sections (optional)
174+
175+
While the backlog is usually one big list of goals, it may sometimes become convoluted. In this case, the backlog can contain sections: ***Future Work*** and ***Ready***. The future work section lists goals that will probably not be worked on anytime soon, or are not ready to be worked on yet, whereas the ready section contains the goals that are ready to be worked on or "approved". If sectioned, together they are called "the backlog" while *Future Work* and *Ready* are referenced only in their specific meaning to describe the intent inside the backlog. The sectioning is up to decision of the project lead.
176+
177+
***TODO: decide if we want to limit sectioning to those two or is this something that the projects can decide for themselves?***
178+
179+
### Milestones
180+
A milestone is batch of goals that together achieve a significant, measurable improvement to the product or project. Each project has a set of milestones. A milestone is completed when all goals associated with it have been completed. Milestones are tracked in the project roadmap by the project lead.
181+
182+
A milestone has the following information:
183+
- Name
184+
- Example 1: "Release go-ipfs v0.5.0"
185+
- Example 2: "Working prototype of Pubsub implementation in go-ipfs"
186+
- Example 3.1: "go-ipfs and js-ipfs implementations can interoperate"
187+
- Example 3.2: "go-ipfs and js-ipfs clients use the same network"
188+
- Description
189+
- List of goals attached to it
190+
- Progress indicator
191+
- Estimated completion date (where applicable)
192+
- List of dependencies and related material (where applicable)
193+
194+
The Project Lead keeps current milestones up to date on weekly-basis. New milestones should be generated and old milestones updated before the quarterly planning meeting. Prepare new milestones in good time before quarterly planning.
195+
196+
Milestones help make Roadmaps achievable, and they give the team and users a clear sense of progress. There's no hard and fast way to decide what a Milestone's boundaries are. It is up to the project leader to select what Goals constitute a Milestone and what Milestones constitute a Roadmap. Sometimes it will be clear how to break down a Roadmap into manageable pieces. Sometimes it will be clear which goals to bundle in a Milestone. The important thing is to make manageable groups (not too big) that provide a significant enough sense of progress through the Roadmap.
197+
198+
TODO: a clear example
199+
200+
### Project Roadmap
201+
The milestones are tracked in project's roadmap. The project lead owns the roadmap and is responsible for generating, updating and tracking the milestones. To make sure the roadmap is up to date, the project lead should go through the current milestones on weekly basis.
202+
203+
The Roadmap Document contains the following information:
204+
- List of current milestones
205+
- Sequentally ordered, eg. by expected due date or dependency on other milestones (where applicable)
206+
- Next upcoming milestone at the top
207+
- Current status of the project, ie. milestone progress
208+
- List of previous milestones
209+
210+
The roadmap can be a high-level overview of milestones and project's progress, so details such as list of goals per milestone can be omitted. However, if omitted, the roadmap must contain links to the detailed break down.
211+
212+
Examples:
213+
- [js-ipfs roadmap](https://github.com/ipfs/js-ipfs/blob/master/ROADMAP.md#ipfs-javascript-implementation-roadmap)
214+
- [Orbit roadmap](https://github.com/haadcode/orbit/blob/master/ROADMAP.md#orbit---roadmap)
215+
216+
### Organization Roadmap
217+
An overview of all projects across the organization is tracked in organization's roadmap. This is similar to a project roadmap, but collects all milestones from all projects into one place.
218+
219+
Organization roadmap contains the following information:
220+
- List of all projects
221+
- List of all current milestones and their progress in each project
222+
- List of links to old milestones
223+
224+
The organization roadmap is owned by project management and project managers are responsible for generating and keeping the roadmap up to date. The roadmap should be updated in the quarterly planning meeting as old milestones are reviewed and the project leads commit to new milestones.
225+
226+
TODO: a clear example
227+
228+
## Workflow
229+
230+
### Pipelines
231+
The IPFS Project Management Process uses Pipelines to process goals towards a release. Pipelines are a simple way to describe the workflow of a project and move Goals between the different stages in their lifecycle.
232+
233+
#### Stages
234+
Pipelines are sequential stages through which a Goal goes during its lifetime. The different stages are broken down per the workflow of each project. On high level the stages can be described as: `Not Done ──> In Progress ──> Done`. Different projects might have different stages in their development pipeline and it is up to the project lead to identify and define the stages her project uses.
235+
236+
***Proposal: Unify "Future Work", "Backlog" and "Done" stages for all projects, let project leads define stages of the "Development" phase.***
237+
238+
#### Flow
239+
Goals move from pipeline's entry stage towards the completion stage and a Goal can be only in one stage at a time. Usually goals move one way, in sequential order, but sometimes goals can move back between the stages (eg. `In Progress ──> Review ──> In Progress`). Sometimes a goal can't progress due to something preventing it to move to the next stage. To ensure surfacing blockers, each pipeline should have a ***"Blocked"*** stage where blocked goals are moved as soon as they occur.
240+
241+
#### Example
242+
243+
***An example pipeline could have the following stages:***
244+
245+
```
246+
╭─────────────────────────────────── Pipeline ──────────────────────────────────────╮
247+
│────── 1. ────│──── 2. ───│─── 3. ──│────── 4. ─────│─── 5. ───│──── 6. ───│── 7. ─│
248+
│ Stages │
249+
250+
╭────────────╮
251+
──> Future Work ──> Backlog ──> Ready ──> In Progress ──> Review ──> Release ──> Done ──>
252+
│ │ │ │ │
253+
╰─────────────╯ │ │ │
254+
╰───────── Blocked ────────╯
255+
Phases
256+
│───────── Backlog ────────│──────────── In Progress ───────────│──── Complete ─────│
257+
╰───────────────────────────────────────────────────────────────────────────────────╯
258+
```
259+
260+
1. Future Work - the goal is identified and being fleshed out. It is not ready to be carried out at this moment.
261+
2. Backlog - the goal is well defined but not planned to be carried out at this moment.
262+
3. Ready - the goal is planned to be carried out, waiting to be worked on.
263+
4. In Progress - the goal is actively being worked on, this moment.
264+
5. Review - the development of the goal is done, but a review needs to happen before it can be included in a release.
265+
6. Release - the goal is waiting to be inckuded in a an official release.
266+
7. Done - the goal is completed. No further action is necessary.
267+
268+
* Blocked - the goal cannot proceed as something is preventing it to move down the pipeline.
269+
270+
### Weekly updates
271+
To review and discuss progress of each project and the organization as a whole, we hold weekly update meetings.
272+
273+
TODO: describe our weekly process. don't call it a "Sprint" anymore(?)
274+
275+
### Roadmap updates
276+
To review and discuss progress of each project and the organization as a whole, we hold quarterly roadmap update meetings.
277+
278+
TODO
279+
280+
What:
281+
- Event to update and plan the organization's / project's roadmaps.
282+
- Identify projects' / organizations' needs and main efforts.
283+
- Commit to efforts and goals.
284+
- Produce a high level overview of a roadmap.
285+
286+
Who: Product Owners, Project Leads, Project Managers
287+
How often: Every 3 months
288+
Output: Organization Roadmap (responsible: PM)
289+
290+
This could be also a constant process instead of doing all that work tied to quarterly event. If the work was constant, we could still have an update event to go through the updated/new roadmap(s).
291+
292+
## Implementation Guidelines
293+
TODO
294+
295+
- automation
296+
- Generating milestone documentation: https://github.com/ipfs/pm/pull/131#discussion_r73778673
297+
- github
298+
- waffle

0 commit comments

Comments
 (0)