I am researching asynchronous event-driven database access as part of my graduate school studies at Brigham Young University. I’m looking into implementing the MySQL protocol using Apache MINA to conduct some tests and measure performance/scalability differences compared to the JDBC driver provided my MySQL AB.

I got digging into the MySQL documentation and found their Internals Manual. The manual itself is well written and appears to cover everything I would need. However, I’m taking issue with the Licensing Notice. This notice basically says that the MySQL Protocol is part of the MySQL database so any implementation of the MySQL Protocol must be licensed under the GNU General Public License (GPL). Is this at all enforceable? I don’t see how it could be.

The GPL relies on copyright law. I cannot copy a copyrighted work without the permission of the author. An author may license their work under the GPL which means I may copy that work as long as I follow the provision set forth in the GPL. I don’t have to explicitly agree to the GPL because the GPL grants my rights I wouldn’t otherwise have. Section 5 of the GPL clearly states:

You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

So how then can MySQL force me license a protocol implementation under the GPL? Reverse engineering the protocol does not constitute a derivate work. If that were the case, we wouldn’t have projects like Samba. Is implementing something specified in a manual considered a derivative work?

There is an article at Open For Business that addresses the MySQL License Question. This article is well written and brings up some very interesting points.

I am of the opinion that implementing the MySQL protocol does not require licensing the code under the GPL. I will bring the question up to the legal people at the Apache Software Foundation and post what they say here.