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:
- A GitHub user account, if you do not already have one.
- Optionally, an Oracle user account.
- 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.

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.

Submit the OCA Step by Step
- Go to the Oracle Contributor Agreement application.
- Log in using your Oracle account.
- Decide whether you would like to submit an individual or company OCA.
- Fill in all requested details.
- 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.

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
- Use MySQL Community GitHub Discussions to share ideas with the community.
- To submit a new feature request or feature proposal, use MySQL Server GitHub Issues.
- Select Feature request if you do not plan to write the code for the feature.
- Select Feature contribution if you have written or intend to write the code.
- After submitting an issue that describes your feature at a high level, follow Proposal Design and Implementation Using a Single Pull Request for details about how we design, discuss, and write new features.
- See the MySQL source code documentation. You do not need to read all of it immediately, but you should become familiar with the MySQL Coding Guidelines and the chapter on testing.
- The CONTRIBUTING.md file in the MySQL Server repository provides the commands to run for building, linting, formatting, and testing your patch.
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_RELEASEtag. 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.


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.

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.