Dual-licensing is a popular Open Source business model, especially using the (very restrictive) Gnu General Public License (GPL). Popular opinion, as reflected (for example) in the comments on this blog posting, says that it’s either forbidden or highly questionable to do things like linking non-GPL things with GPL things, so enterprises will have to buy a dual-licensed version (instead of using the free GPL version of the software) to take advantage of closed-source enterprise components.
The case of MariaDB
I wonder if popular opinion might be wrong.
Consider the GPL software package mentioned in the blog posting linked above: MariaDB, a fork of the Open Source MySQL database manager. Because the maintainers of MariaDB don’t own most of the copyrights on the code, they cannot dual-license it; as a result, some people believe that the GPL forbids using closed-source MySQL storage engines such as ScaleDB with MariaDB.
Distribution, not use
Unlike closed-source licenses, however, the GPL exists primarily to control how people distribute software packages, not how people use them. Section 0 of the GPL makes this fairly clear:
Section 0: “Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted…”
The non-normative FAQ for this version of the GPL goes even further, allowing private modification of a package outside the scope of the GPL as well:
A company is running a modified version of a GPL’ed program on a web site. Does the GPL say they must release their modified sources?
The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources…
Non-GPL plugins and personal use
So, with that in mind, let’s start with the personal-use case. I have an unmodified GPL-licensed copy of MariaDB and a properly-licensed copy of ScaleDB. I do not need to modify anything in the MariaDB distribution to use ScaleDB — I just have to drop ScaleDB into the appropriate directory and edit my personal config files to tell MariaDB to use it. Since I’m just running MariaDB, not modifying it, am I even bound to accept the terms of the GPL? It doesn’t look like I am.
Non-GPL plugins and aggregation
Now, let’s take this a step further. What if distribute a DVD-ROM that happens to have both MariaDB and ScaleDB on it? I comply with the GPL for MariaDB (e.g. include a copy of the GPL and the MariaDB source code), and have permission from the copyright holder to include ScaleDB. There are no modifications to MariaDB at all, even in the configuation files: just two separate packages that happen to be stored in different directories on the same DVD-ROM. Am I in violation of the GPL now?
And what if I decide to add a script to automate configuring MariaDB to use ScaleDB as a third, independent software package? The script is an entirely separate piece of software, and includes no GPL code at all. I still don’t modify MariaDB or bundle ScaleDB with it in the same package, but I provide a tool that someone can use to do so (they could also use the tool if they obtained both packages from other sources). Now is there a GPL violation?
So I end up with a redistributable DVD-ROM that allows a user to install a GPL program with a closed-source, plug-in storage engine for private use, and I don’t think I’ve violated the GPL or even wandered into any grey areas. What does everyone else think?