The Path to Code Contributions in MariaDB Server

I have been working for the MariaDB Foundation as the Chief Contributions Officer for a couple of weeks and it is fantastic being part of the MariaDB family again. Part of my job is to help the community massage pull requests into something that we can merge. I am, however, finding that one of the worst parts of my job is having to say “no” to contributions that clearly took a lot of time and effort on the part of the developer.

Contributions could be turned down or at least will require changes for a number of reasons.

Contribution Wish List

Would you like to contribute to the MariaDB Server code base, its feature set, its quality? Here’s what you can do to help – in other words, here’s our Contribution Wish List

Scratching your own itch

The assumption around code contributions is usually that the code contributor extends the product in a direction that corresponds to the contributor’s own needs, which in turn are close to the needs of other users. “Scratching your own itch” is the phrase commonly used.

Some itches are more for the common good

That said, we have also been approached by potential providers of contributions that would take a more general approach.

Hired: Chief Contributions Officer

Openness, Adoption, Continuity: That’s the mantra of three words MariaDB Foundation uses to describe its mission. At the core of Openness are contributions of code to MariaDB Server. The good news: We are now putting more resources into contributions, by hiring Andrew “LinuxJedi” Hutchings as Chief Contribution Officer, starting today Monday 15 Aug 2022.

A senior position

As you can see already from Andrew’s title, it’s a senior position. When we opened up the position, we were fully aware that only a handful of candidates can fulfil our requirements of experience on the code base.

MariaDB & K8s: How to replicate MariaDB in K8s

In the previous blog we have seen how to create a statefulset MariaDB application. Also, we learned how replication works in MariaDB in this blog. Now, we will try to create a replicated statefulset application. As good references for creating this blog, I would like to give credit to the Kubernetes documentation as well as an example from Alibaba Cloud.

Configure replication

To replicate a MariaDB application we are going to create a statefulset that will consist of a single init container and one application container.

A mirror manager system to simplify the distribution of MariaDB binaries and packages

The MariaDB Foundation relies on public mirrors to distribute binaries and packages to the world. An overview of the full list can be seen at https://mirmon.mariadb.org. If you would like to volunteer to become a mirror, take a look at https://mariadb.com/kb/en/mirror-sites-for-mariadb/.

Our download page already automatically suggests one of those mirrors for you to download our binaries. Same goes for the repository configuration tool; see https://mariadb.org/download.

The purpose of this blog post is to present you a new system that we have been testing since December 2021 and that we believe is now ready for public adoption.

An intra-pandemic Staff Meeting

Well over two years ago was the last time the MariaDB Foundation staff had met. That was at FOSDEM, in February 2020. Thus, no big surprise, one of our topmost goals for 2022 was to have a staff meeting, face to face. It’s about time to oil the social relationships, to work together without connection issues, to be reminded of how work and life can be in a world where Covid isn’t the top issue.

In other words: we planned a post-pandemic Staff Meeting.

The outcome was different. 

Choosing the venue

But let us start from the beginning, from the original euforia.

We’re hiring: Senior MariaDB Developer / Code Reviewers

Yes, we are hiring! 

And we are hiring for quite an interesting position: As a senior developer of MariaDB Server, with merging community code contributions as a main task.

A demanding job

This is a very demanding job. The MariaDB Server code base is large and complex, and being a good C / C++ developer is only the starting point for being able to contribute to it. You also need to understand databases, and the existing codebase architecture.

A demanding code base

The existing codebase is demanding. Depending on how you look at it, it’s either very efficient (if you know it well), or it has many dependencies (if you don’t).

MariaDB replication using containers

In this blog we are going to demonstrate how to replicate a MariaDB database that runs in a Docker container (let’s call it primary) to one or more MariaDB servers that run in a Docker container (let’s call them replicas) using binary logging, a method that creates binary log files and an index that contains the record of all changes to the database (both data and structure). You can find an overview of how replication works here and you can find how to setup replication here. An example can be found in this GitHub script.