Feb 19, 2020 • ☕️ 3 min read
There is no doubt that microservices has dictated the current landscape in the web development world for the last 2 years. And a new trend emerging recently when many open source projects or startups moved from multiple repositories to monorepo.
Monorepo is not new, Google and Facebook have been using it for years. So why now? I believe it depends a lot on the maturity of building systems.
Monorepo is a software development strategy where code for many projects is stored in the same repository, these projects are most likely unrelated, loosely connected or can be connected by other means like dependency management tools. The repository is large in many ways:
Facebook — with thousands of commits a week across hundreds of thousands of files, Facebook’s main source repository is enormous—many times larger than even the Linux kernel. Read more about Buck and Scaling Mercurial at Facebook.
Google — early Google employees decided to work with a shared codebase managed through a centralized source control system. This approach has served Google well for more than 16 years, and today the vast majority of Google’s software assets continues to be stored in a single, shared repository. They use Bazel as build system.
Twitter — using a custom build of Git which includes patches enhancing it to better deal with very large repositories in the range of multiple gigabytes.
Keep in mind monolithic source control does not necessarily result in monolithic software. And microservices can play well with monorepo.
There are two basic types of Monorepos are huge repositories containing all the code maintained by a company or project specific Monorepos like Babel, React.
Now you have a good overview of monorepo. I’ll share about how to setup a monorepo, how it played nicely with CICD and how it affect developer experience later in another posts.
I recommend developers to give monorepo a try in coming years.
Some noted problems that might hold CSS back and open up new development of preprocessors or CSS-in-JS
Short answer is yes, long answer is it depends on your content and expectation in terms of performance, SEO, cost, and developer experience
Big-O notation gives you a rough indication of the running time of an algorithm and the amount of memory it uses
The industry darling BEM, the rebellious maverick Atomic CSS, and other incompetent solutions