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
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.
That said, we have also been approached by potential providers of contributions that would take a more general approach. The itch of an individual contributor could be the need to display a skill set and capability of value creation on the job market. Another category would be a benefactor of MariaDB Server who wants to give something back to the MariaDB Server community, such as a cloud provider.
Regardless of which category you belong to, Jira is a good place to look. Jira is the task management system where we keep records of wishes by the community and ideas by developers. Feature requests are best entered directly by the community members, and they are on public display for all the community to see and vote on. Look at the list of Jira entries with the highest number of watches, or votes, and you will see a great contribution wish list.
In addition to feature requests, some bugs belong on the wish list. They are also managed publicly in Jira. Bugs can occur in strange combinations of releases, platforms, configurations, use cases, and star alignments. The star alignments refer to cases which no doubt exist but are hard to reproduce. If your bug fix extends the number of use cases, or if it makes a generic bug reproducible, it’s on our wish list. Some of the bugs occur more rarely, but we wish for all bugs to be fixed. And again, the Watchers and Votes ranking on Jira gives a good aggregated view of what bug fixes are most needed.
Our wishes go beyond feature requests and bugs. Sometimes, the critical resource is reviews. It has occurred that Pull Requests – potentially ready-to-go contributions – have to wait quite a bit before they get evaluated and find their way into the code. The situation has improved since our template has been asking the contributor to provide the answers to the basic questions of “what does your code attempt to do?”, meaning “which problem is the code supposed to solve?”, and now the reviews are easier to organise. Another improvement is us hiring Andrew Hutchings as Chief Contribution Officer. Senior developers in the community can still contribute by doing a first level review of outstanding pull requests, keeping the ball moving and paving the way for the reviewers that are experts in the particular area of code.
By the way, should you do a review: Please take a look at the 2014 blog entry The Gentle Art of Patch Review by Sage Sharp. Pointed out by our Chair Eric Herman, now a favourite for many of us.
Beyond ensuring the task started is within the skill level and available time of the contributor, let us provide some overall principles. Generally acceptable contributions:
- implement SQL standard features
- implement extensions found in other database products, except where incompatible with existing implementation in the server
- ensure backwards compatibility
- improve cloud compatibility
- integrate with service managers of systemd and Windows
- take advantage of newer and better kernel interfaces
- clarify error messages
- improve performance
- increase cross platform support on different OSes and hardware
Still unclear how to interpret our wishes? A key wish is for you to set our expectations when it comes to your contributions. This goes also for the case that you suggest a feature of your own. We aren’t going to over-formalise the process, but we do encourage you to be in contact with either Andrew Hutchings (our Chief Contribution Officer), Daniel Black (our Chief Innovation Officer) or Vicentiu Ciorbaru (our Chief Development Officer) before committing lots of energy to a project. Talk to any of these Three Musketeers! They will give you the guidance, and ensure that any commitment on their side is understood by the other two Musketeers.
Does all of this sound too abstract? Here’s a few wishes for you:
- MDEV-28849 I_S tables don’t tell that the stored function is AGGREGATE
- MDEV-28672 Several server options / settings still not visible from SQL level
- MDEV-5813 Geometry enhancements (caveat: ambitious)
- MDEV-18188 Maintain persistent COUNT(*) in InnoDB (Caveat: look at quite specific comments at the end of pr #1411)
- MDEV-11829 Please add support for datetime with time zone literals (ISO6801)
- MDEV-15854 Implement uuid_to_bin, bin_to_uuid and is_uuid functions (caveat: needs communication with and approval by Sergei Golubchik, now that there is a UUID type; two PRs have already been rejected)
- MDEV-10658 Support TLS SNI in MariaDB
- Anything from the Jira list of beginner-friendly issues ordered by number of votes
Finally, not all contributions are code contributions. You can contribute through
- filing a bug report,
- performance testing,
- documentation (Knowledge base edits),
- blog entries,
- Stack Overflow answers,
- other ways of helping others when they are stuck (Zulip, IRC, Slack, etc.).
But that is outside the scope of this blog entry. We will definitely return to the other wish lists.
We hope for our wishes to come true, on behalf of the MariaDB Server user community.