How can we collaborate, where should that be, and when? There are several existing Vue.js component collections (some embedded in applications) including:
- [[ https://doc.wikimedia.org/wikibase-vuejs-components/master/ui/?path=/story/indeterminateprogressbar--default | WMDE ]]
- [[ https://people.wikimedia.org/~santhosh/storybook/?path=/story/components-button--different-buttons | ContentTranslation ]]
- [[ https://github.com/egardner/mediawiki-extensions-MachineVision/blob/master/resources/components/base/Button.vue | MachineVision ]]
These are each solving the same problems. Now Web is considering reinventing parts needed for the new Vue.js search experience such as buttons and progress bars. It could be better if we started sharing a codeveloped solution sooner rather than later. That important decision is what this task explores:
- How: what infrastructure or work is needed so that we can collaborate effectively?
- Where: in what repo should shared components live?
- When: Web's project has pressing Product concerns. We do not wish to repeat the past mistakes but neither can we wait for the perfect solution to arrive. An existing library such as WMDE's component library may resolve both concerns if WMDE is open to collaboration at least in terms of providing regular code review for patches submitted.
WMDE has a process wherein components "ripen" from an application-specific use case to a shared component library. This task is //not// about the application specific development or isolated use case but for the //common// widgets that would be needed by any WMF / WMDE application, many of which exist in some form already.