[almighty] Monorepo

Baiju Muthukadan bmuthuka at redhat.com
Wed Sep 21 02:41:06 UTC 2016


Hi All,

Today we have organized source code across multiple Git repositories
(almighty-core, almighty-ui, almighty-devdoc etc.).  If we are going
to create one repo per microservice, we are going to end up with so
many repositories.

I have noticed that some projects/organizations uses a single
repository, commonly referred as Monorepo, to organize source code.
BTW, Monorepo is a "monolithic" codebase but that doesn't mean the
software architecture also follows a monolithic design.

>From https://en.wikipedia.org/wiki/Codebase :

  There are both advantages and disadvantages to a monolithic
  codebase, when it is compared to a distributed codebase.  Most
  simply, a monolithic codebase simplifies integration-changes to
  different components or refactoring of code between components can
  be done easily and atomically-and allows operations across the
  entire codebase, but requires a larger repository and makes it
  easier to introduce wide-ranging technical debt.  A separate
  codebase or a distributed codebase keeps individual repositories
  smaller and more manageable, enforcing at the same time separation
  between components, but it also requires integration between
  codebases (or with the main repository), and complicates changes
  that span multiple codebases

This article by Dan Luu has more info and pointers about Monorepo:
https://danluu.com/monorepo/

Here is another article in the context of a microservice architecture:
http://blog.shippable.com/our-journey-to-microservices-and-a-mono-repository

Here is an example Monorepo: https://github.com/SeleniumHQ/selenium
The source code includes C++, C#, Java, Python, Ruby, JavaScript etc.

Should we use Monorepo for managing source code of Almighty?  I think
for now, we can stick with "Manyrepo" and observe our challenges with
devlopment, code quality, testing, build & deployment.  And if we
clearly see problems with our approach, we can switch to a Monorepo in
future.  But to observe problems, we need to have an understanding of
what we need to look out for when using the "Manyrepo".  So, I would
suggest everyone to read the 2 articles given above.

P.S: This is my first mail to the Almighty public mailing list :)

Regards,
Baiju M




More information about the almighty-public mailing list