Skip to content

New RFC: Use Trunk-based Development #49

@edmundmiller

Description

@edmundmiller

Have you read the RFC docs?

  • Yes, I have read and understood the RFC docs

Summary

Instead of GitFlow, we should adopt Trunk-Based Development.

A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.

Image

Champion

@edmundmiller

Background & Motivation

An example where GitFlow is confusing and doesn't help the developer. nf-core/bamtofastq#126

It ends up creating a lot of extra noise, and work for the developer and review fatigue of PRs that aren't actually making changes and are just a git ceremony.

Issues:

  • Release bottlenecks: Multiple approval layers between dev and master slow feature delivery
  • Contributor confusion: dev functions as the de facto main branch while master remains the official default
  • Maintenance burden: Managing three branches across 100+ pipelines creates substantial overhead

Scientific Software Alignment

  • Lower barriers for academic contributors who may have limited version control experience
  • Faster validation of scientific methods through continuous integration
  • Improved reproducibility tracking with a single source of truth
  • Better alignment with container-based workflows increasingly adopted in bioinformatics

This will allow:

  • Pipeline releases are created more frequently and aren't held up by "dev => master" review requests, template updates, and module version updates.
  • We can bump the dev reviews up to 2 people to increase the actual stringency of the reviews and not rely on a few people to review thousands of lines before a release can be cut.
  • Avoid merging master => dev and other back-and-forth git syncs that are confusing.

Goals

  • nextflow run nf-core/sarek -profile test works without -r master or a revision locally for users.
  • Remove the dev and master branches and migrate to main branches

Non-Goals

  • Implement the new review rules to merge to main.
  • Decide who can cut a release.

References

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions