The following page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features or functionality remain at the sole discretion of GitLab Inc.
Monolithic repositories, more commonly known as monorepos, are a software development approach where code for many projects is stored in a single repository.
Monorepos provide a number of advantages such as reduced complexity, code reuse, easier collaboration amongst teams, and streamlined dependency management. Additionally, there are several drawbacks such as difficult to scale, performance concerns, requires large amounts of storage, and loss of per-service semantic versioning.
As noted before, monorepos offer some great advantages. Here are some examples when a monorepo is a great choice:
We want to improve the monorepo experience - whether it has multiple services that all get deployed together, or if it's a mobile app in a single repo that needs to be built completely differently for iOS and Android.
The primary stages that will be supporting our development of a better monorepo experience are:
Secondary stages contributing to the betterment of monorepos in GitLab are:
GitLab already has a number of important features that help monorepos:
The primary way for us to improve the monorepo experience is by focusing on the performance of large files inside of repositories and streamlining the CI pipeline for them. We're currently working on the following two initiatives to help with both of those features:
We are looking at adding native experiences in GitLab such as using AutoDevops to build and deploy to multiple containers in a monorepo. This type of functionality would be a game-changer for large monorepos looking to use Auto DevOps. Enabling users managing large repositories using mutliple containers per repository with CI templates, solves some of the top challenges that are facing organizations adopting DevOps and using monorepos.