Contributing
Often, community members make the mistake of thinking that just because they aren't hardcore C/C++ hackers, they can't make valuable contributions to MySQL. This simply isn't the case! MySQL's community members can make invaluable contributions in many other areas - here are some suggestions for what kind of contributions you can make:
Improve the software
Write Quality Bug Reports
And eventually,
- enroll in the Quality Contribution Program.
- contribute to the Community Testing and Benchmarking Program.
- Write a Usability Report on your experience with a product or feature.
Submit a patch to fix a bug
Submit a Feature Patch
This is when you decide to create a new feature or implement one already noted in WorkLog for the MySQL server or tools. The process is mostly identical to the one for fixing a bug, but the CLA will be mandatory and the review process probably involves more developers, to ensure quality feature patches that adhere to the MySQL Internals Coding Guidelines. In any case, make sure to contact the MySQL developers and discuss your proposal via the Internals Mailing List before working on the implementation! There is a list of relatively Easy Tasks for you to hone your skills on.
Suggest a Feature
While paying customers can influence the direction and feature set of the MySQL server and tools, you can too. We're working on a Community Feature-board that will allow everyone to add feature suggestions and vote for other's suggestions, but in the meantime, the best way to make a feature happen is to file a bug report marked as "S4/Feature Request" in our Bugs Database and be vocal about it. Blog about it! Gather support from others for your idea! Find someone who can code it! Be vocal!
Translate or improve the documentation
Let's face it: The MySQL Reference Manual is enormous (roughly 2000 pages). It is not a small undertaking to translate the MySQL manual (and keep that translation up to date) in a foreign language. However, the demand for translated Manual versions is high. If you have the ability to translate (parts of) the MySQL Manual to another language, consider offering your services to update sections of the MySQL Manual translations, or even begin a new language translation. The MySQL Reference Manual isn't the only documentation that you could translate; there are also smaller manuals such as the MySQL Query Browser documentation (about 50 pages). For the complete list, see the MySQL documentation overview page.
The documentation team welcomes any community member interested in serving in this regard. If you're not interested in translating, but rather in contributing to the English documentation, please get in contact with the MySQL documentation team, too!
Contribute to other MySQL Community Projects
Many times, it takes more than just one person to accomplish a goal. The MySQL community has certain projects that take many hours and many minds to complete. Get in touch with those project organizers and volunteer your time. You may find that you learn the most about how MySQL works by volunteering in these projects.
For instance, the newly formed Community Doxygen Documentation Project is a great way to get your feet wet on MySQL internals and a fantastic way to help others in the MySQL community as well as make an impact on the MySQL community edition.
The Community Build Farm is a proposed platform for having community members enlist their spare machines to help build and test the latest snapshots of the MySQL Community Server (and eventually all MySQL tools and connectors). If you've got some spare cycles on a server, consider enlisting into the inventory that machine and adding to the inventory of build farm hosts.
Advocate MySQL
Write a Blog
Do you love using MySQL? Do you like to write and connect with other community members? Then, consider writing a blog with various articles and news about what you are doing with MySQL. Blogs are superbly easy to set up and there are a ton of free and paid services (Blogger.com, blogspot.com, typepad, livejournal, etc) that allow you to quickly set up a new blog and maintain it with little effort.
If you do decide to set up a blog, make sure you get it aggregated into PlanetMySQL so that others can find your blog and read your thoughts by submitting the URL via the Submit a New Feed Form.
Improve the MySQL Forge Wiki
Yeah, this wiki. Got a spare half hour? Find a page with a topic you have a lot of experience in and add some quality content. Are you experienced? Do you know links to good resources? Then consider beefing up the GettingStarted section and articles with your knowledge.
Answer Questions
Got skills? Then help out the beginners among us. Depending on your medium of choice, consider joining and contributing to any of the available resources described on the Getting Help page.
Destroy the FUD
Ever seen that television show on the Discovery Channel called Mythbusters? It's two guys and their team of movie special effects wizards that debunk (and occasionally prove) common myths or urban legends using scientific methodology.
MySQL needs the same kind of folks debunking the variety of myths that still exist about MySQL on the Internet. You will see folks claim that MySQL doesn't support relational integrity, or transactions, or stored procedures, or claim that MySQL is a toy database, etc. We all know this isn't true. If you see this stuff, respond to it with fair, balanced, and firm information about MySQL. Don't let the FUD take over.
Speak about MySQL on Conferences and Events
There are countless events and gatherings of Open Source Developers and Enthusiasts all around the world. Share your knowledge and expertise about MySQL by submitting talk proposals and attend these conferences as a speaker! Giving presentations about Best Practices with MySQL or explaining new features is always welcome.
Write a Letter to a Developer
OK, so this kind of hearkens back to the USO days of WWII... Let's say you really, really appreciate the work of a specific MySQL developer. Maybe they fixed a bug in record time, or they implemented a feature that you really wanted. Send them a letter! Just email the developer at xxxx at mysql dot com. You can always find out who implemented a specific feature or fixed a bug by check the commits mailing list or emailing the internals mailing list.
Recommend the MySQL Newsletter to Your Colleagues
You may be a passionate user of MySQL, but how about your boss, or her boss? Help us promote the business benefits of MySQL in the corporate world. Send your boss to a webinar or to download a business white paper. The more successful MySQL is commercially, the more we can contribute back to open source.
Write About MySQL on Wikipedia
And not just Wikipedia. Any site that other technologists and business folks use to determine whether and what FOSS software can be used on projects and in the enterprise is a good start. Evangelize.
Link to MySQL from Site
Simple and effective. Do you have a website? A blog? Just add a logo and link to the MySQL web site to spread the word.
Create Video and Podcasts
Be funny. Be smart. Be yourself. Talk about your MySQL contributions, interesting forum posts, interview community members, FOSS advocates and business people.
Join or start a local MySQL User Group
Chances are high that you are not the only MySQL user in your area. Join an already existing one or set up a local MySQL User Group yourself to share your knowledge and expertise!
Add to this List
Think of a creative way to contribute? Add it here.
How MySQL Internal Developers Commit Code
As you may know, MySQL uses the BitKeeper source code control system to handle its (very large) code base and various version trees. There are several reasons why BitKeeper is used internally. You should be aware of these reasons, as they should give you an understanding as to why our processes are the way they currently are.
The lack of a free and fully functional BitKeeper client is currently an inhibiting factor to accepting community contributions to the source code directly. Currently, the way to get source code contributed to the MySQL server is to submit a patch to the internals mailing list and get a MySQL developer to review the code and manually apply it to their local repositories for review by their team. In the future, we may have a way to have community members directly push patches to a segregated repository, but this ability currently does not exist.
What Happens When Your Patch Is Approved?
OK, let's explain what happens when your submitted code meets all the review criteria and has been approved by your reviewers. The code is pushed (using the bk push command) into a team tree. For internal developers, team trees correspond to the various internal teams at MySQL -- replication, cluster, maintenance, etc. For community contributions, our build team has set up a new community tree, to which community-contributed patches will be applied.
When a patch is reviewed and pushed to a tree, our internal pushbuild system makes a snapshot of the tree's code and pushes that snapshot out into our internal build farm machines, which attempt to build the snapshot and run the mysql-test scripts against the snapshot. Segregating the code into team trees in this way enables teams to isolate code changes in their own "silo". When pushbuild is able to build the snapshot against the internal build farm successfully, then our build team can merge the team tree code into one of the main trees.
The Community BitKeeper Tree
To faciliate easier and more structured community contributions, we have set up a new BitKeeper tree for the MySQL 5.0 code branch. A Community branch of MySQL 5.1 will be created after 5.1 has reached GA status - until then patches should be made against the general mysql-5.1 tree. Patches should be proposed and discussed with the developers on the internals mailing list. In the future, there may exist ways for community members to directly check in code into the community tree, but for right now, due to the limitations described above, submission of patches via email is the only way to contribute community code.