Vue.js 3 Migration Working Group

Learn more about the Vue.js 3 Migration Working Group attributes, goals, roles and responsibilities.

Attributes

Property Value
Date Created 2023-02-10
Target End Date 2025-12-31
Slack #wg_vue3_migration (only accessible from within the company)
Google Doc Agenda (only accessible from within the company)
Epic gitlab-org/&2652
Overview & Status See Exit Criteria

Context

Vue.js 3 is the latest version of the frontend framework used by GitLab.

With 2023-12-31 Vue.js 2 (which is currently the version used by GitLab) reaches official end-of-life, including security updates and browser compatibility which might affect entire GitLab users.

Additionally, current GitLab codebase relies on subset of libraries which were not updated to be compatible with Vue 3 which might pose additional risks during migration.

We want to ensure that we are not creating additional security risks for our users by using an unmaintained version of a framework. At the same time increasing developer productivity by using new features of the latest version of the framework. Also an upgrade to Vue.js 3 hopefully will result in performance gains through out the application of 20-30% and most probably even more for heavy frontend applications like Code Review for example.

Goals

This Working Group has the following goals:

  1. Ensure all GitLab projects (including, but not limited to GitLab.com, customers portal, status page, etc.) are using latest Vue.js version
  2. Develop & Socialize upgrade strategy for Vue.js 3.
    1. Identify dependencies which are blocking upgrade and ensure that decisions regarding these dependencies will be taken in timely fashion.
    2. Ensure visibility of upgrade process on per-application level
    3. Promote new patterns and update handbook with guidelines appropriate for new framework version
  3. Develop a Rollout Strategy and Plan for gradual migration
    1. Create tooling and proper infrastructure to be able to use both framework versions in production during migration process.
    2. Ensure our test suite could be run using both versions of Vue.js to embrace values of iteration of results and allow gradual migration of codebase to Vue.js 3
    3. Implement compatibility layer for unifying differences between framework versions
    4. Create automated tooling (where applicable) to migrate existing Vue.js 2 code to be compatible with latest framework version
    5. Create deprecation strategy for patterns and solutions which are not compatible with Vue.js 3 to rest of the teams
  4. Develop and implement a communication plan for the outcomes of the working group.

Exit Criteria

Criteria Start Date Completion Date Progress DRI
Get Bootstrap Vue running with Vue Compat mode 2 2021-06-21 2022-10-25 100% @xanf
Get GitLab UI running with Vue Compat mode 2 2021-06-21 2024-04-30 70% @markrian
Get main GitLab repo vue-router working with Vue Compat mode 2023-05-18 2024-05-31 50% TBD
Use Vue.js 3 for running test suites on main repo 2023-05-18 2024-05-31 30% @xanf
Get CustomersDot running with Vue Compat mode 2 2024-02-01 2024-04-30 0% @vitallium
Switch Vue Compat from mode 2 to mode 3 2024-05-31 2024-10-31 0% TBD
Switch to using Vue 3 proper 2024-10-31 2025-12-01 0% TBD

Roles and Responsibilities

Working Group Role Person Title
Executive Sponsor Tim Zallmann Senior Director of Engineering
Facilitator Sam Beckham Engineering Manager, Manage:Foundations
Functional Lead Illya Klymov Senior Frontend Engineer, Govern:Compliance
Functional Lead Natalia Tepluhina Principal Engineer, Plan
Functional Lead Stanislav Lashmanov Senior Frontend Engineer, Create: Code Review
Functional Lead Andrew Fontaine Senior Frontend Engineer, Deploy:Environments
Member Mark Florian Staff Frontend Engineer, Manage:Foundations
Member Andrei Zubov Frontend Engineer, Deploy:Environments
Member Artur Fedorov Senior Frontend Engineer, Govern:Security Policies
Member Frédéric Caplette Senior Frontend Engineer, Verify:Pipeline Authoring
Member Vitaly Slobodin Staff Frontend Engineer, Fulfillment
Member Marina Mosti Senior Frontend Engineer, Switchboard