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

(WIP) Project Management Process document #131

Merged
merged 13 commits into from
Aug 18, 2016
168 changes: 168 additions & 0 deletions Project Management Process.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# IPFS Project Management Process

**Status: work in progress, not even a full draft yet**

## Introduction
TODO: describe the purpose of this document

## Table on Contents
- [Projects](#projects)
- [Roles](#roles)
- [Product Owners](#product-owners)
- [Project Leads](#project-leads)
- [Project Managers](#project-managers)
- [Structure](#structure)
- [Overview](#overview)
- [Goals](#goals)
- [Backlog](#backlog)
- [Milestones](#milestones)
- [Project Roadmap](#project-roadmap)
- [Organization Roadmap](#organization-roadmap)
- [Flow](#flow)
- [Quarterly Planning](#quarterly-planning)
- [Software Development Pipeline](#software-development-pipeline)
- [Implementation](#implementation)

## Projects
TODO

## Roles
TODO

### Product Owners
TODO

### Project Leads
TODO

### Project Managers
TODO
Copy link
Member

Choose a reason for hiding this comment

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

I'm interested in knowing what goes here. A item list of the things you want to describe would be good enough to start

Copy link
Member Author

Choose a reason for hiding this comment

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

Having thought about this, I would actually leave out the Product Owners part (not used anywhere else in the document and can be different per project, and as an organization, who's a product owner and who's not?).

Perhaps leave out the project managers part, too as this would be more an individual roles on the participating organizations. Or should we try to describe the roles of project managers?


Copy link
Member

Choose a reason for hiding this comment

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

We should also add the roles from the current README.

### Roles

#### The Sprint Master

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.

#### The Discussion Leads

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.

#### Sprint Administrator

The sprint administrator (normally [@RichardLitt](//github.com/RichardLitt)) is responsible for the sprint process every week.

** GitHub tasks**

- Opens a new issue for the sprint on GitHub, and posts a link to it on IRC ahead of time. To open an Etherpad, go to https://etherpad-mozilla.org.
- Opens an etherpad for each discussion and copies in the [sprint-issue-template](sprint-issue-template.md) to each etherpad, making sure that the etherpad URL matches the discussion link in the new sprint issue.
- Pings each of the discussion leads to remind them to prepare for their talks the next day, preferably by writing an agenda
- Asks people to drop their updates in the old sprint issue before the sync
- Reminds people to drop their TODOs in the new sprint issue after the discussions.

** Sync tasks**

- Begins each sprint sync with a roll-call by pinging active contributors (listed below) on IRC.
- Prompts everyone who participated in the previous sprint to update on their work. The best way to choose who goes first is to go off of a first-post-first-sync method, where all participants add their updates to the old PM issue, and the first to do so generally syncs first in the IRC channel.
- Closes up by making sure everyone who needs to has gone.

** Discussion tasks**

- Sets up the videos and moderates them, using the process outlined in [hangouts.md](hangouts.md).

In particular, I'm curious how the sprint administrator will change (me).

## Structure

### Overview
The project information across the organization is tracked with the structure described in this chapter. 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.
Copy link
Member

Choose a reason for hiding this comment

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

Section, not chapter.

Copy link
Member

Choose a reason for hiding this comment

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

Backlog nominally refers to things which aren't prioritized (in my opinion). Here, it seems to just be used for anything not currently in development. Is this right?

Copy link
Member

Choose a reason for hiding this comment

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

It also has a strong negative connotation: "I have a huge backlog". Just want to note that.

Copy link
Member Author

Choose a reason for hiding this comment

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

Backlog is the "place" where all goals are collected in. If a goal is being worked on, it's still in the backlog. I think technically "done" goals can also be in the backlog (just that there's no point of having them there). My previous comment re. standard terminology also applies here.


```
Organization | Project 1 Project 2
|
Roadmap | Roadmap Roadmap
|
Milestones | Milestone 1 Milestone A
Milestone 1 | Goal 1 Goal A
Milestone 2 | Goal 2 Milestone B
Milestone 3 | Goal 3 Goal B
Milestone A | Milestone 2 Goal C
Milestone B | Goal 4 Goal D
Milestone C | Milestone 3
| Goal 5
Projects |
Project 1 | Backlog Backlog
Project 2 | Goal 1 Goal A
Project 3 | Goal 2 Goal B
| Goal 3 Goal C
| Goal 4 Goal D
| Goal 5
```
Copy link
Member

Choose a reason for hiding this comment

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

I don't understand this chart. Where is Project 3? Why is there a mixture of numbers and letters? Why are milestones under the Roadmap, and under projects - shouldn't they just be under projects? Can goals be in multiple milestones?

Copy link
Member

Choose a reason for hiding this comment

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

  • Project 3 is implicit, it doesn't need to be show because it doesn't fit. think of it like a series A_1, A_2, A_3, .... A_n
  • Numbers and letters are there to show that projects can identify their milestones how they wish, instead of imposing some structure from above. (this is to avoid implying numbers are a MUST and get into pedantic disagreement)
  • Milestones are under the "Oranization Roadmap" to show that organizations contain all projects and their milestones. Think of it as ls org/projects/*/milestones/*
  • For simplicity here, i think goals are always in one milestone, but i think that's a good point. goals could be in more than one milestone. i think in practice mechanics may have to twist too much to support that, so i think it may be good to either agree they NEVER belong to more than 1 milestone (i think overly strict) or define how to deal with a goal needing to be in two milestones (eg list it under the one expected to complete sooner, or make a meta-issue if you have to, or something).

Copy link
Member

Choose a reason for hiding this comment

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

  • If project three is implicit, the graph should show that.
  • We should make it clear that milestones can be identified differently, in the text above.

My questions aren't so much "I don't understand" as they are "This is confusing and may confuse people, we should adjust it accordingly." Laying out your points in the text would help.

Copy link
Member Author

Choose a reason for hiding this comment

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

My original goal for this graph was to show how the information hierarchy works between projects and organization and how the organization derives its roadmap from the projects, not necessarily "belongs to" or "is in 1" relationship. Fail, obviously. I'll try to improve this, thinking of lines and arrows or an explanation text to describe what you see in the graph. Suggestions appreciated!

As for milestones vs. goals:

Can goals be in multiple milestones?
i think goals are always in one milestone

I would say no. A goal should only be in one milestone. If there are cases where a goal would belong to two milestones, then that goal should be broken down. I can't think of a case where you would need a goal in two milestones at the same time, any examples you can give?

We should make it clear that milestones can be identified differently, in the text above.

Not sure which part you mean. Can you provide an alternative text?


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

A goal description includes the following:
- Name / Summary
- Describes what the goal is on high level
- Example 1: "Reduce the size of the go-ipfs executable"
- Example 2: "js-ipfs should have API Documentation"
Copy link
Member

Choose a reason for hiding this comment

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

These are worded very differently. We should have a section about actionably wording names.

Copy link
Contributor

@flyingzumwalt flyingzumwalt Aug 12, 2016

Choose a reason for hiding this comment

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

NB: I'm not sure if this is injecting too much of my methodology here, but I would push back against these issues if they were in my repo so I'm skeptical of using them as examples here. I recommend changing the examples to read more like this:

Example 1: "Reduce the size of the go-ipfs executable to 850kb or less"
Example 2: "API Documentation for js-ipfs includes 100% of public methods"

This is because with the current wording you could satisfy both of these goals by doing something trivial. They aren't adequately clear about the work that needs to be done or how you will test whether it has been done. FWIW, this article, The Definition of Ready in Scrum, frames a big part of how I tend to think about whether a ticket/goal is adequately framed and ready to work on (they must be clear, testable and feasible). Is that too Scrum-specific?

Copy link
Member

Choose a reason for hiding this comment

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

👍 to @flyingzumwalt's comments. would love to make our goal titles clear, testable, and feasible.

Copy link
Member

Choose a reason for hiding this comment

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

👍 to have goals with clear ways to assess their completion.

- TODO: what is a good name for a goal?
- Description
- What the problem is and how this goal solves it
Copy link
Contributor

Choose a reason for hiding this comment

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

I usually emphasize that the description should tell you how you will know that the problem has been solved or the goal has been achieved. The description should give enough info to finish the statement "You will know this is done when..."

Related: it's important to emphasize that goals should always have a clear completion state. Example: "Better test coverage" and "Improve UX" are bad goals.

Copy link
Member

Choose a reason for hiding this comment

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

👍 yeah +1 for making the goals result-oriented and properly actionable.

- Type
- Describe the type of this goal: is it a bug? a new feature? something else?
Copy link
Member

Choose a reason for hiding this comment

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

i'd be wary of introducing types as a construct. i think just leave it out. Issues will have different "types", "tags", "labels" and that will be clear/implicit in the descriptions. removing the notion from this model will simplify the model without losing anything ("type" does not get used anywhere else in this document)

- Status
- What is the current status of this goal. Is it to-be-reviewed? In progress? Blocked? Done?
Copy link
Member

Choose a reason for hiding this comment

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

Okay, so this seems to be where the "stages of the kanban pipeline" get introduced. Please be explicit here that these are mutually exclusive states: an issue can only be one of "in progress", "blocked", "done". Also, express ALL the states, and define clear way to decide what state an issue belongs to. Basically:


  • Status (kanban stage)
    • What is the current status of this goal? It can be one of:
      • Icebox / Future Work - the goal is identified and being fleshed out. It is not ready to be carried out at this moment.
      • Backlog - the goal is well defined and ready to be carried out, but not being actively worked on.
      • In Progress - the goal is actively being worked on, this moment.
      • Blocked - the goal cannot proceed as another goal must be Done first.
      • Done - the goal is completed. No further action is necessary.
    • These stages form the "Kanban Progress Pipeline"

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'm hesitant to lockdown the pipeline stages. While we provide an overall, "start here", stages, in reality they may be different for different projects (software vs. spec projects, blog vs. go-ipfs). While most projects' workflow can use simplified stages (as above), some might have extra steps, like "QA" or "Sign off" which can be logical parts of some projects. I'd like to leave that to individual projects to decide.

The important part is the structuring of information into the work units described here and using a "pipeline" as a pipeline (ie. stages are the "flow" of work specific to the process of the particular project)

- Dependencies (where applicable)
Copy link
Member

Choose a reason for hiding this comment

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

  • Dependencies
    • Links to other goals that must happen before or concurrently with this one.

- Priority (optional, priority can be defined in the backlog)
Copy link
Member

Choose a reason for hiding this comment

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

  • i would remove priority from here, it's not a property of the goal. As you define below, the priority is determined by order (sorting) in the column. therefore the priority is defined relative to others (which is way easier to reason about and much more actionable)
  • sure waffle allows this? i'm not.

Copy link
Member Author

Choose a reason for hiding this comment

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

Removed priority, what you say above makes sense.

Waffle allows priority, drag & drop the cards vertically in a column.

- Any additional information that helps to reach this goal (optional)

TODO: a clear example

### Backlog
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.
Copy link
Member

Choose a reason for hiding this comment

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

What's the difference between daily work updating, and general grooming?

Copy link
Member Author

Choose a reason for hiding this comment

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

In my head the difference is that daily work usually involves a particular set of goals that are being actively worked on --> more attention, daily grooming. General grooming == goals that are not being worked on actively but still need attention (eg. preparing goals to be ready to be worked on, updating their status as discussions evolve, etc.). Or changing goal priorities is grooming work that falls outside the "daily work". Does that make sense?

Copy link
Member

Choose a reason for hiding this comment

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

From my perspective (and what I typically do and apparently similar to @haadcode's version) it is:

  • Daily grooming - prepare the next day, I try to make sure to use my last breaths of each day to tell me what I need to do the next day, so that as soon as I get to work, I can start being efficient
  • General grooming - 1 or 2 times a week, go through all the issues, make sure everyone is getting their answers, that duplicates are merged, that contributors have what their need in order to make contributions. A general 'keep the ball rolling for everyone'


A backlog has the following information:
- All goals of a project
- Priority of goals in sorted order

While the backlog is usually one big list of goals, it may sometimes become convoluted. In this case, the backlog list can be split in two: Backlog and Icebox. The icebox section lists goals that will probably not be worked on anytime soon, or are not ready to be worked on yet, whereas the backlog itself contains the goals that are ready or "approved". If split, together they are called "the backlog" and icebox is referenced only in its specific meaning. The split and maintenance of both lists are done the project lead.
Copy link
Contributor

@flyingzumwalt flyingzumwalt Aug 4, 2016

Choose a reason for hiding this comment

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

+1 for the icebox. It's super useful. We used to call ours "future work" just to be sassy.

Copy link
Member

@jbenet jbenet Aug 6, 2016

Choose a reason for hiding this comment

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

+1 for "future work". icebox sounds like "ehhh dont do this. boring. not useful enough. yeah maybe, but probably never.". i always felt bad putting things into "icebox". "future work" sounds much, much better to me.

Copy link
Member

Choose a reason for hiding this comment

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

I think we should differentiate "future work" and "backlog" much more explicitly. meaning, "future work" is not part of the backlog. There's three things here:

    1. Future Work
    1. "Things that are ready to be worked on" (backlog? Ready?)
    1. Future Work AND "Things that are ready to be worked on" (backlog? Todos?)

Let's pick a name for both. I think it's typical to call (2.) Backlog in board. but because (1) and (2) were differentiated from (3) (which was historically called Backlog) there's confusion.

I would be in favor of calling (2.) "Ready", which make it very clear that they're ready to go. "backlog" is a more apt name for (2 U 3) i think.

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 tried to break this down more in the latest revision. Still not sure what would be the best way. "Future Work" is definitely better than "Icebox". I think "Ready" is more a state than a description of "where is it listed". Then again, "Ready" + "Future Work" == "Backlog" makes sense...

Copy link
Member Author

@haadcode haadcode Aug 11, 2016

Choose a reason for hiding this comment

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

Added this to the document.

An example pipeline could look something like this:

    ╭───────────────────────────────────── Pipeline ─────────────────────────────────────╮
    │ Stages                                                                             │

  ──> Future Work ──> Backlog ──> Ready ──> In Progress ──> Review ──> Done ──> Released ──>
           │             │          │             │            │ 
           ╰─────────────╯          │             │            │
                                    ╰───────── Blocked ────────╯
      Phases
    │──────────── Backlog ─────│──────────── Development ───────────│───── Release ──────│
    ╰────────────────────────────────────────────────────────────────────────────────────╯

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated:

_An example pipeline could have the following stages:_

  ╭─────────────────────────────────── Pipeline ──────────────────────────────────────╮
  │────── 1. ────│──── 2. ───│─── 3. ──│────── 4. ─────│─── 5. ───│──── 6. ───│── 7. ─│
  │ Stages                                                                            │

                                                ╭────────────╮
──> Future Work ──> Backlog ──> Ready ──> In Progress ──> Review ──> Release ──> Done ──>
         │             │          │             │            │ 
         ╰─────────────╯          │             │            │
                                  ╰───────── Blocked ────────╯
    Phases
  │───────── Backlog ────────│──────────── Development ───────────│──── Complete ─────│
  ╰───────────────────────────────────────────────────────────────────────────────────╯
  1. Future Work - the goal is identified and being fleshed out. It is not ready to be carried out at this moment.
  2. Backlog - the goal is well defined but not planned to be carried out at this moment.
  3. Ready - the goal is planned to be carried out, waiting to be worked on.
  4. In Progress - the goal is actively being worked on, this moment.
  5. Review - the development of the goal is done, but a review needs to happen before it can be included in a release.
  6. Release - the goal is waiting to be inckuded in a an official release.
  7. Done - the goal is completed. No further action is necessary.
  • Blocked - the goal cannot proceed as something is preventing it to move down the pipeline.


### Milestones
A milestone is a group of project's goals. 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.
Copy link
Member

Choose a reason for hiding this comment

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

can we define something more clear for what makes a milestone? maybe something along the lines of:

  • A batch of goals that want to be completed around the same time.
  • A batch of goals that together achieve a significant improvement to the product.
  • A batch of goals that should be worked on concurrently.
  • is it "a group of related issues"? i dont think so, because those could span long, long time, and we want milestones to be time oriented or at least sequentially ordered?

or maybe it's a combination of these? i'm not sure. but being clear here will help us make sure we all agree on how to "milestone" the roadmap. In fact perhaps a more actionable approach is to say:

The Roadmap is broken down into manageable work units that combine goals into a significant improvement in the product. Milestones help make large Roadmaps achievable, and they give the team and users a clear sense of progress. Milestones may be made up of related Goals, Goals that should be completed around the same time, or Goals that together achieve a significant improvement (a larger Goal). Projects with Release schedules will likely use at least one Milestone per release. Milestones are usually, but not always, sequentially ordered, and they could be used to get a sense of time delays for features. But in practice, some Milestones may not be sequentially dependent, and the Roadmap could be rearranged.

Perhaps this, but im not sure i agree with it fully:

There's no hard and fast way to decide what a Milestone's boundaries are. It is up to the project leader or project manager 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 how to bundle related Goals together. The important thing is to make manageable groups (not too big) that provide a significant enough sense of progress through the Roadmap.

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated the document and tried to summarize the important parts. See if it's better now.

Copy link
Member

Choose a reason for hiding this comment

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

yeah it's solid i think


A milestone has the following information:
- Name
- TODO: describe what is a good name, give an example
- Due date
Copy link
Member

Choose a reason for hiding this comment

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

always a due date?

I think we should motivate Due Dates more seriously, with something external. Basically:

  • "Required By" is a time (or moment defined by when other Milestones that depend on this one must happen)
  • "Due Date" is a date like RequiredBy - TestingTime - BufferTime

IDK, due dates can be hard. If we do them, we HAVE TO make them count, commit to them seriously, follow them strictly, and adjust them as necessary. Due dates absolutely suck if they start slipping. they become useless, induce guilt without a sense of actionability, and reflect poorly on the team.

Copy link
Member Author

Choose a reason for hiding this comment

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

Changed "Deadline", it being optional.

- List of goals attached to it
- Progress indicator
Copy link
Contributor

Choose a reason for hiding this comment

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

In cases where a milestone needs a bit of description, or links to related docs, does this go into an optional description section in the milestone or does it go somewhere else?

Copy link
Member

Choose a reason for hiding this comment

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

Does the Progess Indicator really belong in the model specifically? The progress indicator seems to be just (# of Goals done / # of Goals total).

This can likely be measured similarly within a Goal (as Goals will likely have subparts, though not significant enough to track in this model).

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 would like to see a progress information tied to each milestone. Without it, there's no real way to track the status on higher level as it would be either "done" or "not done". I would like to be able to look at a project and answer the questions "how far are we from completion?" as there's a big difference between 2 / 10 and 9 / 10 goals completed. Perhaps it could be described as "Status" instead of "Progress indicator"?


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.

TODO: a clear example

### Project Roadmap
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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Where do Releases fit? Are Releases tracked as Milestones or do they get separate treatment?

Copy link
Member

@jbenet jbenet Aug 6, 2016

Choose a reason for hiding this comment

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

I'm not sure, but:

  • For projects with Continuous Release, they may not need specific milestones. (every npm publish of a module is a release for example)
  • For projects with "Discrete" Releases (eg go-ipfs), the Release could be at least one Milestone (but maybe involve more "dependency milestones").


The Roadmap Document contains the following information:
- List of current milestones
- Ordered by expected due date, next upcoming milestone at the top
- Current status of the project, ie. milestone progress
- List of previous, recent milestones (< 6 months)
- List of links to very old milestones (> 6 months)
Copy link
Member

Choose a reason for hiding this comment

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

i'd say leave them there until it's a problem. we can change this when we need to prune documents because they're too big.


The roadmap can be a high-level overview of milestones and project's progress, so details suchs as list of goals per milestone can be omitted. However, if omitted, the roadmap must contain links to the detailed break down.
Copy link
Member

Choose a reason for hiding this comment

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

+1. i would like it to be possible to generate (with a tool) a listing of milestones, goals, and "milestones and goals". eg

> project https://github.com/ipfs/go-ipfs milestones ls
Milestone 1 done
Milestone 2 done
Milestone 3 in progress
Milestone 4
Milestone 5

> project https://github.com/ipfs/go-ipfs goals ls
<list of all goals>

> project https://github.com/ipfs/go-ipfs milestones ls --include-goals
Milestone 1 done
- issue 532
- issue 534
- issue 544
- issue 655
Milestone 2 done
- issue 542
- issue 544
- issue 554
- issue 665
...

This could output markdown. :) We just need to way to identify milestones and its component goals.

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! A tool to automate all of this would be amazing. Something where you specify which repos are "a project" and it'll generate roadmaps (md files perhaps?) and all based on the issues in the repos. Also, updates and sync milestones, labels, documents and whatnot across the project's repos. Or perhaps it has a dashboard that generates all that information in real-time!


Examples:
- [js-ipfs roadmap](https://github.com/ipfs/js-ipfs/blob/master/ROADMAP.md#ipfs-javascript-implementation-roadmap)
- [Orbit roadmap](https://github.com/haadcode/orbit/blob/master/ROADMAP.md#orbit---roadmap)
Copy link
Member

Choose a reason for hiding this comment

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

very nice example 👍 😄


### Organization Roadmap
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.

Organization roadmap contains the following information:
- List of all projects
- List of all current milestones and their progress in each project
- List of links to old milestones

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.

TODO: a clear example

## Flow

### Quarterly Planning
TODO

What:
- Identify project’s / company’s needs and main efforts.
Copy link
Contributor

Choose a reason for hiding this comment

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

It's important to acknowledge that for projects that have community contributors, quarterly planning is a community wide process. We need to allocate time & process to do quarterly planing for both internal/company roadmap and community-wide project roadmaps.

Copy link
Member

Choose a reason for hiding this comment

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

Please just remove reference to "company". say "Organization", as "The IPFS Project" or "IPFS Team/Community" is an organization. even though it does not yet have legal standing. (and it will eventually :) )

- Commit to efforts and goals.
- Produce a high level overview of a roadmap.

Who: Product Owners, Project Leads, Project Managers
How often: Every 3 months
Output: Organization Roadmap (responsible: PM)

### Software Development Pipeline
TODO

- From Backlog to Release
- Workflow steps
- Releasing new versions
- Keeping the backlog up to date
- Keeping everyone updated
- Tracking status and current work
- Using a signaling board (Kanban)
- Working towards milestones
- "Sprint" meetings

## Implementation
TODO