[almighty] Monorepo
Suraj Deshmukh
surajd at redhat.com
Tue Oct 25 04:31:16 UTC 2016
Hi,
On Wed, Sep 21, 2016 at 8:11 AM, Baiju Muthukadan <bmuthuka at redhat.com> wrote:
> 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
>
> _______________________________________________
> almighty-public mailing list
> almighty-public at redhat.com
> https://www.redhat.com/mailman/listinfo/almighty-public
With respect to our discussion above found a lightening talk(~5min)
about "Monolithic repositories vs. Many repositories" [1].
Desc:
Deciding to use a monolithic repository or many repositories for your
next project is not easy. Why not using both strategies? That’s
possible with split.sh, an open source tool that automates the
splitting of a monolithic Git repository into many standalone
repositories.
[1] http://www.thedotpost.com/2016/05/fabien-potencier-monolithic-repositories-vs-many-repositories
--
- Suraj Deshmukh (surajd)
https://deshmukhsuraj.wordpress.com
https://twitter.com/surajd_
More information about the almighty-public
mailing list