We plan per [milestone](https://mnohr.gitlab.io/milestone-dates/). We release much more often and with more flexibility, but the milestone cadence keeps us aligned with release posts for new features and with other teams when alignment is needed.
### Weekly Issues' Refinement
> This process is intentionally minimal — we start small and iterate based on the [feedback loop](#feedback-loop).
-**Purpose:** Keep our backlog focused and up-to-date
- We re-prioritize and adapt to the changing requirements
- Create clarity about what customer support issues we need to implement
- Give everyone a chance to surface and champion issues (new/urgent bugs, tech improvements or tech debt)
-**Format:** 3 stage process described in the "Flow" section below
-**Cadence:** Every week
-**Output:** Up-to-date [Rolling Backlog](#rolling-backlog-wiki-page) + possible weekly updates to the [milestone planning issue](#milestone-planning-issues)
At a glance — two artifacts, two rituals:
{{% details summary="Expand for more details" %}}
#### Rolling Backlog Wiki Page
This [rolling backlog page](https://gitlab.com/gitlab-org/editor-extensions/meta/-/wikis/Editor-Extensions:-Multi-Platform-Rolling-Backlog) is the output of this refinement process. It serves as a visible, prioritized, and team-reviewed top-of-backlog list for every scope we own (could be the next 1-2 months of work).
**Note:** We also take into account most thumbed up issues to make sure we also capture community feedback.
---
#### Flow
1.**EM & PM async weekly pre-pass**: prepare for the next 2 steps
1. Some issues sources to consider
-[Rolling Backlog](#rolling-backlog-wiki-page)
- Slack pings, team discussions
- Recent [triage-reports](https://gitlab.com/gitlab-org/quality/triage-reports) issues, for example, [Bugs Prioritization](https://gitlab.com/gitlab-org/quality/triage-reports/-/issues/26385), [Triage Report](https://gitlab.com/gitlab-org/quality/triage-reports/-/issues/26506), [Feature flags requiring attention](https://gitlab.com/gitlab-org/quality/triage-reports/-/issues/26361)
2. Add the label [workflow::scheduling](https://gitlab.com/groups/gitlab-org/-/issues?sort=updated_asc&state=opened&first_page_size=100&label_name%5B%5D=workflow%3A%3Ascheduling&label_name%5B%5D=group%3A%3Aeditor+extensions) to the issues to discuss in step #3 (EM + PM Sync call)
3. Update issues as needed to make sure [Rolling Backlog](#rolling-backlog-wiki-page) is up-to-date.
- EM will create an **issue to trigger** this review and assign all engineers, [example issue](https://gitlab.com/gitlab-org/editor-extensions/meta/-/issues/257), please unassign yourself when you finish review
- Occurs **every 2 weeks**, to avoid taking too much of the team's focus each week.
-**Goals**:
- Ensure everyone on the team weighs in on the priorities.
- Advance tech improvements or tech debt issues.
- Flag issues that should be given higher importance.
- Identify issues that are no longer needed or should be de-prioritized.
-**How to Participate:**
1. Review the current priorities in [Rolling Backlog](#rolling-backlog-wiki-page)
2. Weigh in: Add/Change the following as needed (including for new issues you want to push):
1. Status: `Planning breakdown`: Should be on our radar, within the next 2-3 milestones or so
2. Status: `Ready for development`: Ideally should be done this milestone
3. Label: [workflow::scheduling](https://gitlab.com/groups/gitlab-org/-/issues?sort=updated_asc&state=opened&first_page_size=100&label_name%5B%5D=workflow%3A%3Ascheduling&label_name%5B%5D=group%3A%3Aeditor+extensions): Immediate priority, should be picked up next (or at least should be discussed this week)
3. Comment & tag EM + PM if you change any of the above with reasoning
-**Notes**:
1. Don't spend time deep investigating any issue at this point, just high level overview of the priorities is enough
2. Comment in the relevant issue itself or in the rolling backlog issue if your comment is more relevant there
3. Link to [references](https://docs.gitlab.com/user/markdown/#gitlab-specific-references) to specific GitLab resources to improve discoverability.
3.**EM + PM weekly sync call:** Focus on the label [workflow::scheduling](https://gitlab.com/groups/gitlab-org/-/issues?sort=updated_asc&state=opened&first_page_size=100&label_name%5B%5D=workflow%3A%3Ascheduling&label_name%5B%5D=group%3A%3Aeditor+extensions), read team comments, confirm ranking, make trade-offs, and pick target deliverables for the next 1-2 weeks.
- Meeting should be scheduled on the [shared team calendar](#shared-calendar) and recorded; we will also use zoom transcript so team can have transparency on the reasoning and arguments behind changing an issue priority or order and add it to the planning issue.
- Once every month this call will be used to create a milestone planning issue that can be subject to change with the next refinement.
- EM is responsible for assigning the agreed on & updated deliverables.
-**Output:** Update the milestone planning issue weekly + EM to assign updated priority issues
- Once a month, before the start of the milestone, the discussion will span a bigger number of tickets in preparation for creating a new [milestone planning issue](#milestone-planning-issues)
| Artifact | Used | Answers |
|---|---|---|
| [Team backlogs](#team-backlogs) | Before planning | What should we work on next? |
| [Planning boards](#planning-boards) | During the milestone | What is the status? What is in progress? |
---
| Ritual | Cadence | What happens |
|---|---|---|
| Planning call — one per functional team | Monthly | Commit the scope, assign `Deliverable` / `Stretch`[labels](#issues-labels) and [weights](#issues-weight), plan capacity |
| [Async updates](#weekly-async-updates) | Weekly (by Tuesday EOD) | Everyone posts progress on their issues; automation aggregates them into one group-wide issue |
#### How to Participate (for non-team members)
{{% details summary="The flow in detail (chronological)" %}}
If you want to bring an issue to the attention of the team, please create an issue. If no issue exists yet, then reach out on [#s_ai-clients-questions](https://gitlab.enterprise.slack.com/archives/C058YCHP17C).
1.**Throughout the milestone — prepare for the next one.** Flag issues you want prioritized next milestone with the [`workflow::scheduling`](https://gitlab.com/groups/gitlab-org/-/issues?sort=updated_asc&state=opened&label_name%5B%5D=workflow%3A%3Ascheduling&label_name%5B%5D=group%3A%3Adeveloper+clients) label. For an uncertain effort with no issue yet, create a placeholder (an empty description is fine) with a timeboxed [weight](#issues-weight). Keep statuses and labels current — the [planning boards](#planning-boards) double as our live view of milestone progress.
1.**Before the planning call.** EM + PM do an async backlog pre-pass, focusing on flagged issues. Everyone: have a rough idea of your availability (for example, planned vacation days). Plans can change — that's fine, we adapt.
1.**Monthly planning call — one per functional team.** Agree on the scope committed to the milestone, assign the `Deliverable` and `Stretch`[labels](#issues-labels) and [weights](#issues-weight), and plan team capacity using the planning board's capacity feature.
1.**During the milestone.** The planning board shows the milestone state and in-progress work. Post your [weekly async updates](#weekly-async-updates).
{{% /details %}}
### Monthly Planning
#### Planning Boards
-**Purpose:** Define and scope what we'll deliver in the current milestone
- Plan monthly to shape product priorities, but revisit weekly to stay adaptive to fast-changing AI requirements, quality focus, and urgent user needs
-**Format:** 2 stage process described in the "Flow" section below
-**Cadence:** Every month + possible weekly updates
- Updated issues fields: `status`, `milestone`, and labels to include `deliverable`
| Team | Board | Issues shown |
|---|---|---|
| Duo CLI | [dc-duo-cli](https://milestone-planning-board-0c5b79.gitlab.io/?board=dc-duo-cli) | `category:duo cli` label, or in the [gitlab-lsp](https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp) repo with "cli" in the title |
| VS Code | [dc-vs-code](https://milestone-planning-board-0c5b79.gitlab.io/?board=dc-vs-code) | `category:vs code` label, or in the [gitlab-vscode-extension](https://gitlab.com/gitlab-org/gitlab-vscode-extension) repo |
| JetBrains | [dc-jetbrains](https://milestone-planning-board-0c5b79.gitlab.io/?board=dc-jetbrains) | `category:jetbrains` label, or in the [gitlab-jetbrains-plugin](https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin) repo |
{{% details summary="Expand for more details" %}}
#### Team Backlogs
#### Milestone Planning Issues
Each functional team has a live backlog wiki page — the tables refresh automatically on page load, and cover **Added this milestone**, **Next to prioritize**, **Top community requests**, and the **full backlog**:
We use [Milestone Planning Issues](https://gitlab.com/gitlab-org/editor-extensions/meta/-/issues/?sort=created_date&state=all&label_name%5B%5D=Planning%20Issue)
to define our goals for the current/upcoming milestone.
The PM and EM are responsible for aligning on the goals.
The planning issues are [created automatically](https://gitlab.com/gitlab-org/editor-extensions/meta/-/tree/main#issue-creation-process) every month.
> 💡 An issue only shows up on a team's backlog page if it carries the team's category label: `category:duo cli`, `category:vs code`, or `category:jetbrains`. Each page has a "missing category label" section that surfaces unlabelled issues in the team's repository, and automating the labelling is tracked in [meta#398](https://gitlab.com/gitlab-org/editor-extensions/meta/-/work_items/398).
#### Flow
#### How to Participate (for non-team members)
1.**Fill Initial milestone planning issue**
- PM drives the goals of the milestone, in alignment with EM
- All the output of the previous [issues refinement](#weekly-issues-refinement) is taken into consideration
- Should be done before the [milestone starts](https://mnohr.gitlab.io/milestone-dates/)
2.**Weekly updates** after the weekly [issues refinement](#weekly-issues-refinement)
- EM + PM update the [milestone planning issue](https://gitlab.com/gitlab-org/editor-extensions/meta/-/issues/?sort=created_date&state=all&label_name%5B%5D=Planning%20Issue), if needed, reflecting latest changes, that could include for example:
- Urgent bugs that came up
- Needing to adopt another AI engineering team work into the IDEs
- Flagged tech debt
- EM aligns with the team to assign [Deliverable](https://gitlab.com/groups/gitlab-org/-/issues/?label_name%5B%5D=Deliverable) & [Stretch](https://gitlab.com/groups/gitlab-org/-/issues/?label_name%5B%5D=Stretch) labels and ensure issues status, [weight](#issues-weight) & milestone are assigned reflecting the latest priorities
- Possibly in weekly 1:1 or async
If you want to bring an issue to the attention of the team, please create an issue. If no issue exists yet, then reach out on [#s_ai-clients-questions](https://gitlab.enterprise.slack.com/archives/C058YCHP17C).
{{% /details %}}
#### Feedback Loop
This process is v1. We run a quick feedback poll in the team channels every ~2 milestones, plus a standing 5-minute retro slot in each monthly planning call.
### Team Sync Meetings
We have a sync meeting once per week. This is a collaborative meeting across the Developer Clients group.
We join the weekly sync meeting held across the entire [AI Clients stage](/handbook/engineering/ai/ai-clients/).
- The call alternates every week between APAC/AMER & EMEA/AMER friendly times, so everyone can join conveniently at least every other call — and everyone can contribute async every week.
- The [Weekly Sync Meeting Agenda](https://docs.google.com/document/d/1UJg-Prf5qGjiGImvaYl5HNjMcJddoeE4u33Ri6SxQ6g) is open; everyone is invited to bring relevant topics to align on.
- Recordings are uploaded to the [Editor Extensions Category](https://www.youtube.com/playlist?list=PL05JrBw4t0KoC0pFfuNOAQjKxe4_ypFKc) playlist on GitLab Unfiltered.
- The timing of the call alternates every week between APAC/AMER & EMEA/AMER so everyone in different timezones can join sync conveniently at least every other call, and everyone can contribute async as well every week.
-[Weekly Sync Meeting Agenda](https://docs.google.com/document/d/1UJg-Prf5qGjiGImvaYl5HNjMcJddoeE4u33Ri6SxQ6g), agenda is open, everyone in the team is invited to bring relevant topics to align on.
### Weekly Async Updates
Team members post weekly async updates on the in progress issues using the [Dev Check-in (editor-extensions)](https://gitlab.com/groups/gitlab-org/editor-extensions/-/comment_templates) comment template.
Post an update on each issue you're actively working on, using the [Dev Check-in (editor-extensions)](https://gitlab.com/groups/gitlab-org/editor-extensions/-/comment_templates) comment template.
**Note: async updates should be posted by Tuesday EOD every week** (or earlier if you're off).
Updates are aggregated automatically into a single weekly Developer Clients issue with a section per functional team ([example issue](https://gitlab.com/gitlab-org/editor-extensions/meta/-/work_items/400)).
### Issues' Labels
@@ -244,17 +194,16 @@ Some extra labels we use:
### Issues' Weight
We use three weights to give a rough estimate of the issue's complexity:
Weights are assigned during [milestone planning](#milestone-planning) as a rough estimate of complexity:
-`1` - day or two of effort
-`2` - week of effort
-`3`- week and a half of effort
**Notes:**
| Weight | Rough effort |
|---|---|
|`1`| A day or two |
| `2` | About a week |
| `3` | About a week and a half |
1. Everything with a base weight above `3` should be a spike that will result in one or more issues with estimated weight.
2. These are estimates for someone familiar with the codebase/system; you can add extra weight `1` or `2` to the base weight if you are new to the team/codebase/system.
3. Weights are assigned in the planning flow.
- Anything estimated above `3` should first be a spike, which results in one or more issues with estimated weights.
- Estimates assume familiarity with the codebase/system — add `1`–`2` to the base weight if you're new to it.
### Cross-Group Ownership and Boundaries
@@ -267,9 +216,8 @@ The [Ownership and Boundaries](/handbook/engineering/ai/ai-clients/ownership/) p
## 🔗 Useful Links
-**Planning**
-<ahref="https://gitlab.com/groups/gitlab-org/-/boards/9154815?label_name[]=group%3A%3Aeditor%20extensions"target="_blank">Issues Board By Assignee</a>
-<ahref="https://gitlab.com/groups/gitlab-org/-/boards/9651444?label_name%5B%5D=group%3A%3Aeditor%20extensions"target="_blank">Issues Board By Status</a>