BlogsGitLabRelease Cadence and Philosophy

Release Cadence and Philosophy

Release Cadence and Philosophy

6
posts
2015–2020

GitLab has adopted a time-based release cadence, releasing new versions on the 22nd of every month regardless of feature completion. This philosophy prioritizes predictability, user trust, and developer motivation over feature-driven releases. The approach aims to reduce stress, increase satisfaction by ensuring regular delivery, and foster a more active and engaged open-source community. This contrasts with traditional feature-driven releases which can lead to shifting deadlines, disappointment, and a less predictable development cycle. This post highlights the company's rapid iteration and shipping speed as a core tenet of its engineering culture, emphasizing small, focused changes and merging them quickly.

2020

What is GitLab's feature deprecation strategy?

2/21/2020

This post details GitLab's feature deprecation strategy, explaining the rationale behind deprecating features (lack of revenue, low usage) and the concept of 'technical debt interest rate'. It emphasizes that features should be a solid base for future development and that deprecation helps prevent older features from holding back new ones.

2018

How we maintain product velocity with a monthly release cycle

11/21/2018

This post details GitLab's adoption of a monthly release cycle (on the 22nd of each month) as a core part of its product development and delivery strategy. It explains the benefits for users (predictable value delivery) and the team (capacity planning, smaller feature iteration). It also addresses challenges such as the temptation to rush features before the merge window and the impact on morale, outlining the development of a release process and template to mitigate these issues. The post concludes by offering guidance on determining the appropriate release cadence for different types of organizations.

2016

My first weeks at GitLab: How we ship so quickly

10/24/2016

This post details GitLab's rapid shipping cadence, emphasizing communication (remote-only, handbook, single manager reporting, essential meetings), focus (pick the next smallest thing, don't over-engineer, don't do massive restructures, merge if better), and iteration (new release on the 22nd of every month). It highlights Cycle Analytics as a tool to measure the time from Idea to Production, which is measured in minutes.

Release Early, Release Often

7/21/2016

This post introduces the concept of 'releasing early and often' as a trend in software development, contrasting it with traditional large, infrequent deployments. It explains the logic behind this approach, highlighting benefits like easier bug isolation, reduced impact of feature delays, and a focus on delivering smaller slices of customer value. The post then details GitLab's adoption of time-based releases (shipping on the 22nd of every month) as a mechanism to enable this, offering advice on how to transition to this model. Key takeaways emphasize the obsolescence of 'perfect' software releases in favor of usability, fast turnaround, and development efficiency.

2015

How we managed 49 monthly releases

12/17/2015

This post details the practical implementation of GitLab's monthly release cadence, which began in October 2011 and reached its 49th release by December 2015. It elaborates on the 'why' behind time-based and monthly cycles, drawing inspiration from projects like Ubuntu and GNOME. It explains how work is organized through an Agile practice where team members pick up tasks from a pool, and how the 'Release Manager' role rotates monthly to ensure reliability and process improvement. The post also outlines the specific steps involved in preparing and executing a monthly release, including the creation of release candidates, testing, deployment to GitLab.com, and the final release at 12 am CET on the 22nd. It further discusses post-release activities like handling regression issues and patch releases, and emphasizes the advantages of this predictable schedule for open-source projects, fostering trust and indicating active development.

Why we shift objectives and not release dates at GitLab

12/7/2015

This post introduces GitLab's core philosophy of a fixed, monthly release date (the 22nd) for all versions, emphasizing that objectives are shifted rather than deadlines. It highlights the benefits for users (predictability, planning), open-source projects (adoption, participation), and developers (motivation, satisfaction). The post contrasts this with feature-driven releases and explains how this time-based approach promotes discipline, quality, and motivation by forcing focus on high-priority tasks and providing regular opportunities for celebration and rest.