I write software for a living.  Not something I ever expected to do for a career, but it happened and I'm fairly good at it.

I also write software as a hobby.  Different languages and platforms - working with a diverse set of tools makes me a better developer.  I also give away most of the software I write in my free time.


Releasing software helps me find bugs, contribute to a growing community of developers, and raise my own name recognition in the market.  Increased name recognition means more consulting contracts.  It's a win-win.

When I do give my software away, I try to pick the most permissive terms possible under which it's distributed.  So long as my name and copyright stays on the code, I don't care what you do with it.

A great deal of the code I write in my free time is for WordPress.  WordPress is distributed under the terms of the GPL (version 2, specifically), so my code has to licensed under GPL-compatible terms.

And that is a can of worms that irritates me.

In my opinion, the GPL is the enemy of software freedom.

Let me say that again - the most commonly used license for "free" software is the enemy of free software.

Here are a number of reasons why:

  • Various versions of the GPL are incompatible. WordPress uses GPLv2. The current "standard" is GPLv3.  GPLv2 code can be included in GPLv3 projects, but not the other way around. So for WordPress plugins to be GPLv2 compatible (a requirement for distribution via WordPress.org), they must also use the older version of the license.
  • The license is viral. I build websites. A client wishes exclusive rights and a restrictive license on the code they've bought from me (which is fine because they bought that right). But they also want to add a feature to the site to make it easier for their end users to interact with. That one feature on one page of the site could use a library licensed under the AGPL ... but incorporating that library (for one button on one page in a rich web application) would require the entire project to be GPL-compatible.
  • The terms of the license are ambiguous. Developers go blue in the face debating what is and is not compliant with their beloved license. If we spent half the time we spent debating actually writing new code, we might already have flying cars.
  • It's unproven in court. Everyone is tying their code to a license that has yet to be defended and upheld by any legal body.  The terms of the license are ambiguous at best, so we debate the spirit of the GPL and just pray that a judge will back us up should anyone ever contest it.

The purpose of a free software license is to protect users.  If Microsoft were to go belly up tomorrow, we'd lose Word, Windows, Internet Explorer, and every other program they sell.  We don't have the code, we don't have a right to the code, and no one can step in and make changes to the code without the defunct company's permission.

Open source software, however, gives the end user the right to have a copy of the code, a right to change the code, and a right to redistribute their changes to someone else.  If Automattic were to go belly up tomorrow, we'd still have the source code for WordPress, After the Deadline, and every other open source project they've distributed.  We have the code, we have a right to the code, and anyone can step in to take over development.

WordPress itself began as a fork of another software project that stalled its development.

But, once again, WordPress is bound to the GPL.

The GPL was designed (allegedly) to protect the little guy.  The aim was to keep software behemoths like Microsoft and Apple from snatching libraries out of the open source community and locking them behind restrictive, proprietary licenses.

Unfortunately, it also hurts the little guy.

Let's say I write an application.  I distribute it under the terms of the GPL and post it on my website for free.  Now, anyone can download it, anyone can use it, and anyone can redistribute the code.  Great!  Then, a larger company comes along, grabs my code, refactors it to slap their own branding all over the place, and puts it on their website for $50/copy.

So long as my original copyright is in place (inline in the code where no one but a developer would ever see it), they are 100% in the clear.  Legally.  Their site with more traffic than mind starts to pull in revenue from work I gave away for free.

Yes, this has happened before.  Not just to me, either.

Does it bother me?  Not really.  I was giving my stuff away for free in the first place.

But look at this same situation a different way.

I write a library.  I want as many people to use it as possible so I can build up my resume with a list of projects implementing my code.  I naively distribute it under the terms of the GPL and post it on my site for free.  Great!  Then a larger company comes along, but refuses to touch my code because they distribute software in an industry that, for regulatory reasons, is not permitted to be GPL.

A developer's choice of license matters.

It can be the difference between distributing software for free and making a political statement that all software should be free.  Depending on who you are, that will mean very different things.

I'm a capitalist, and I aim to benefit from every line of code I write.  Sometimes I do that by selling closed-source software.  Sometimes I do that by selling open-sourced software.  Sometimes I do that by giving my software way for free.

But many new developers are so worried about getting out a 1.0 release that they gloss over licensing terms.  Who could blame them?  Licensing is a messy, opinionated topic.  Choosing the wrong license, though, can set you up for a lot of problems.

When I first started writing code for WordPress, I copy-pasted my license block from an "official" tutorial on how to license your plugins.  That tutorial has since been removed, and I was informed yesterday that all of my plugins are violating the requirements of the WordPress.org plugin repository.  My plugins are all licensed as GPLv3 or greater ... the repository requires GPLv2-compatible.

I'll be carving time out of my weekend to walk through all of my open source projects and relicense them under the terms of the X11 open source license.  It's more permissive than the GPL, but still meets the repository's requirements.