MariaDB Server GitHub branches: Moving to “main”

On the 3rd of July, two weeks ago, I created a poll to ask about the future of feature development branches in MariaDB Server. Specifically, whether we should switch to a rolling model which is more familiar to users of services such as GitHub.

The votes we received gave a very clear result. Today I will share the conclusions we drew, as well as setting expectations for what will happen next.

Recap: what is this “main” branch all about?

In a rolling model, there is one main branch of the tree that all the feature commits go into (typically called “main”), and this is then forked when it is time to prepare a major release.

MariaDB Server GitHub branches: Have your say

Many countries in the world right now are hosting elections, in fact, my own country’s election is tomorrow. MariaDB Foundation is also asking for you to make one more vote on our own kind of referendum.

We have recently had a request by a member of the community to change how we use GitHub, in a way that, in-theory, will make things easier for community contributors. I’ll explain the current situation, the proposal and then the poll.

Current situation

At the moment, if you want to develop a new feature for MariaDB Server, it needs to be developed against the latest version branch, which is the default branch when you view on GitHub.

Improving MariaDB support in open source projects

As part of MariaDB’s efforts in Adoption, we have been working on support of MariaDB in open source projects. 

The open source projects we have been looking at range from well known, ready to use projects like WordPress or MediaWiki (that Wikipedia runs on), to under-the-hood solutions like ORMs that connect software with databases for countless other open source and private projects.

MariaDB is the de facto standard that many projects and users are running. As MariaDB diverges, matures and develops on its own path from MySQL, especially in later versions, it’s not enough to shrug off compatibility questions with “MariaDB is a drop-in MySQL replacement – everybody knows that”.

Start of Life for MariaDB 11.6

We normally announce releases and the end of life of releases, but today we are going to try something a little different, an announcement of “start of life”.

What does this mean?

The way we use GitHub is a little different to most projects. Instead of having a mainline and branching versions from that, MariaDB Server creates a new branch from the previous version. This is intended to happen shortly after the preview release of the previous version, but for various reasons it can come a little later. So by default, after the hypothetical version 11.7.0 is released, we will create the 11.8 branch in GitHub soon after.

Progress on Pull Request Processing

In his blog post “On Contributions, Pride and Cockiness ” in May, MariaDB Foundation CEO Kaj Arnö spoke of a renewed focus on MariaDB Server pull requests. Processing community pull requests in good time is a key part of our mission, but we’d been falling behind, and receiving justifiable criticism. At the time of that article, there were 167 open pull requests, with many open for far too long, and contributors were frustrated.

We set out two end goals:

  • Reduce backlog of open pull requests
  • Motivate contributors to make more contributions

There’s been no noticeable uptick in contributions since then, but we’ve made good progress in reducing the number of open pull requests. …

On Contributions, Pride and Cockiness

At MariaDB Foundation, we are proud of MariaDB Server getting plenty of contributions. But we don’t want to get cocky, so here is an update about where we stand, and what we want to make happen.

First, we have shown our contribution pride in several places. On 15 February 2019, I tweeted

Repeating: On code contributions, #MariaDB beats #MySQL 1009 to 247: We have over a thousand (1009) closed pull requests on GitHub (and 179 open), MySQL has 247 closed (1 open).

In our Annual Report 2018, we spent several pages, talking about pull requests and patches, showing code contribution statistics. …

Protected branches – ensuring code quality in git

In order to ensure that new (or changed) code does not break anything, there is an extensive test suite that is run to catch regressions during MariaDB Server development. Developers are expected to run the test suite locally and, after pushing the code to the remote repository, also check that the more extensive tests run on Travis CI and in particular Buildbot do not find any regressions either. However, sometimes developers are sloppy, make mistakes, don’t check the test results and in a hurry to just push their code change on the main branches, and then the test suite gives errors for everybody else from that point on. …

Community contributions to MariaDB

One of the goals of the MariaDB Foundation is to help new contributors understand the source code and to lower the barrier for new participants. One way to measure this is to look at the number of pull requests received and accepted, as these mostly reflect community contributions. The figures below are for the main server only, not any of the connectors or tools hosted on the Foundation’s GitHub account, and for the period 1 January to 1 July 2017.

Number of GitHub pull requests received: 126 (+113% Year-on-Year)
Number of pull requests reviewed: 102 (+76% YoY)
Number of contributors: 28 (+22% YoY)
Number of reviewers: 13 (+44% YoY)

By comparison, here are the equivalent figures for MySQL:
Number of GitHub pull requests received: 35 (-10% Year-on-Year)
Number of contributors: 19 (+27% YoY)

Although the MariaDB codebase is large and complex, we’re happy to see that there have been some interesting and important contributions from the community. …