There were several reasons behind splitting the old SVN monorepo in two
Git repositories:
- It made packaging for GNU/Linux distributions easier, since
speed-dreams-data would be often considered as a separate,
portable package, as typically done in other video games. For example,
0ad and 0ad-data, cube2 and cube2-data, and so on.
- It reduced the repository size for the engine repository as much as
possible, which is often desirable for CI/CD runs and developers with
poor connectivity and/or who only want to perform quick changes to the
source code. After all, speed-dreams-data is around 294 MiB as of the
time of this writing, whereas speed-dreams-code is around 36 MiB.
However, there are situations where having both repositories together is
desirable or even mandatory:
- In the case of Windows builds, both repositories must be configured by
the same top-level CMakeLists.txt so that files and targets from both
repositories are installed simultaneously, and therefore packaged into
the NSIS-based installers. Otherwise, it would require users to run two
separate installers, one for speed-dreams-code and another for
speed-dreams-data.
- Having a submodule makes which version from speed-dreams-data is
compatible with speed-dreams-code clearer.
- Not having a submodule required developers to both fetch the
speed-dreams-data repository and install it, which means double disk
space usage.
- Some users might still prefer to work on a monorepo and not have to
worry about installing speed-dreams-data beforehand.