Gitlab manifesto

Inspired by « The Frugal Architect » from Amazon CTO Werner Vogels, this manifesto explain simple laws to create sustainable, scalable and human-friendly delivery processes on Gitlab.

Law 1 - Use labels to categorise Merge Requests

During the lifetime of a project, maintainers may handle dozens of merge requests, depending on the number of contributors and other factors. Some requests might add minor features, while others will patch critical issues.

Because maintainers have to manage a large volume of diverse requests, labels must be used to help them prioritize effectively.

Law 2 - Use reusable pipeline components

The velocity of a team is a metric related to its ability to deliver value as quickly as needed by the business teams.

In a company with large development teams, velocity can be improved by sharing common components among multiple teams, such as GitLab pipelines.

While a delivery process can be specific to a team, this same team can (re)use components created by another team and shared in a catalog, such as a piece of code handling OIDC authentication to a cloud provider.

In Gitlab, this concept is called “CI/CD Catalog”.

CI/CD components | GitLab
GitLab product documentation.

Law 3 - Categorise your runners using tags

GitLab runners must have tags to ensure efficient job distribution.

Tags match jobs with appropriate runners, optimizing resource usage and performance. They facilitate better management of diverse workloads by directing specific tasks to suitable runners, and matching pipeline constraints like specific architectures, such as arm64 or x86_64, or a specific framework version like python3.12.

Law 4 - Empower code reviewers with Merge Request templates

GitLab merge request templates significantly enhance overall code quality and streamline the process for maintainers testing and validating changes.

These templates provide a standardized format, ensuring all necessary information, such as testing steps, dependencies, and related issue links, is included in every merge request.

This consistency helps prevent omissions and reduces the likelihood of errors, facilitating thorough reviews and comprehensive testing. Additionally, templates can include checklists for coding standards and best practices, ensuring adherence to project guidelines.

By promoting uniformity and thoroughness, merge request templates contribute to higher code quality and a more efficient review and validation process for maintainers.

Law 5 - Automate your dependency management

Modern IT systems are built on top of dozens of software applications and programming languages, each with its own lifecycle.

Manually upgrading each individual dependency is not realistic, so automation is essential.

Dependency management automation with Renovate
Modern IT systems are built on top of dozens of software applications and programming languages. These systems often depend on third-party components, which help developers avoid reinventing the wheel. These components, mostly libraries or frameworks, have their own lifecycles, allowing for the addition of new features and the patching of

Read more