by J.A. (Zak) Greant, MySQL AB Community Advocate
Introduction
This article endeavors to provide advice that is responsible, practical, conservative, and true. However, please keep in mind that it is not a substitute for professional legal advice. In matters of software licensing, it is prudent to seek the advice of a lawyer who specializes in software licensing and intellectual property law, and who understands the issues as they pertain to Free Software and Open Source.
Audience
This article is written for the professional PHP programmer, but should also be of benefit to any reader with an interest in the topics discussed. The answers given tend to focus most strongly on the needs of the independent software vendor who develops and distributes software made with PHP and MySQL.
Q #0: How does MySQL AB make money?A: MySQL AB sells licenses and various services (like certification, support and training) for our software.
Discussion
This is the most common question that I am asked about MySQL at PHP conferences. MySQL AB makes money in much the same way that many other software companies make money: we sell licenses to, and services for, our software. At the same time, we also license our software free of charge under the terms of a license that allows others to do almost anything that they want with the software. They may study, disassemble, sell, re-engineer, or even re-engineer and sell the software, as long as they always share it (and works based on it) under the terms that we licensed it to them.
The combination of the two different licenses is called dual licensing.
Q #1: What is dual licensing?A: Dual licensing allows the user of a program to choose between two different sets of terms and conditions for their use of the software.
Discussion
When software is dual licensed, it means that one of two different sets of licensing terms may be chosen for each particular copy of the product.
MySQL AB allows users to choose between the GNU General Public License (GPL) and a standard proprietary license.
The proprietary license is fairly standard for the proprietary software industry and is similar to what is commonly used by other commercial software vendors like Hewlett-Packard or Novell. It can briefly be summed up by stating that, in exchange for a fee, MySQL AB allows you to run a copy of the licensed MySQL software and provides some additional assurances of importance to business users such as certain indemnities related to intellectual property. As with most proprietary licenses, few other rights are granted.
The GPL is a Free/Libre and Open Source Software (FLOSS) license that grants licensees many rights to the software under the condition that, if they choose to share the software, or software built with GPL-licensed software, they share it under the same liberal terms.
At MySQL AB, we often say this very simply as: If you are free, we are free. If you are proprietary, we are commercial.
Q #2: When should I use MySQL under the GPL?A: Whenever you want to study, extend, and freely share MySQL and software based on MySQL.
Discussion
The GPL grants licensees a broad set of rights, including the right to copy the software, freedom to create modified copies, and permission to distribute original and modified copies of the software to others. The rights are granted under the following condition: copies of GPL licensed software (or software that is based on the GPL-licensed software) can only be distributed under the terms and conditions of the GPL. Additionally, the GPL requires that the source code of the program is included with any executables or that it be made freely available for only the cost of distribution.
Some examples of legal use of GPL-licensed software include:
- Studying the source code of the software in a software engineering class.
- Using the software as a component of other GPL (or certain other FLOSS licensed) programs.
- Extending the software and distributing the extended version under the terms of the GPL. You can even sell your extended version for a fee. See http://www.fsf.org/philosophy/selling.html for details.
- Proprietary software vendors can use the GPL-licensed version of MySQL to provide their developers with no-cost copies of MySQL for use in the development process. Of course, when the software is distributed, they should use the proprietary version of MySQL.
- Reviewing the source code to understand the implementation of a feature within MySQL and then reimplementing the feature without copying the code reviewed. The GPL allows software developers to learn from the work of others and freely borrow the ideas used, but not the actual code.
- Offering services provided via GPL-licensed software, without offering the software under the terms and conditions of the GPL. This is acceptable because the GPL places no restrictions on the use of GPL-licensed software, only on the distribution of GPL-licensed software or software based on GPL-licensed software. Of course, as stated above, MySQL AB always recommends that any proprietary use of MySQL be done under a proprietary license.
Some examples of incorrect use of GPL-licensed software include:
- Giving GPL-licensed code to others under another license.
- Copying copyrightable portions of GPL-licensed code into a non-GPL product.
- Creating software based on GPL-licensed software and then selling this software under a license other than the GPL.
Note 1:
Note that not all code is copyrightable. If there is only one obvious way to do something or if the use of the code falls under fair use, then copyright may not apply. See a lawyer for more details. | |
Visit
http://www.fsf.org/licenses/licenses.html#GPL for comprehensive and accurate information on the GPL.
Q #3: When should I buy a proprietary license for MySQL?A: Whenever you distribute proprietary software that uses, includes or requires MySQL.
Discussion
Proprietary software, for the purposes of this discussion, is software that is not licensed under a Free Software or Open Source license. Commercial software is simply software that is sold - regardless if it is proprietary or not.
In some cases, proprietary software and GPL licensed software are not incompatible. The crux of the issue revolves around a key concept of copyright law known as derivative work. If a derivative work is created with GPL licensed software, that work can only be distributed under a GPL license.
The U.S. Copyright Act, at 17 U.S.C. §101, defines a derivative work as:
... a work based upon one or more pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation or any other form in which a work may be recast, transformed or adapted. A work consisting of editorial revisions, annotations, elaborations or other modifications which, as a whole, represent an original work of authorship, is a derivative workAuthoritatively determining when a work is or is not a derivative of another work can only be done by a court of law. Of course, legal experts with experience in these matters and an understanding of national copyright laws can make educated guesses about when a work is or is not a derivative work.
MySQL AB always recommends that proprietary software use the proprietary version of MySQL. With this strategy of always pairing valid proprietary licensing with valid proprietary licensing, the obligations and rights of the licensor and the licensee are quite clear.
If you wish to use MySQL as a part of your software, but do not wish to distribute the software under the GPL (or one of another set of FLOSS licenses - see Q #4 for details) or purchase a proprietary license from MySQL, then we invite you to discuss further with us and/or to consult a lawyer who is an expert in proprietary and FLOSS software licensing.
Q #4: When do I need to purchase a proprietary license for PHP programs built with MySQL?A: Whenever you distribute proprietary software that uses, includes or requires MySQL.
Discussion
As in every other case, if your software is not FLOSS licensed, MySQL AB recommends the use of the proprietary version of MySQL.
However, it would be unethical to not disclose the facts. It is not clear that the combination of a proprietary PHP script, GPL-licensed MySQL software and PHP would violate the GPL.
When the PHP engine executes a PHP script, the license of the PHP script is irrelevant. Nothing in the licensing of the PHP engine makes any requirements on the licensing of the PHP scripts that it runs. Even if the PHP engine were licensed under the GPL, this fact would still be true.
When a PHP script uses MySQL, it only does so via PHP's interface to MySQL. A developer can create a script that uses MySQL, but never have to distribute any MySQL source code. Asserting that this is a derivative work might be difficult.
While MySQL AB recommends that proprietary software use the proprietarily licensed version of MySQL, the licensing fees may make this difficult for less expansive proprietary applications. If you wish to purchase licensing, but find the licensing fees prohibitive, please write to
community@mysql.com. We may be able to help arrange terms that are more suited to your needs.
Note: Readers learned in the ways of FLOSS licensing know that the distribution of derivative works formed from GPL-licensed software and non-GPL-licensed software is not legal in most cases. To avoid this problem and to allow for greater compatibility between GPL-licensed software and non-GPL FLOSS software, MySQL AB has issued a special exception to the terms and conditions of the GPL licensing for the MySQL client libraries. The full details of the exception can be found at
http://www.mysql.com/products/licensing/foss-exception.html.
Q #5: Is MySQL support included in PHP 5?A: Yes. There are two extensions for supporting MySQL in PHP 5.
Discussion
In PHP 5, there are two MySQL extensions available: the old MySQL extension for MySQL versions up to 4.1 and the new, improved MySQL extension that supports all versions of MySQL (including MySQL 4.1 and greater).
There is a difference in how MySQL support is included with PHP 5 compared to PHP4. In the past, a public domain MySQL client library was bundled with PHP. This was done to make it easier for less experienced users to use MySQL with PHP.
However, a combination of problems surrounding how the MySQL client was included with PHP led to the unbundling of the MySQL client library. The major factors were:
- The client library was not kept up-to-date and did not work with all versions of MySQL
- Use of the bundled client library prevented some other programs that were used with PHP and dependent on MySQL from working
Also, while the change of license for the MySQL client library did not force the removal of the separately licensed public domain MySQL client from PHP, it is very likely that the license change is what made the PHP group examine the problems with embedding the client library in PHP.
Currently, to use MySQL with PHP, both PHP and MySQL must be installed and support for MySQL must be enabled when building PHP.
Q #6: Why did MySQL AB change the license of the MySQL client libraries to the GPL from the LGPL?A: To better support our dual-licensing model.
Discussion
MySQL AB's guiding business principle is that of fair exchange or Quid Pro Quo (something for something). We reflect this principle in our business model by giving our software away for FLOSS use and by selling it for proprietary use.
The LGPL licensing for the MySQL client made it easy for organizations to distribute proprietary software without contributing to the FLOSS community or paying money to MySQL AB to fund further development. In short, they were not participating in a fair exchange.
MySQL AB relies on having a healthy and fair exchange with the community of MySQL users. When it comes to software licensing, we interact with the community in the same way that they choose to interact with others. When dealing with proprietary software, we sell licenses for MySQL. When dealing with FLOSS software, we give away GPL licenses for MySQL.
This simple approach lets us have a viable business model that meets the needs of many different types of users.
For more information on this model, read MySQL AB CEO M?en Mickos's excellent article on dual-licensing, fair exchange and Quid Pro Quo at the rather unwieldy URL of:
http://mysql.com/newsletter/2003-11/a0000000220.html.
Closing Notes
Thanks for reading! I hope that this article has made the MySQL licensing easier to understand and has helped to clear up a few related issues.
If you want to discuss the article or issues in more detail, please hit our forums and submit your article request (link at end of article).
Glossary
- PHP Magazine Forums: http://forum.php-mag.net/
- FLOSS: An acronym for Free/Libre and Open Source Software.
- Free/Libre and Open Source Software: A term generally used to refer to software that qualifies as Free Software (under the Free Software Foundation's Free Software Guidelines) and Open Source (by the Open Source Initiative's Open Source Definition). For a more complete definition and discussion, please visit the Wikipedia entry on FLOSS: http://en.wikipedia.org/wiki/FLOSS.
- Free Software: Free software is software than can be freely studied, modified and shared. For a more complete definition, see the Free Software Definition: http://www.gnu.org/philosophy/free-sw.html.
- GNU General Public License: A FLOSS license designed to help encourage the spread of Free Software and ensure that Free Software remains Free Software. See http://www.gnu.org/licenses/licenses.html - GPL.
- GNU Lesser General Public License: A FLOSS license designed to help ensure that Free Software remains Free Software while still being compatible with proprietary software. See http://www.gnu.org/licenses/licenses.html - LGPL.
- GPL: An acronym for the GNU General Public License.
- LGPL: An acronym for the GNU Lesser General Public License.
- Licensee: The party who is given a license.
- Licensor: The party who grants a license.
- MySQL AB: The Swedish company that develops and markets a family of high performance, affordable database servers and tools, including MySQL, MaxDB and MySQL Cluster. MySQL AB owns all of the MySQL core product source code. This fact allows us to license the MySQL software under multiple licenses. The AB at the end of the name stands for Aktiebolag, the Swedish term for an incorporated company.
- Open Source: Code that is licensed under a license that complies with the Open Source Initiative's (http://opensource.org/) Open Source Definition: http://www.opensource.org/docs/definition.php.
- Proprietary: For purposes of this discussion, software that is not Free Software or Open Source software.