Vue.js 3 Migration Working Group
|Target End Date||2023-10-31|
|Slack||#wg_vue3_migration (only accessible from within the company)|
|Google Doc||Agenda (only accessible from within the company)|
|Overview & Status||See Exit Criteria Progress|
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.
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 Progress
|Criteria||Start Date||Completed Date||Progress||DRI|
|Use Vue.js 3 for running test suites||0%||
|Vue.js 3 upgrade tasks and testing for all groups available||0%||
|Vue.js 3 upgrade tasks and testing by all groups completed.||0%||
|Use @vue/compat for Vue-related projects||0%||
|Drop Vue.js 2 support||0%||
Roles and Responsibilities
|Working Group Role||Person||Title|
|Executive Sponsor||Tim Zallmann||Senior Director of Engineering|
|Co-Facilitator||Martin Wortschack||Engineering Manager, Manage:Import|
|Functional Lead||Illya Klymov||Senior Frontend Engineer, Manage:Import|
|Functional Lead||Natalia Tepluhina||Principal Engineer, Plan|
|Functional Lead||Stanislav Lashmanov||Senior Frontend Engineer, Create: Code Review|
|Functional Lead||Andrew Fontaine||Senior Frontend Engineer, Release|
|Member||Mark Florian||Staff Frontend Engineer, Manage:Foundations|
|Member||Laura Meckley||Frontend Engineer, Fulfillment::Billing & Subscription Mgmt|
|Member||Andrei Zubov||Frontend Engineer, Release|
|Member||Artur Fedorov||Senior Frontend Engineer, Secure|
|Member||Frédéric Caplette||Senior Frontend Engineer, Verify:Pipeline Authoring|
|Member||Eduardo Sanz Garcia||Senior Frontend Engineer, Manage:Authentication and Authorization|
|Member||Ross Byrne||Fullstack Engineer, Growth:Acquisition|
|Member||Samantha Ming||Senior Frontend Engineer, Govern:Threat Insights|