Contributing to MySQL

Welcome to the MySQL Contributor Community

This guide is written to help you get started with your first contributions to MySQL Server source code.

Whether you are just passing by to submit a bug fix or you will be working on a bigger project, we hope that you will find both this guide and the people who wrote it helpful and friendly.

As the project is going through a lot of changes in 2026, this guide may sometimes be out of date. We do our best to update it, but if you find something that is missing or does not feel right, do not hesitate to ask in MySQL Community GitHub Discussions.

Welcome to the MySQL open source project. You can also read a longer welcome note from us to you.

Get Connected

Your first step in getting involved with software development for the MySQL project should be to join the MySQL Community GitHub Discussions relevant to your area of interest.

The MySQL Community GitHub Discussions are the central point for discussions related to MySQL Server software development, including technical topics, proposals, roadmap feedback, and contribution-related questions.

The MySQL Community Slack may also be used for general community discussions and engagement. Please note that Slack, Zoom, LinkedIn, and other helpful media are considered outside the project infrastructure. Whenever you have an interesting discussion elsewhere, and especially when you make project decisions, summarize it in a GitHub discussion thread, wiki page, or relevant issue.

Depending on your intended level of involvement, you may also want to sign up for a centralized Oracle user account. It gives you access to the discussion forums, the MySQL bug database, and other MySQL services.

What You Need to Submit a Contribution

If you intend to submit code contributions to MySQL, you will need:

  1. A GitHub user account, if you do not already have one.
  2. Optionally, an Oracle user account.
  3. A signed Oracle Contribution Agreement.

Sign Up for a GitHub Account

If you do not yet have a GitHub account, go to github.com and create one from the home page.

GitHub home page with the account sign-up form

Sign the Oracle Contribution Agreement

An Oracle Contribution Agreement (OCA) is required in order to accept code contributions. Without a submitted and approved OCA, Oracle cannot integrate your contribution into the MySQL code base or engage in discussions on proposed patches.

If your MySQL contributions are part of your work, you must arrange for your employer to sign the OCA and list you as a person allowed to contribute to MySQL. Corporations should administer contributors through the OCA Administrative Tool to identify all contributors covered under their OCA.

Oracle Contributor Agreement application

Submit the OCA Step by Step

  1. Go to the Oracle Contributor Agreement application.
  2. Log in using your Oracle account.
  3. Decide whether you would like to submit an individual or company OCA.
  4. Fill in all requested details.
  5. Sign using DocuSign and submit.

If you have previously signed or submitted the OCA, formerly the Sun Contributor Agreement, for a different project, you can contribute to the MySQL project under the same SCA or OCA. If you have previously signed the MySQL Contributor License Agreement, you must sign and return the OCA instead. All contributions to the MySQL project require the contributor to sign and return the OCA.

For questions, see the OCA FAQ.

What Contribution Can You Make

We recognize five types of contributions that MySQL users typically make. This project and guide are designed with these activities in mind.

Five contribution types: report a bug, fix a bug, propose or work on a new feature, improve documentation, and test new functionality

It helps to identify the type of contribution that interests you. If your contribution is not in this list, go to MySQL Community GitHub Discussions and tell us what you want to do.

Found a Bug

  • If you have found a bug, you can report it in the bug-tracking system so others can work on fixing it.
  • If you want to work on the bug yourself, indicate that when you file it.

Fix a Bug

  • A great way to start contributing code to MySQL is to fix a bug. We have hundreds of open bugs at any given time, and many are easy to fix. Browse the backlog in the MySQL BugsDB to find an existing bug to work on.
    • Small, self-contained bugs can be a good starting point for new contributors. Try searching for severity S3 or S7.
    • Submit your fix as a pull request against the correct version in the mysql-server repository.
    • Bug fixes generally do not need the design document mentioned in the next section. A bug is something that does not work according to its design specification, so the design already exists and the fix aligns the implementation with the existing design or documentation.

Propose or Work on a New Feature

Improve Documentation

If you want to help improve the documentation, stay tuned. This is a focus area for Q4 2026.

Test and Provide Feedback

If you want to test new features and provide feedback:

  • Go to labs.mysql.com and download the latest Early Access release.
  • For documentation, use the latest Community Edition Reference Manual and MySQL Server Version Reference. Some Early Access features might not yet be in the manual; in that case, look for a blog post or another document, such as the feature's WorkLog.
  • Discuss your findings and share feedback in MySQL Community GitHub Discussions. Other community members are likely testing the same feature.
  • If necessary, file a bug report at bugs.mysql.com. Enter the appropriate version or build identifier, such as 9.7.0-ER, and use the EARLY_RELEASE tag. Sanitize logs, metrics, and benchmarks before sharing them.
  • Your first experiences with an Early Access feature can make a useful blog post. Create a blog if you do not have one, and make sure it is added to Planet MySQL.

Submit a Patch Through GitHub

The MySQL repositories on GitHub are available at https://github.com/mysql.

When you submit a pull request, you will be asked to:

  • Sign an OCA, if you do not already have one.
  • Confirm that the pull request is submitted under the terms of the OCA.

GitHub pull request showing the Oracle Contributor Agreement check

GitHub pull request showing approval and assignment to the MySQL contribution queue

Once you confirm that the contribution is under the terms of the OCA, your contribution will be copied to a bug record in the MySQL bug system and the pull request will be closed.

Testing

The development of tests and test frameworks, and the execution of test suites, are important aspects of high-quality software engineering.

All contributions must include tests that exercise the changes. Tests should use the format of the subsystem for which the contribution is intended. For MySQL Server, consult the MySQL Test Framework documentation. For connectors, see the test suite released with the source. The new tests will be merged into the source tree test repository and framework along with the rest of your submission.

Ask in MySQL Community GitHub Discussions if you are not sure which test format to use.

Over time, we expect to create environments that facilitate testing by community contributors. For now, contributors are expected to ensure an error-free build and the successful completion of all tests, including contributed tests, before submitting a patch.

For more information and resources, see the MySQL Community page.

About the Changes in MySQL Development in 2026

Many changes are happening to the MySQL development process in 2026. The three-phase overview below can help explain each change, why something might be temporarily unavailable, or why this guide might not yet reflect the latest process.

Phase 1 Shifting Focus to MySQL Community Edition

In the first phase, from January through April, we:

  • Ported several features previously exclusive to MySQL Enterprise Edition to the open source Community Edition. Most were released in MySQL 9.7, with some follow-up in version 26.7.
  • Changed to calendar-based YY.M versioning to enable more frequent releases.
  • Organized private and public discussion events where we shared plans to make MySQL development more open.
  • Listened to feedback from the MySQL community and adapted our plans.
  • Planned the future MySQL roadmap with the community.
  • Started releasing monthly Early Access builds of the current MySQL development branch to enable a faster feedback loop.

MySQL Community Roadmap focusing on AI and cloud, developer and DBA experience, extensibility and ecosystem, and performance and observability

The roadmap focuses on four areas:

  • AI and Cloud
  • Developer and DBA Experience
  • Extensibility and Ecosystem
  • Performance and Observability

When you make a new feature proposal, we will try to fit it into one of these four areas.

Phase 2 Opening the mysql-server Repository

This is a transitional phase in which we are ready to receive contributions from the MySQL community through GitHub pull requests for most of the process. We run the MySQL Test Runner tests in the pull request, and the review also takes place there.

After a patch is approved, it is still merged into an internal repository. We are committed to synchronizing with the public MySQL Server repository at least monthly.

We have organized two contributor summits with more than 50 participants. Oracle engineers also participate and present proposals alongside other contributors.

We adopted a Governance Model for MySQL open source development and appointed the first Steering Committee members.

Phase 2 remains focused on MySQL Server development.

Phase 3 Full GitHub-First Development

Phase 3 is targeted for the end of October 2026. At that point, all MySQL open source development will move to the public GitHub project.

This is a major project for MySQL Engineering. The flow of patches through a series of Git repositories and branches will be almost completely reversed. All actively maintained versions of four MySQL variants are affected: Community Edition, Enterprise Edition, HeatWave, and NDB.

Project management will move to GitHub Issues, and continuous integration will move to GitHub Actions.

Releases will continue to be built using Oracle's internal build infrastructure. Separating the release engineering of MySQL Community Edition will happen later.

In Phase 3, we will also expand the open development model to other MySQL projects and to the documentation project.