<story><title>Josh: Get the advantages of a monorepo with multirepo setups</title><url>https://github.com/esrlabs/josh</url></story><parent_chain><item><author>derefr</author><text>IANAMU (I Am Not A Monorepo User), but as far as I understand monorepos and their advantages, I&amp;#x27;m not sure what the use-case for this tooling is.&lt;p&gt;Most of the time, when an org chooses to move to having a monorepo (rather than just being left with one by accident of history), the key advantage they&amp;#x27;re striving to attain, is the ability to make changes to cross-cutting concerns across many distinct applications&amp;#x2F;libraries, with single commits&amp;#x2F;PRs. To change an API, and &lt;i&gt;all&lt;/i&gt; of its internal callers, atomically, without having to worry about symbolically binding the two together with dependency version constraint resolution.&lt;p&gt;Which is to say, the key advantage of a monorepo comes from having the whole monorepo checked out locally.</text></item></parent_chain><comment><author>majormajor</author><text>When I&amp;#x27;ve used a monorepo, that was one of the explicit goals.&lt;p&gt;Avoiding &amp;quot;here&amp;#x27;s my new library version, go see if it breaks your shit&amp;quot; was the goal - you make a change, you run the tests, you see if the whole company&amp;#x27;s code can still build or not. Having fully-separate projects in directories in the monorepo using published dependencies was considered an antipattern (though it was very hard to keep some teams from doing that).&lt;p&gt;The disadvantages of the resulting monorepo weren&amp;#x27;t &amp;quot;this directories are so big to keep checked out when I&amp;#x27;m just working on one specific project&amp;quot; it was &amp;quot;our old build times and build tools are dying under the strain and even trying to move to a &amp;#x27;monorepo friendly&amp;#x27; build tool might be an intractable problem because our dependency graph has become such a mess of spaghetti.&amp;quot;&lt;p&gt;A monorepo that was done well from the start so you &lt;i&gt;don&amp;#x27;t&lt;/i&gt; have the slow-spaghetti-build problem from months or years of &amp;quot;oh it&amp;#x27;s easy to depend directly on this full other module, let&amp;#x27;s just do that&amp;quot; sounds very appealing. We just didn&amp;#x27;t pull it off in practice, and this project would ... maybe... help in the early stages by letting people have more restricted checkouts? But only if you already know what you&amp;#x27;re doing anyway.</text></comment>
<story><title>Josh: Get the advantages of a monorepo with multirepo setups</title><url>https://github.com/esrlabs/josh</url></story><parent_chain><item><author>derefr</author><text>IANAMU (I Am Not A Monorepo User), but as far as I understand monorepos and their advantages, I&amp;#x27;m not sure what the use-case for this tooling is.&lt;p&gt;Most of the time, when an org chooses to move to having a monorepo (rather than just being left with one by accident of history), the key advantage they&amp;#x27;re striving to attain, is the ability to make changes to cross-cutting concerns across many distinct applications&amp;#x2F;libraries, with single commits&amp;#x2F;PRs. To change an API, and &lt;i&gt;all&lt;/i&gt; of its internal callers, atomically, without having to worry about symbolically binding the two together with dependency version constraint resolution.&lt;p&gt;Which is to say, the key advantage of a monorepo comes from having the whole monorepo checked out locally.</text></item></parent_chain><comment><author>wildmanxx</author><text>The ability to do &lt;i&gt;some&lt;/i&gt; changes like that is not the same as doing it &lt;i&gt;always&lt;/i&gt;. Most commits are quite localized, and those should not be penalized by the ability to have a few cross-cutting ones.</text></comment>