Reposting Mark Schonewille's blog on how the GPL applies to MySQL use cases

In November a Mark Schonewille posted a blog on when you can't and cannot use the GPL version of MySQL together with your closed source application. The post was a result of actually talking to an Oracle lawyer which makes it valuable information. Unfortunately Mark's blog is now offline (it seems he didn't renew his domain registration?)

This is just a repost of the disappeared blog post. (The small print allows me to copy it verbatim.) There is no commentary from myself, except that what Mark wrote is the same I also heard Oracle say a year ago. That Oracle is being consistent on this point is very welcome and deserves to be kept available online.

Update 2011-06-23: Mark comments that his blog is still online, but at a new address: https://qery.us/tl

MySQL Licenses
The Do's and Don'ts of Open Source, or What's All the Fuss About?
copyright ©2010 by
Mark Schonewille and Economy-x-Talk
Nijmegen, the Netherlands
this version: 1.3 (26 Nov. 2010)
1 Introduction
In reply to a question on the LiveCode User Mailing List, I argue that MySQL is one of the best freely available (open-source) databases. A number of subscribers to that mailing list reacted quite strongly, saying that open-source doesn't mean free. Apparently, they use the
word "free" as in "free beer", while I use it as in "free speech". They argue that one needs to pay Oracle Corporation a lot of money if one uses MySQL, despite the fact that MySQL is open-source and freely available.
This was enough reason for me to call Oracle Corporation. After 30 minutes of searching for the right person, I was connected to a friendly Oracle Corporation employee. I asked this employee three questions: 1) do I have to pay Oracle Corporation if I use MySQL at home, 2) do I have to pay Oracle Corporation if I make commercial software that works with MySQl and 3) do my customers have to pay Oracle Corporation if they use MySQL in combination with my commercial software? His answer was a resounding and clear threefold "No!"
One doesn't need to pay Oracle Corporation. It should be clear, though, that MySQL's license, specifically the GNU General Public License (GPL for short) requires it to stay open-source. The GPL poses a few limitations on the use and distribution of MySQL, but creates opportunities at the same time.
In the text below, I explain the implications of the GPL for users of MySQL. In doing so, I will discuss a number of typical examples.
2 Unpaid Without Redistribution
You can freely download the MySQL software from the website. You can install it on your laptop for your own personal use, to test your website with a MySQL server. You can upload those websites to a web hosting server. You don't need to pay Oracle Corporation anything in this situation.
A web hosting company can offer the MySQL database engine as an extra service on their servers. They can freely download the MySQL database engine from the MySQL website and they don't need to pay for it. The customers of the web hosting company also don't need to pay for using MySQL with their websites.
As another example, a printing company wants to manage a large customer database and has MySQL installed on an internal (local) server after downloading it from the MySQL website. The printing company is allowed to use the MySQL database for free without paying Oracle. The same company can ask me to make software for them, which will talk to their MySQL database. That company still doesn't need to pay Oracle Corporation and I myself don't need to pay either.
In a third example, I make commercial software, which needs to have MySQL installed. My customers can use my commercial software, for which they do need to buy a license, in combination with the MySQL database engine, for which they don't need to pay. Because the MySQL engine is not embedded in my commercial software and I don't redistribute MySQL together with my software, I don't need a commercial license for MySQL and neither do my customers.
The next situation is a little tricky. I make commercial software and need a special version of MySQL to make it work. I adjust the MySQL engine and distribute it as open source
software. I offer the source code for free to everyone who uses my adjusted MySQL database engine. I simultaneously distribute my commercial software accompanied by a note that it needs the adjusted
version of MySQL. I make sure that the original GPL applies to my customised version of MySQL. I tell my customers to install my version of MySQL on their servers and to install my software on their client machines. I don't need to pay Oracle Corporation because I distribute the adjusted version of MySQL under the GPL and it is not embedded in my commercial product.
This is about as far as you can stretch the GPL. In the situations described in the above, I don't act as an OEM (Original Equipment Manufacturer), an ISV (Independent Software Vendor) or a VAR (Value Added Reseller) and I, my customers and my (internet) service provider can use MySQL without paying Oracle. (Note that redistributors are not limited to OEM's, VAR's and ISV's only).
3 Redistributing the MySQL Software
The next step would be to adjust the MySQL engine in such a way that it can work with my commercial software product without distributing the code for the adjusted engine. This causes a dependency between the MySQL software and my commercial product and violates the GPL directly. The GPL can no longer apply and I will need to buy a commercial license from Oracle Corporation in this case.
I could download the MySQL engine and embed it into my product, e.g., by letting my installer install MySQL automatically together with my own product. I don't want
to disclose the source code of my entire product. Because I am selling my commercial software product together with the embedded MySQL engine, I have become an ISV and I need to buy a special commercial license to do so.
It should be obvious that I also need to buy a commercial license, if I want to use the MySQL source code libraries, rather than compiled binaries, in the source code of a commercial product without revealing the source code. Selling this commercial product violates the GPL and requires that I pay Oracle for a license.
However... as long as I have no desire to sell the embedded MySQL source code commercially, I can let the GPL license apply. For example, if the aforementioned printing firm asks me to create an in-house tool to manage their database, they might require that the tool includes the MySQL server (either by embedding the source code into mine or by combining the binary with the final product). If I make the tool, include MySQL in it and license it to the customer under the GPL, my customer has no obligation to reveal the source code to anyone, as long as he doesn't redistribute my work. The customer still doesn't need to pay Oracle Corporation for a MySQL license, nor do I.
However (again)... I have to offer my customer the source code as required by the GPL. If the customer doesn't want the source code, I don't need to give it to him. If the customer wants to redistribute the product, he needs to ask me for the source code, because he has to make the same offer to those who receive the redistributed software from my customer as I had to.
The interesting point here is that my customer still can (or rather has to) pay me for my services. I made the software for him and he already agreed to pay me for my efforts. When he
redistributes the software under the GPL, he can offer his own customers a similar service.
4 Then What's All the Fuss About?
It is quite obvious that Oracle Corporation doesn't write on the MySQL website "please don't pay us". However, the goal of MySQL isn't only to generate money. By supporting MySQL, Oracle Corporation makes sure that a large community of software and database developers continues to exist. This community creates new ideas that Oracle Corporation might use —reverse engineer, if you want— in their commercial products. Another reason to support MySQL is that some customers might prefer the commercial Oracle database over the non-commercial MySQL database at some point.
If you decide to pay for a MySQL license, you don't actually pay for the software. The software is open-source after all and can't be sold without offering the source code. If Oracle
Corporation would ask loads of money for the software only, someone would decide to compile the binaries and offer them for free, together with the source code. Anyone could do so.
Also, Oracle Corporation can do exactly the same as you and me: sell a service connected to MySQL. Oracle Corporation provides support to anyone who wants to pay for it. This way, MySQL is a source of revenue for Oracle Corporation.
Finally, there are the licenses for OEM's, VAR's and ISV's. Everyone who wants to sell MySQL software as part of their proprietary software or hardware product needs to buy a commercial license. This is another source of revenue for Oracle Corporation.
For most small businesses, MySQL is the least expensive (or even completely free) and often the most efficient database available, provided that they don't need support from Oracle
Corporation. For example, being a small company with all necessary skills available in-house and not having huge databases that require continuous monitoring, Economy-x-Talk doesn't need to buy support from Oracle Corporation.
5 Conclusion: Redistribution Is Key
The conclusion of this story is twofold. First of all, as long as you don't redistribute the MySQL software, you don't need to worry about licenses, even if you make money by providing database-related services or products that need MySQL to be available. Second, even if you redistribute MySQL under the GPL, you can still make money with it, as long as you offer the source code of your project, which your customer might not even want to have.
To clarify the second conclusion, keep in mind that it is not obligatory to redistribute your compiled software. When you offer the source code, your customers are not obliged to accept the offer. Because you are the one who provides the service of maintaining and improving the software and your customers are actually already paying you for this service, they might not care about the source code. Only if you ever decide to stop providing this service, your customer
might have an interest in the source code.
Oracle Corporation seems to stick not closely, but completely, even literally, to the GPL. All the fuss about Oracle Corporation no longer supporting MySQL and not caring about small
companies who use the MySQL database engine is sheer nonsense. Oracle Corporation continues to support MySQL for now. Even if they decided to terminate their support, anyone could take the MySQL engine and continue to develop and redistribute it under the GPL.
Note:
Please, feel free to comment on this article. Keep in mind, however, that I asked Oracle Corporation for their opinion on this matter and, although not in as many words and not that specific, this was their answer. I would like
to thank Björnke von Gierke and Judy Perry for their comments.
The author owns the software development company Economy-x-Talk and gladly offers his services. Need help with LiveCode, PHP or MySQL? Let me know
The author accepts no responsibility for any consequences of business decisions based on this information. It is the reader's responsibility to read the actual license conditions on Oracle Corporation's MySQL website and consult with Oracle Corporation if in doubt. This article represents the personal opinion of the author, is not endorsed by RunRev Ltd. and has not been authorised by Oracle Corporation.
Integral reprint in physical and electronic form is herewith granted, on the condition that the copyright notice, the version number, the date, the URL's and this sentence are included. If you publish this text on a web site, please embed the URL's in a sensiblel way.

This fits my prior understanding of the GPL stickiness. Redistribution is the key point, as the text claims.
There is still the issue of "the client" vs. "the server". Since I don't actually link with the server, am I bound by its GPL nature? If I used a BSD mysqlclient, does this mean I can redistribute the MySQL server without being affected by the GPL? (I believe Monty is looking for such a solution)

Answering this question is critical, I think, to complete the picture.
Thanks for reprinting. I never saw the original.

You actually manage to touch upon quite a few issues already in such a short question.

1) Redistribution vs internal use. This is a non-controversial commonly understood issue. The GPL provisions can be ignored when use of the software is purely internal. They are only relevant when software is distributed. Yet it happens from time to time that individual MySQL sales representatives try to extort license fees from customers by claiming that it is necessary also for internal use, "commercial use" or otherwise. (I'm aware of a case that happened recently, there was the brouhaha in 2009 on Kurt von Finck's blog, and I'm aware of cases that happened during the MySQL AB era.) These individuals were however acting against the official position of their employer.

2) The MySQL server is a separate process and your application connects to it over a socket - for all we know they can even be on separate servers. The GPL doesn't "jump" over the connection to your application. A comparison that has been made in this context - by very prominent lawyers in the field of interpreting the GPL - was how user space applications running on top of the Linux kernel are not bound by the GPL (they communicate via system calls - no linking there either).

(We ignore here the occasional use of libmysqld, which is a separate but quite rare issue.)

3) So what about the client libraries, a.k.a connectors?

What we learned as Oracle's position via the EU process was that using the GPL version of MySQL is perfectly fine "in most cases".See §589 of the public EU decision at http://ec.europa.eu/competition/mergers/cases/decisions/m5529_20100121_… Since "in most cases" (and that is a literal quote) definitively includes the use case of the application using a client library to connect to the server, one starts wondering whether this too is ok.

Here Eben Moglen was later kind enough to confirm to Monty that yes, when using a standard database API like JDBC, ODBC, ADO.NET, P(HP)DO, Perl DBI, etc... your application is not in any way a derived work of MySQL (not even the client library) so the GPL status of one doesn't affect the license of the other.

The special case here is the MySQL C client library, which is MySQL specific and doesn't conform to any standard. (I believe the standard API for C would have to be ODBC, which is another client library.) Monty is looking to provide a more liberally licensed C client library due to this - in fact on the askmonty.org site they already provide the LGPL licensed MySQL 3.23 client library. Similarly Drizzle wrote from scratch a BSD licensed library libdrizzle, which you could use. (Both the old MySQL library and libdrizzle lack some functionality compared to the current official MySQL C client.)

4) Distributing together vs separately

Schonewille actually doesn't cover one use case which I'll add here since you ask for completeness.

In his examples you always end up distributing your application separately of MySQL. Is it also ok if they are distributed together, such as on the same installation CD, preinstalled on a server, or perhaps as a hardware appliance? (Say a exaMySQL Database Machine, or your home router, or in-car infotainment system.)

In the situation where I was able to listen in on this discussion, Oracle did cover also this use case and declared it ok.

This question is often debated unrelated to MySQL too. I use to point to the following language in the GPLv2: "In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License."

Using my engineer's logic that seems to say that if an application is an independent work from MySQL when distributed separately, it remains an independent work even if stored on the same CD or hard disk. (Conversely it then follows that if something *is* a derived work of MySQL, it is still a derived work even if you distribute it separately.)

For instance a Linux distribution CD/DVD comes with many applications that are able to connect to a MySQL server, which is also present on the same CD/DVD. (PHP et al are good examples.) But all of these applications are not GPLv2 licensed and they don't magically become that just because they happen to use MySQL as a database.

Dear Ingo,

Your recount is rather accurate -- at least at a cursory reading -- and I don't want to drill into details of points whose interpretation is anyway highly controversial and open to debate, and where your voice counts exactly as mine (and where we seem to largerly agree, at any rate and without wearing any official hat).

Just I would avoid using "commercial" as a synonym of "paid for the right to use a copy". Commonly "proprietary" it is used instead and more appropriately, because all Free Software (AKA Open Source) can be used for commercial purposes, as you quite rightly argue here and there. "Proprietary" is also not perfect, but it better renders the idea that the software is treated as a property and not as a common.

All the best

Carlo

Your recount is rather accurate -- at least at a cursory reading -- and I don't want to drill into details of points whose interpretation is anyway highly controversial and open to debate, and where your voice counts exactly as mine (and where we seem to largerly agree, at any rate and without wearing any official hat).

Although the above is probably quite complete, I'm all the time a bit constrained by the fact that for some of the examples I cannot refer to a source document since it is confidential. From that point of view Mark's blog was helpful since he got info from Oracle directly without any strings attached. And in this light it is nice of you as a "very prominent lawyer in the field of interpreting the GPL" to chime in here directly, as you are of course free to state your opinion at any time, so thanks!

None of the above is supposed to be my opinion (well, perhaps the last three paragraphs of the previous comment were). So it is not about me agreeing or not, rather I tried to give an accurate recollection of what I've heard Oracle saying, supported by yourself and Eben Moglen. Most of it is already covered by Mark's blog which is just a copy, not written by me. But again, it is nice if you feel this is a more or less accurate recollection of what you've also heard to be Oracle's position.

Just I would avoid using "commercial" as a synonym of "paid for the right to use a copy". Commonly "proprietary" it is used instead and more appropriately, because all Free Software (AKA Open Source) can be used for commercial purposes, as you quite rightly argue here and there. "Proprietary" is also not perfect, but it better renders the idea that the software is treated as a property and not as a common.

I think most uses of the word "commercial" are from the original text of Mark. I use it once in the follow up comment above. However, in that case it is used correctly: it has happened that a MySQL sales manager claimed that someone needed to pay for a license if MySQL was used for "commercial use", such as a company website. (Ie not distributed and sold anywhere, just commercial in nature.)

I think Mark's use of it is also relevant, since for many people that is still the question they start with. The assumption is that the dividing line is between for-pay software and freeware. So his chosen examples are useful for the target audience. Given the way the answers fold out, it is then never explicitly explained that the commercial nature of anyones application is quite irrelevant!

Chua Wen Ching (not verified)

Sat, 2011-05-07 21:02

Thanks. So basically if I host a professional looking wordpress site for a company (which of course wordpress will use mysql), both myself and the customer don't need to pay mysql license right :) That's sounds like that :) just to confirm though :)

Yes, this clearly follows from the above. However, note that Wordpress itself is GPL too. Depending on what you mean by "hosting", and if you ever distributed copies of your Wordpress site to the customer, etc... you must comply with the GPL requirements due to Wordpress. (For instance, if you developed a custom theme or custom functionality.) Also in that case it is not about paying a license fee, it is about the GPL requirements about distributing source code under certain rights.

Hi,

I just noticed this repost. The original article didn't disappear, but the domain changed. You can find the original post here http://qery.us/tl

The comments are interesting. If I ever find the time, I'd gladly re-write the article taking the comments into account.

Kind regards,

Mark

Add new comment

The content of this field is kept private and will not be shown publicly. Cookie & Privacy Policy
  • No HTML tags allowed.
  • External and mailto links in content links have an icon.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Each email address will be obfuscated in a human readable fashion or, if JavaScript is enabled, replaced with a spam resistent clickable link. Email addresses will get the default web form unless specified. If replacement text (a persons name) is required a webform is also required. Separate each part with the "|" pipe symbol. Replace spaces in names with "_".
About the bookAbout this siteAcademicAccordAmazonBeginnersBooksBuildBotBusiness modelsbzrCassandraCloudcloud computingclsCommunitycommunityleadershipsummitConsistencycoodiaryCopyrightCreative CommonscssDatabasesdataminingDatastaxDevOpsDistributed ConsensusDrizzleDrupalEconomyelectronEthicsEurovisionFacebookFrosconFunnyGaleraGISgithubGnomeGovernanceHandlerSocketHigh AvailabilityimpressionistimpressjsInkscapeInternetJavaScriptjsonKDEKubuntuLicensingLinuxMaidanMaker cultureMariaDBmarkdownMEAN stackMepSQLMicrosoftMobileMongoDBMontyProgramMusicMySQLMySQL ClusterNerdsNodeNoSQLodbaOpen ContentOpen SourceOpenSQLCampOracleOSConPAMPPatentsPerconaperformancePersonalPhilosophyPHPPiratesPlanetDrupalPoliticsPostgreSQLPresalespresentationsPress releasesProgrammingRed HatReplicationSeveralninesSillySkySQLSolonStartupsSunSybaseSymbiansysbenchtalksTechnicalTechnologyThe making ofTransactionsTungstenTwitterUbuntuvolcanoWeb2.0WikipediaWork from HomexmlYouTube

Search

Recent blog posts

Recent comments