Instead of storing each Ginger module in its own Git repository, we combine them in one monolith repository. With this, we’re following the monolith or monorepo strategy advocated by Facebook, Google, Symfony and others.
In the case of Ginger, there are at least 3 distinctive benefits of having a single repository:
-
There’s less maintenance overhead: every developer and all environments will always have the same version of all modules. This is true especially
-
Releasing is easier: because we’re constantly testing the modules together, we’ll quickly notice whether any incompatibilities between modules occur.
-
To the outside world, Ginger is one product. Having one repository means there’s one place that users can report issues and developers can open pull requests.
Of course, it should still be possible to include a single Ginger module in a Zotonic project. To enable this, we will create read-only subtree splits and keep those updated automatically whenever a commit is pushed to the main repository.