Decoding the GPL: can this be commercial?

I’ve been doing some research lately in preparation for a new project.  (Yes, another new project.) The goal of this project is ultimately to produce some software that my customers will license from me (monthly rate) and install on their own servers.

On the face of it, a simple task indeed; however, the task grows significantly more complex when I consider the ramifications of using some open source components in the development of my product.

A little back story. I do a lot of work in open source. I love open source. I have written code from scratch and open sourced it; and when I do, I license my open source with the the GNU GPL, version 2.

What the heck does that mean?

The GNU General Public License is a software license designed to protect licensee freedom. There is an important distinction to be made here, and the GNU folks do it quite nicely

The word “free” has two legitimate general meanings; it can refer either to freedom or to price. When we speak of “free software”, we’re talking about freedom, not price. (Think of “free speech”, not “free beer”.) Specifically, it means that a user is free to run the program, change the program, and redistribute the program with or without changes.

The armchair lawyer in me interprets this as follows.  Code licensed under the GPL must always be free – free to be executed, free to be modified, and free to be redistributed (though a distributor may charge money to his customers for the privilege of downloading it – this is relevant for big things like Linux distros).

So, if I acquire some GPL licensed open source software and I modify it, I am legally bound to allow those to whom I distribute the code to exercise the same rights I did under the protection of the license.

But what happens if I don’t modify the source code?

What if instead the open source component were simply that: a component of a larger system?  Surely the code I do write will be dependent on the open source in some way (or more likely, many ways). But if I am not modifying the open source programs, am I obligated to set my own code free?

Consider the specifics of my project. I’m writing a Web application that I want to distribute, to be run on my customer’s own hardware. (Running the software is actually one of the key features of the product, and offers enormous differentiation in this new age of so-called Cloud Computing.)

There will be four open source products comprising the application server stack: Tomcat, Quercus, HSQL, and CodeIgniter.  They don’t all play together out of the box, but getting them to that point is a matter of configuration not customization. So I put them all together and, voila!, I have a portable PHP Web Server with a built-in database and job scheduler.

From CodeIgniter up, the code I write will be 100% my own.  So the question becomes: if my application is dependent upon but not a derivative of my application server stack, does my application need to be released under the terms of the GPL? According to my interpretation of the GPL, the answer is no.

It is fully my intention to document and release the application server stack. It sounds a bit esoteric, I know: “a portable PHP server.” But trust me: it has its usefulness.  Don’t get me wrong, Java is a great language; but developing Web applications in Java or a Java-compiled language like Groovy is still more difficult and more tedious than it should be.  Challenges like writing an auto-updating mechanism and a plug-in framework seem down right easy in PHP, compared to what would likely be a solid month of trail and error engineering in Java.

So what do you think? Must my product be free, or will I be allowed to be the sole profiteer?

Subscribe to Perseverance Trumps Talent