Commit 1336ce33 authored by Vanessa Otto's avatar Vanessa Otto
Browse files

Update BootstrapVue Removal Task Group status

parent f211e898
Loading
Loading
Loading
Loading
+39 −10
Original line number Diff line number Diff line
@@ -8,11 +8,38 @@ description: "Learn more about the BootstrapVue Removal Task Group attributes, g
| Property        | Value                                                                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Date Created    | 2024-09-10                                                                                                                              |
| Target End Date | 2025-08-31                                                                                                                              |
| Target End Date | ~~2025-08-31~~ 2026-11-30                                                                                                               |
| Current Status  | In Progress - Active migration                                                                                                          |
| Slack           | [#tg_bootstrapvue_removal](https://gitlab.enterprise.slack.com/archives/C07LB4P1FST) (only accessible from within the company)          |
| Google Doc      | [Agenda doc](https://docs.google.com/document/d/1L1-4evYtCATuAYam1ZJOrgBcGZIg0jA1P20gtBfWTsI) (only accessible from within the company) |
| Zoom Recordings | [Recordings](https://drive.google.com/drive/folders/1sHgSixs41YgTN7hnklP7oosWtPLOxWGm) (only accessible from within the company)        |

## Current Status

> **Status Update (April 2026)**: The scope has been reduced thanks to the Design System team taking on the most complex components. The task group is now focused on migrating the remaining components on a per-component basis, with a new target end date of November 30, 2026. The task group continues as a single coordinating body. After [feedback from the team](https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/18107#note_3041079557), the consensus was clear: there is too much overlap between component migrations to split into smaller groups, and the real blocker was time allocation rather than scope or planning.

### Reduced Scope

The [Design System team is taking on the most complex components](https://gitlab.com/gitlab-org/gitlab/-/issues/589623), which significantly reduces the task group's scope. The task group now focuses on migrating approximately 15 remaining components:

- All Form components (including 2 Layout components)
- Tab(s)
- Link
- Button

There are no remaining directives for the task group to handle (modal and tooltip directives are covered by the Design System team).

### Migration Approach

- **Per-component migrations**: Components are migrated one at a time rather than batching breaking changes across multiple components at once.
- **Breaking changes**: We do not shy away from major version bumps. If part of the API is dropped, even implicit BootstrapVue APIs, that should be a major version ([as clarified by Mark Florian](https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/18107#note_2395901234)). Breaking changes are handled on a case-by-case basis.
- **AI as an accelerator**: AI tooling is being explored to help draft migrations for simpler/medium-complexity components, with engineers reviewing and refining. Engineers focus their expertise on complex architectural decisions.
- **Utility and mixin cleanup**: Remaining BootstrapVue utilities and mixins (e.g. `looseEqual`, `looseIndexOf`, `formOptionsMixin`) will need to be addressed as part of component migrations.

### Contributing

If you're interested in contributing or have experience with component migrations, please reach out in the [#tg_bootstrapvue_removal](https://gitlab.enterprise.slack.com/archives/C07LB4P1FST) Slack channel. We welcome input and participation.

## Context

Previously, [we chose to use BootstrapVue](https://gitlab.com/groups/gitlab-org/frontend/-/epics/1) because we were already employing Bootstrap, and creating a custom UI library would be a significant undertaking. At that time, BootstrapVue was an appropriate choice. Initially, BootstrapVue was part of the monolithic codebase, but later it was moved to the GitLab UI repository.
@@ -42,11 +69,14 @@ While BootstrapVue was suitable in the past, we are now considering migrating aw

- **Compatibility**: Ensuring that our custom components maintain the same APIs as before is crucial. As with most migrations, the focus will be on replicating the functionality of BootstrapVue components without unnecessary changes.
- **Global Events**: BootstrapVue supported global events (bv::). Rebuilding this functionality might be complex.
- **Component Complexity**: Some BootstrapVue components are particularly complex and may require alternative migration strategies beyond straightforward refactoring.

These are the known challenges, but there may be additional issues that have yet to be identified.

## Exit Criteria

> **Note**: The following exit criteria represent the complete scope. The [Design System team](https://gitlab.com/gitlab-org/gitlab/-/issues/589623) is handling several of the most complex components (toasts, tooltips, popovers, dropdown, modals, tables). The task group focuses on the remaining ~15 components (Form components, Tabs, Link, Button).

1. Unused files from `/src/vendor/bootstrapvue` are removed: [Epic &13075](https://gitlab.com/groups/gitlab-org/-/epics/13075).
2. Documentation is updated and made accessible: [Issue #2754](https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2754).
3. MIT License usage is clarified: [Issue #2318](https://gitlab.com/gitlab-com/legal-and-compliance/-/issues/2318).
@@ -59,11 +89,10 @@ These are the known challenges, but there may be additional issues that have yet
## Roles and Responsibilities

| Task Group Role | Person                   | Title                                                 |
| --------------- | ------------------------ | ------------------------------------------------------------- |
| DRI             | Vanessa Otto             | Senior Frontend Engineer, AI-Powered:Workflow Catalog         |
| Member          | Peter Hegman             | Senior Frontend Engineer, Tenant Scale::Organizations         |
| Member          | Paul Gascou-Vaillancourt | Senior Frontend Engineer, Foundations::Personal Productivity  |
| Member          | Lukas Eipert             | Staff Frontend Engineer, Foundations::Personal Productivity   |
| Member          | Lorenz van Herwaarden    | Senior Frontend Engineer, Govern::Threat Insights             |
| --------------- | ------------------------ | ----------------------------------------------------- |
| DRI             | Vanessa Otto             | Staff Frontend Engineer, AI-Powered:Workflow Catalog  |
| Member          | Peter Hegman             | Staff Frontend Engineer, Tenant Scale::Organizations  |
| Member          | Paul Gascou-Vaillancourt | Senior Frontend Engineer, Growth::Engagement          |
| Member          | Lorenz van Herwaarden    | Senior Frontend Engineer, SRM::Security Insights      |
| Member          | Chaoyue Zhao             | Frontend Engineer, Create::Source Code                |
| Member          | Thomas Hutterer          | Senior Fullstack Engineer, Foundations::Personal Productivity |
| Member          | Thomas Hutterer          | Senior Fullstack Engineer, Foundations::Design System |