Skip to content

Define branching model #33

Open
Open
@cornelius

Description

We need to define how we use git branches, what are the expectations in terms of stability on which branches, from which branches to do releases, how changes propagate between branches, etc.

One option would be to follow the bitcoin model:

They have release branches for release trains such as 0.16 and 0.17, then there is master, and that's it.

A release branch in bitcoin is mostly a stable snapshot. At some point they branch off of master and start polishing, which is mostly finishing the release notes, generating man pages, etc. The release process is outlined in https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md

Patches for CVEs are backported into the release branches (if applicable).

Here is how their release schedule looks like: bitcoin/bitcoin#14438

Another option would be to follow a devel/master model (see for example one variant in "a successfull git branching model", we might want to use a simplified version, though). One advantage of using master to release from is that it's a stable branch name, so CI or other tooling doesn't have to be reconfigured for each release.

A related aspect is how to handle work which is in progress. While we do want to encourage developers to submit code soon and often, stable branches should not be broken by unfinished code. Feature flags might be one way how to address this, so that code can mature on different schedules in the same branch, that might not work for all features, though.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    open sourcingTask related to setting up the open source project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions