Sunday, 23 July 2006

How to Now Contribute Code to MySQL

While most of the code in MySQL is written by employees of MySQL, we are open to contributions by companies and individual contributors. In an attempt to make it easier to contribute to MySQL, we have created the MySQL Code Contribution Program.

MySQL Forge is a collection of projects based on MySQL. The Code Contribution Program is one step beyond that: It's for code that goes directly into the MySQL-owned and managed code base.

As such, MySQL has accepted contributions before. Through the Contributor License Agreement (now released as beta), we have streamlined the legal aspect of the process.

Beside the legal side of the contributor program, there is the development aspect. Contributors may need help and guidance from MySQL developers. For both the legal and development aspect, the MySQL Community Team is the proxy. Potential contributors can reach us through the mailing list, where you can approach us with specific questions.

Here is the beginning of a simple FAQ we are starting:

What is the purpose of the Code Contribution Program for MySQL AB?

From our own perspective, the purpose of the "MySQL Code Contribution Program" is

  1. to drive more fixes by the community to simple bugs, i.e. fix more bugs quicker

  2. to get more contributions in the form of new features, i.e. offer more features for our users

  3. to breed a larger recruitment base of devs familiar with MySQL both for our customers and ourselves

What are the benefits to the developer contributing to MySQL?

I believe that people contributing to MySQL are somehow scratching their own itch. Likely reasons why developers contribute to MySQL are

  1. to avoid having to maintain their patch, which they wrote just in order to fix their own problem with MySQL

  2. to increase their market value for recruitments, not just by MySQL AB but by any company

  3. to get feedback and users for their projects, by using MySQL as the wide-spread fundament of their (academic, research) project

We acknowledge that especially Category 1 people (and companies) consider all admin work to be bureaucracy. This is why we keep the paperwork and legalese to a minimum. But we cannot go below the minimum. Our paying customers are sensitive to our IP rights. They are entitled to know for sure that we as their suppliers own what we sell them.

What are the terms of the CLA?

The MySQL Contributor License Agreement (CLA) means, in simple terms, that:

  • The developer assigns and transfers the copyright of the contribution to MySQL. In return, the developer receives back a broad license to re-use and distribute the contribution.

  • The developer grants a patent license to MySQL and its users, in the event that the developer owns a patent that covers the contribution.

  • The developer represents that he or she coded and owns the contribution, and is legally entitled to grant the assignment and license.

  • The developer may provide support for free, for a fee, or not at all.
  • MySQL has no obligation to accept or use the contribution.

If MySQL accepts and maintains the contribution, and it is deemed of material value to the Project, the developer's benefit is that we relieve the developer of the burden of maintaining the contribution and will provide the developer attribution in the GA release notes (unless the developer asks not to be mentioned). The developer may also select two of the following items: a MySQL Press book, a MySQL shirt, a US $100 rebate to a conference or training class, or a US $100 donation to the Free Software Foundation (FSF) by MySQL AB.

Why does MySQL AB require copyright transfer? Red Hat does not!

The GNU Project does.

MySQL is the owner and copyright holder of the entire MySQL product, whereas Linux does not have one single entity as a copyright holder.
This makes the MySQL Dual Licensing model possible. The MySQL users benefit from this in the form of further product development
financed by MySQL (with currently over 80 developers on MySQL's payroll). While MySQL has developed most of the MySQL database itself, and continues to do so, MySQL also wants to simplify the processes for contributors to MySQL.

Caveat for Europe

We received some comments on legal issues related to some European jurisdictions (notably Germany), which might still influence our timetable. This means that the CLA is still in Beta form, and may receive some updates to improve its global reach.