Monorepo vs. Multirepo - RayTracing/raytracing.github.io GitHub Wiki

With multirepo, each book/project gets it's own repository. With monorepo, a single repository contains all content for all books and projects.

Multirepo Advantages

  • Each book/project is independent of changes made to other books. If a piece of similar code is corrected in another book or project, you don't need to take the fix in a different book until you're ready to address it.
  • Book URL: https://raytracing.github.io/InOneWeekend/

Monorepo Advantages

  • Shared resources such as release tools, book CSS, Markdown scripts, project documents and so forth have a single source, and need not be copied+added+committed+pushed+PR'd to multiple locations.
  • To get the entire suite, you only need to clone a single repo, or download a single package.
  • The project gets a clear common version number.
  • Getting the latest versions is accomplished with a single git pull, rather than having to go to multiple clones to pull from each.
  • Releases are easier, as they include all content, rather than needing to get a release per book. This includes the work of a detailed and useful CHANGELOG, as changes may impact multiple books.
  • Issues that impact multiple books are much easier to address. Multirepo requires filing similar issues in each impacted repo.
  • The entire project can have a single common wiki. This is a weak advantage, as we could also just direct each book to the a common wiki under the raytracing.github.io wiki.
  • Book URL: https://raytracing.github.io/InOneWeekend/ (if monorepo is raytracing.github.io, subdir InOneWeekend)
  • Book URL: https://raytracing.github.io/RayTracing/InOneWeekend (if monorepo is RayTracing)