As a result of decisions made at the recent Vue.js Developer Summit, a new library will serve as the canonical, shared Vue.js user-interface component library as future development standard in MediaWiki. This library will be collaboratively built by the Wikimedia Foundation, Wikimedia Deutschland, and volunteer developers.
## Acceptance Criteria
**The ultimate goal of this task is to enable code contributions to the library.**
The following must be completed before people can effectively contribute to the library. These items will be moved to subtasks once the details are ironed out a bit more:
#### 1. Create a new repository for the shared library
[] Create subtasks associated with new repository for the shared library @Catrope
To do:
- Create the new repository in Gerrit. Eventually, we may consider moving to GitLab.
- Document it on mediawiki.org. Revisit Vue-related pages and document what the new library is, where it's located, and what people should expect in the near and long terms.
- Document it on Phabricator by creating a new tag or workboard for the library
#### 2. Document general contribution guidelines
To do:
- Add contributing guidelines to the library
- Add library guiding principle to the library
- Make them visible in the demo site
To be determined:
- Review existing contributing guidelines from WVUI and WiKit, combine, and finalize (see T291417)
- Finalize guiding principles (see T288380)
#### 3. Determine contribution process for existing library code
[] Create subtasks associated the contribution process for existing library code
To do:
- Agree with key library stakeholders how we will add and review code from existing libraries (e.g. WVUI and WiKit)
To be determined:
- Who will contribute existing code?
- How will we ensure that credit goes to the original author if possible?
- What is the review process for this code, which has already undergone careful review? (Note that everything will need to be updated to Vue 3.x, so some review is needed)
- How will we prioritize components? Note that we'd like to replicate WVUI features as soon as possible so we can deprecate WVUI
#### 4. Add and configure tooling
[] Create subtasks associated with tooling @egardner
The following potential subtasks should not be very controversial, but are also not trivial:
- Add and configure Vite
- Add and configure Storybook
- Add and configure linters and code formatters
- Add and configure CSS tooling and define guidelines for authoring styles
- Add and configure TypeScript
- Add and configure Jest
- Add npm scripts for building the library, dev server, testing, etc.
- Add Docker configuration for local development and production releases
- Set up a live Storybook instance representing (at least) the main branch
- Set up Vue 3.x
- Minor configuration we may want to keep:
- git hooks
- bundlesize
To be determined:
- What configuration from WiKit and WVUI do we want to transfer to the new library?
#### 5. Create a stable design token setup
[] Create subtasks associated with design token setup @Volker_E
To do:
- Set up and document design token architecture and standards. This should be finalized and stable to enable easier contributions.
To be determined:
- We've decided that design tokens will be housed in WikimediaUI Base, but there are still details to figure out. What will we do with the component-specific variables in WVUI? How will tokens from WikimediaUI Base, a separate repository, be visualized in Storybook?
===Definition of Done
[] New repository is created in Gerrit for the library
[] Associated Phab artifacts are created
[] Vue 3, Vite, TypeScript, Jest, linters, and all other tooling described in part 4 of this list are installed and configured
[] Demo tool is installed and configured for development and documentation
[] README, contributing guidelines, and developer guidelines are written and visible in the demo tool
[] Design token architecture is determined and anything related is configured in the library
[] We have a plan for adding existing components to the new library