Open Source, the GPL, and copyright
Most of the best and fastest-growing tools for the web, such as WordPress, Drupal, and Joomla, are licensed under the GPL open source license. These tools, because they allow developers to patch them and extend on them as needed, are generally quicker to respond to new developments in the web, better-secured, and easier to build on.
What is the GPL licence?
The GPL, or GNU General Public License, is the most widely used copyleft or free software license. Many popular open-source CMS frameworks—including my tool of choice, WordPress—are maintained and licensed under the GPL. Essentially, what that means is that these software platforms, as well as anything built on top of them, is free and open to the end-users, and those terms cannot be changed. So that a platform that costs nothing to use today will always be free (as in beer). And a platform that allows its end users to do whatever they want with it, to modify it in any way they need to and use it for any purpose they want, will always be free (as in speech).
The benefits of this license are many: because the source code is open and viewable to anyone who wishes to inspect it, the chances of any malware, security vulnerabilities, or bugs making it through to the final product are much slimmer. Literally thousands of people have contributed code to the WordPress project to improve it, and each piece of code in the project has been publically discussed, tested, and approved before being committed to the platform core.
A second feature that makes this licence attractive is that it is viral—anything built on top of a GPL-licensed piece of software, which is distributed publicly, must also follow the terms of the GPL. This gives developers like myself the confidence to release our work to the public, knowing that anyone can fix bugs in it, tweak it, or improve it, but that the end result will still be free and available to us to use. Tens of thousands of developers have released plugins, themes, snippets of code which extend WordPress and add additional features to it, and these make the platform inordinately more usable than dealing with a closed software stack and having to buy or write from scratch each individual component.
Why is this important?
Every website has certain components in common. A very basic example: every site that needs to be modified by the end user includes a database layer, and a core component to access the database. Rewriting these components for every project would make the project unwieldy, cumbersome, and expensive. In the closed-source model, developers would abstract this layer and write it themselves, using it for all of their projects and keeping it their own secret. This is an improvement, but then the earlier projects can’t make use of later improvements to the source. And when new tools become available, upgrading is not a simple process.
Does this mean I can’t copyright the website you build for me?
No. The GPL makes a distinction between work-for-hire and distribution, which is a very important point. When work is performed for hire (i.e. you hire me based on a flat quote or an hourly rate to build you a website), the end product is your copyright to do with as you please, once the terms of the agreement (i.e. payment) are satisfied. You are under no obligation to share the source code of your copyrighted website. The license was carefully written to protect the end user. If the website includes secure information—for example, if I build an intermediate layer to communicate between your public-facing website and your private database for order processing—that information remains your property.
The “Liberty or Death” clause of the GPL is triggered by public distribution, not work-for-hire. If I build a framework that expands on WordPress, and I want to hold the copyright to it and charge you to use it, I am legally obligated to make the source code of that framework publicly available. This allows other developers the chance to critique my work, find and fix problems, and benefit from any solutions I’ve developed.
Will you open-source work that I paid you to do?
Doesn’t that just mean that other people can get the benefit of all that work for free? Well, yes, it would. But here’s why I would argue thats a good thing to do:
If I come across a unique solution to a common problem while working on your site that would benefit other people in the development community, I may ask your permission to release the code for that solution. Giving back to the community is what makes WordPress such an interesting platform to develop for. Your site is benefitting from any number of other people who have released their code, why not release yours?
And I’m generally pretty uptight about monitoring my hours worked… if I’m billing my time to you as a client, I’m not going to be doing something on the clock which doesn’t directly benefit your project. I will never bill clients for the time I spend repackaging the code to strip any private data from it in preparation to releasing it publically. But giving back is important, and I encourage it whenever possible and desirable. However, the end decision whether or not to allow a particular piece or code to be released as open source lies with the copyright holder.