As a Wikibase maintainer I'd like have an evaluation of making Wikibase a monorepo so that we can make an informed decision as to pursuing the idea further.
Wikibase repository contains multiple possibly software "packages" ("libraries"). Those could be identified in the PHP code but also in Wikibase Front end code - both legacy and new vuejs code. There is also shared logic stored in i18n messages and their translations, and definitions of ResourceLoader modules used in Repo and Client. This includes the "packages" that are expected to be discovered when reorganizing the shared logic (e.g. in "Lib"). Current process of releasing, and updating packages is fairly costly. It is possible that organizing the code of those "package" in as single VCS repository would make the maintenance effort significantly lower.
It seems plausible to use the monorepo strategy to maintain multiple software packages in a single VCS repository. One of benefits foreseen is simplifying the process of releasing new version of those packages and updating version of them used in the actual Repo and Client applications.
Scope constraints: It would be strongly preferred to have a monorepo structure for both backend (PHP) and frontend code bases. If possible including shared i18n messages and ResourceLoader modules would be beneficial but it is not considered mandatory given no-code nature of these.
Approach: Perform two spikes to try out a certain technical solutions and compile list of findings:
- composer-based solution experimented with by @Addshore [ link 1 ], [ link 2 ]
- some standard tool, e.g. split or any sensible tool listed in the awesome-monorepo list.
Note: the goal of this task is not to start migrating Wikibase towards monorepo model. It is about doing short-lived experimentation with the intention of gathering knowledge allowing to make decision on applying some implementation of monorepo strategy to Wikibase.
Note: Consider how to enforce clear boundaries between separate "packages" (i.e. that libraries do not madly depend on each other etc)
Timebox: 16 person hours (for the whole team to distribute)
Acceptance criteria:
- There is an evaluation provided (linked in this task) of feasibility and applicability of the using monorepo strategy for the software "packages" Wikibase
Evaluation should:
- highlight benefits and drawbacks of solution tested
- list identified challenges (solving challenges is not expected)
- provide some rough estimate of effort required for introduction and maintenance of the evaluated solution.
- There is a comparison of options evaluated in case of evaluating multiple solutions provided (linked in this task)