Vue.js 3 Migration Working Group
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:
- Ensure all GitLab projects (including, but not limited to GitLab.com, customers portal, status page, etc.) are using latest Vue.js version
- Develop & Socialize upgrade strategy for Vue.js 3.
- Identify dependencies which are blocking upgrade and ensure that decisions regarding these dependencies will be taken in timely fashion.
- Ensure visibility of upgrade process on per-application level
- Promote new patterns and update handbook with guidelines appropriate for new framework version
- Develop a Rollout Strategy and Plan for gradual migration
- Create tooling and proper infrastructure to be able to use both framework versions in production during migration process.
- 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
- Implement compatibility layer for unifying differences between framework versions
- Create automated tooling (where applicable) to migrate existing Vue.js 2 code to be compatible with latest framework version
- Create deprecation strategy for patterns and solutions which are not compatible with Vue.js 3 to rest of the teams
- 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 |
0b1623f6
)