Commit 1c53ac7f authored by Vladimir Shushlin's avatar Vladimir Shushlin 👆
Browse files

Add work item types and project example for Product Planning

parent 4c99a234
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ following chart shows [MR Rate](/handbook/engineering/performance-indicators/#en

[How we work](./how-we-work.md) page describes all the processes we follow as a team.

[Project Example: Boards](./project-example-boards.md) shows how we structure and run larger projects, using Boards on Saved Views as an example.

## Useful links

- [:Plan:Product Planning](https://gitlab.com/groups/gitlab-org/-/boards/1569369?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=devops%3A%3Aplan&not[label_name][]=group%3A%3Aproject%20management]) - Apply a milestone filter to see work in the current release
+14 −0
Original line number Diff line number Diff line
@@ -74,6 +74,20 @@ Beginning with [17.8](https://gitlab.com/groups/gitlab-org/-/milestones/107#tab-
    - Child tasks or related issues in case original issue was broken down.
6. In a week prior to the start of the upcoming milestone, EM's responsibility is to ensure that all candidate issues have either moved to `~workflow::ready for development` as per guidance in point 5, or an appropriate triage action is taken as outlined in point 4.

## Work item types

The default work item type is **issue**. When in doubt, create an issue — it can be converted to an epic or task later.

| Type | Corresponds to | Timeline | Examples |
|------|---------------|----------|----------|
| **Issue** | One merge request, one person, one category (FE or BE) | Less than 1 week | "Add board card component", "Create `filter` query parameter for saved views API" |
| **Epic** | A scoped deliverable grouping multiple issues | 1 week to 3 milestones | "Boards on Saved Views Alpha", "Work Item Card" |
| **Task** | A checklist item / reminder inside an issue | — | "Update changelog", "Update documentation" |

All issues should be roughly the same size. We break work down until each issue fits within a week. If something is bigger, make it an epic.

For how we use work item types in larger projects, see [Project Example: Boards](./project-example-boards.md).

## Capacity Planning

### Estimating effort
+91 −0
Original line number Diff line number Diff line
---
title: "Boards on Saved Views: Project Example"
---

## Timeline

```mermaid
gantt
    title Lifecycle Boards
    dateFormat YYYY-MM-DD
    axisFormat %b %d

    section Milestones
    18.10                    :m1810, 2026-02-14, 2026-03-13
    18.11                    :m1811, 2026-03-14, 2026-04-10
    19.0                     :m190, 2026-04-11, 2026-05-15
    19.1                     :m191, 2026-05-16, 2026-06-12
    19.2                     :m192, 2026-06-13, 2026-07-10
    19.3                     :m193, 2026-07-11, 2026-08-14

    section Pre-work
    Requirements discovery   :discovery, 2026-02-14, 2026-04-18
    Groundwork            :prereqs, 2026-03-14, 2026-04-24

    section Active development
    Alpha                    :alpha, 2026-04-18, 2026-05-29
    Internal rollout         :crit, milestone, 2026-05-29, 0d
    GA                       :ga, 2026-05-29, 2026-07-10
    GitLab.com rollout       :crit, rollout, 2026-06-26, 2026-07-10

    section Feedback and clean-up
    Post-GA follow-ups       :followups, 2026-06-26, 2026-08-14
```

## Stages

We break projects into time-limited stages and cut scope to a [minimal viable change](/handbook/values/#minimal-valuable-change-mvc) to:

- Reduce cognitive load — engineers work on smaller changes, smaller sets of requirements, and fewer issues.
- Simplify project management and spot delays early — smaller stages are easier to keep on track and it's easier to notice when one is late.
- Surface bugs and feedback earlier.

| Stage | Outcome |
|-------|---------|
| **Requirements discovery** | Decision on scope for subsequent stages. Work broken down into issues. Rough estimation of the project. Clear definition of what is out of scope. |
| **Groundwork** | Refactorings and adaptations that make the rest of the development easier. |
| **Alpha** | Core workflow can be used for dogfooding and internal testing, but can be rough on the edges. Includes addressing internal testing feedback. |
| **GA** | The smallest coherent experience we're comfortable releasing to users. Includes addressing user feedback from alpha, fixing rough edges, and a feature flag rollout period (~2 weeks before milestone cut-off). |
| **Post-GA follow-ups** | Features deferred past the initial release, user feedback, code and test cleanup. Must be completed within 1–2 milestones after GA. When in doubt, put issues in out of scope. |
| **Out of scope** | No commitment. May be done later, reprioritized, or closed. |

## Epic organization

```plain
Lifecycle Boards (top-level epic)
├── Lifecycle Boards — Requirements discovery
│   ├── UX discussions (issue)
│   ├── Lifecycle Boards — Card (epic)
│   ├── Lifecycle Boards — Columns (epic)
│   └── ...
├── Lifecycle Boards — Groundwork
│   ├── Refactor work item listing page (epic)
│   ├── Load work items via REST API instead of GraphQL on listing pages (epic)
│   └── ...
├── Lifecycle Boards — Alpha
│   ├── Status columns (epic)
│   │   ├── Load available statuses (issue)
│   │   └── Load work items by column (issue)
│   ├── Card (epic)
│   ├── API changes (epic)
│   ├── Transform view preferences dropdown into drawer (epic)
│   ├── Card drag and drop (epic)
│   │   ├── Persist changes (issue)
│   │   └── Basic animation (issue)
│   └── ...
├── Lifecycle Boards — GA
│   ├── Internal testing feedback (issue)
│   ├── Card enhancements (epic)
│   ├── Feature flag rollout (epic)
│   ├── Card drag and drop (epic)
│   │   ├── Improved animation (issue)
│   │   └── Highlight available and unavailable columns (issue)
│   └── ...
├── Lifecycle Boards — Post-GA follow-ups
│   ├── User feedback (issue)
│   ├── Feature flag removal (epic)
│   ├── Old code cleanup (epic)
│   ├── Tests cleanup (epic)
│   └── ...
└── Lifecycle Boards — Out of scope
```