<div dir="ltr"><div>Baiju,<br><br>Thanks for the references. A monorepo would be my default for my own corporate project, but
not an open source one. Google Inc. may internally have a monorepo but
Kubernetes, being a Google open source project, is composed of a number
of separate repos.<br><br></div><div>If the ALMighty project claims to
make it easy to go from new project (and usually new repo) to production
microservice but was in turn developed with a model that does not fit
the goal it is enabling, then we are not eating our own dog food. I
think the problems favouring a monorepo are possibly the same problems
this project should help solve.<br><br></div>Regards, Travis<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 20, 2016 at 9:41 PM, Baiju Muthukadan <span dir="ltr"><<a href="mailto:bmuthuka@redhat.com" target="_blank">bmuthuka@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All,<br>
<br>
Today we have organized source code across multiple Git repositories<br>
(almighty-core, almighty-ui, almighty-devdoc etc.). If we are going<br>
to create one repo per microservice, we are going to end up with so<br>
many repositories.<br>
<br>
I have noticed that some projects/organizations uses a single<br>
repository, commonly referred as Monorepo, to organize source code.<br>
BTW, Monorepo is a "monolithic" codebase but that doesn't mean the<br>
software architecture also follows a monolithic design.<br>
<br>
>From <a href="https://en.wikipedia.org/wiki/Codebase" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/<wbr>Codebase</a> :<br>
<br>
There are both advantages and disadvantages to a monolithic<br>
codebase, when it is compared to a distributed codebase. Most<br>
simply, a monolithic codebase simplifies integration-changes to<br>
different components or refactoring of code between components can<br>
be done easily and atomically-and allows operations across the<br>
entire codebase, but requires a larger repository and makes it<br>
easier to introduce wide-ranging technical debt. A separate<br>
codebase or a distributed codebase keeps individual repositories<br>
smaller and more manageable, enforcing at the same time separation<br>
between components, but it also requires integration between<br>
codebases (or with the main repository), and complicates changes<br>
that span multiple codebases<br>
<br>
This article by Dan Luu has more info and pointers about Monorepo:<br>
<a href="https://danluu.com/monorepo/" rel="noreferrer" target="_blank">https://danluu.com/monorepo/</a><br>
<br>
Here is another article in the context of a microservice architecture:<br>
<a href="http://blog.shippable.com/our-journey-to-microservices-and-a-mono-repository" rel="noreferrer" target="_blank">http://blog.shippable.com/our-<wbr>journey-to-microservices-and-<wbr>a-mono-repository</a><br>
<br>
Here is an example Monorepo: <a href="https://github.com/SeleniumHQ/selenium" rel="noreferrer" target="_blank">https://github.com/SeleniumHQ/<wbr>selenium</a><br>
The source code includes C++, C#, Java, Python, Ruby, JavaScript etc.<br>
<br>
Should we use Monorepo for managing source code of Almighty? I think<br>
for now, we can stick with "Manyrepo" and observe our challenges with<br>
devlopment, code quality, testing, build & deployment. And if we<br>
clearly see problems with our approach, we can switch to a Monorepo in<br>
future. But to observe problems, we need to have an understanding of<br>
what we need to look out for when using the "Manyrepo". So, I would<br>
suggest everyone to read the 2 articles given above.<br>
<br>
P.S: This is my first mail to the Almighty public mailing list :)<br>
<br>
Regards,<br>
Baiju M<br>
<br>
______________________________<wbr>_________________<br>
almighty-public mailing list<br>
<a href="mailto:almighty-public@redhat.com">almighty-public@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/almighty-public" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/almighty-<wbr>public</a><br>
</blockquote></div><br></div>