Developer Clients Group

The Developer Clients group owns and maintains the editor extensions for VS Code and JetBrains IDEs, as well as the Duo CLI, bringing GitLab’s core features and AI capabilities directly into developer workflows.

🚀 Vision

We bring GitLab’s core features and AI capabilities directly into developer workflows, unlocking productivity by making GitLab accessible in the tools developers use every day.

This group is part of the AI Clients stage.


👨‍💻 Team Members

Engineering Manager: Amr Elhusseiny

Product Manager: James Casey

UX: Yi-Ann Chen

Name Role
Amr ElhusseinyAmr Elhusseiny Engineering Manager
Andrei ZubovAndrei Zubov Senior Frontend Engineer, Create:Editor Extensions
Elwyn BensonElwyn Benson Senior Frontend Engineer, Create:Editor Extensions
Juhee LeeJuhee Lee Fullstack Engineer
Karl JamoralinKarl Jamoralin Backend Engineer
Laura IonelLaura Ionel Senior Backend Engineer
Malte HeuserMalte Heuser Fullstack Engineer, Create:Editor Extensions
Mohammed OsumahMohammed Osumah Fullstack Engineer
Tomas VikTomas Vik Staff Fullstack Engineer, Create:Editor Extensions

🤝 Stable Counterparts

Below are our stable counterparts:

Name Role
James CaseyJames Casey Director of Product
Yi-Ann ChenYi-Ann Chen Senior Product Designer, AI

💬 Where to Find Us

Slack

Shared Calendar

We use AI Clients’s shared calendar


🏠 Functional Teams

Team Scope Channel
Duo CLI AI-powered command-line interface #f_duo_cli
VS Code GitLab Workflow VS Code extension & Web IDE #f_vscode_extension
JetBrains GitLab plugin for JetBrains IDEs #f_jetbrains_plugin

💻 Scope

Products owned by this group

  1. GitLab Extension for JetBrains
    1. Repo
    2. Docs
    3. Backlog
    4. Slack Channel: #f_jetbrains_plugin
  2. GitLab Workflow Extension for VS Code
    1. Repo
    2. Docs
    3. Backlog
    4. Slack Channel: #f_vscode_extension
  3. Duo CLI
    1. Repo
    2. Backlog
    3. Slack Channel: #f_duo_cli

📚 How We Work

Issues’ State

We use the issue Status field to indicate state, following the Product Development Flow.

Expand for more details

To keep things simple, we focus on the main states below and optionally use others when appropriate.

  • New → Not yet prioritized or refined.

  • Planning breakdown → Needs team attention soon (within ~1–2 months); gather scope, risks/deps, acceptance criteria.

  • Ready for development → Immediate priority; clear scope; should be picked up next and ideally completed within ~2 weeks.

  • In dev → Assigned DRI(s), milestone set, work in progress.

  • In review → Implementation complete; MR opened and under review/verification.

  • Blocked → Cannot proceed due to a dependency or external constraint; comment the blocker and next check-in date.

  • Closed → Done (or closed as duplicate/won’t fix) with outcome noted.

Note: We chose Planning breakdown & Ready for development as these statuses exist on both Issues and Tasks, letting us build one unified set of boards and embedded tables with a single status filter easily.

Milestone Planning

We plan per milestone. 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.

This process is intentionally minimal — we start small and iterate based on the feedback loop.

At a glance — two artifacts, two rituals:

Artifact Used Answers
Team backlogs Before planning What should we work on next?
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 and weights, plan capacity
Async updates Weekly (by Tuesday EOD) Everyone posts progress on their issues; automation aggregates them into one group-wide issue
The flow in detail (chronological)
  1. Throughout the milestone — prepare for the next one. Flag issues you want prioritized next milestone with the workflow::scheduling label. For an uncertain effort with no issue yet, create a placeholder (an empty description is fine) with a timeboxed weight. Keep statuses and labels current — the planning boards double as our live view of milestone progress.
  2. 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.
  3. Monthly planning call — one per functional team. Agree on the scope committed to the milestone, assign the Deliverable and Stretch labels and weights, and plan team capacity using the planning board’s capacity feature.
  4. During the milestone. The planning board shows the milestone state and in-progress work. Post your weekly async updates.

Planning Boards

Team Board Issues shown
Duo CLI dc-duo-cli category:duo cli label, or in the gitlab-lsp repo with “cli” in the title
VS Code dc-vs-code category:vs code label, or in the gitlab-vscode-extension repo
JetBrains dc-jetbrains category:jetbrains label, or in the gitlab-jetbrains-plugin repo

Team Backlogs

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:

💡 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.

How to Participate (for non-team members)

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.

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 join the weekly sync meeting held across the entire AI Clients stage.

  • 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 is open; everyone is invited to bring relevant topics to align on.
  • Recordings are uploaded to the Editor Extensions Category playlist on GitLab Unfiltered.

Weekly Async Updates

Post an update on each issue you’re actively working on, using the Dev Check-in (editor-extensions) 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).

Issues’ Labels

Check AI Clients labeling guidance

Some extra labels we use:

Label Description
Deliverable Committed items for the milestone / must-ship work.
Stretch Next items on the priority list, added as optimistic goals for the milestone

Issues’ Weight

Weights are assigned during milestone planning as a rough estimate of complexity:

Weight Rough effort
1 A day or two
2 About a week
3 About a week and a half
  • 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 12 to the base weight if you’re new to it.

Cross-Group Ownership and Boundaries

Editor extensions systems host features and modules owned by different groups.

The Ownership and Boundaries page provides clarity and a clear expectation between all parties who author/maintain features in our systems.



Duo CLI
We are building an intelligent command-line interface that brings GitLab Duo's AI capabilities directly to developers' terminals, enhancing productivity through natural language interactions with GitLab's DevSecOps platform.
JetBrains
The JetBrains functional team owns and maintains the GitLab plugin for JetBrains IDEs, bringing GitLab's core features and AI capabilities directly into JetBrains-based developer workflows.
VS Code
The VS Code functional team owns and maintains the GitLab Workflow extension for Visual Studio Code and the Web IDE, bringing GitLab's core features and AI capabilities directly into VS Code-based developer workflows.