Chris Tankersley

· PHP Jack of All Trades ·

Licensing Is Hard, Let's Go Shopping

Licensing seems to be a popular topic in the PHP world lately. I think that's a good thing, since many PHP developers are open source developers, and open source is what helps not only PHP the language grow, but also the PHP ecosystem in general.

A big blowup has recently been happening in the Joomla space. I'm not a member of the Joomla community, nor do I really care to be, but that's not really the point. I've tried to piece together most of it, but the Joomla Framework is considering a change from the GPL (GNU Public License to the LGPL (Lesser GNU Public License). This has caused a major stir in the community, and many people are against it.

The big question is, why? Both licenses are approved Open Source Licenses, so it's not like the Joomla Framework is going to all of a sudden be closed sourced and walled off from the world. No one is going to lock up the code, it will stay Open Source (or Free).

The problem is what is Free at a philosophical level. Whose freedom are we talking about? How do we define freedom of software, and to what lengths to do go to define that freedom? As humans we're good at siloing things into specific requirements and in the software development world we've done that.

A Crash Course

When we talk about open source software, we're actually talking about two different camps and ideologies. One is "Copyleft," which boils down to the idea that software has inherent rights and wants to be free, much like you reading this want to be free. It doesn't want to be caged up, it wants to share itself with the world. Anything that you make with it shares those same rights, so that software must be free and open source as well. That sounds kind of fanciful, but that's the idea. This idea has spawned the GPL, one of the most popular Open Source licenses ever.

The other camp is "Permissive." The idea behind this camp is that code should be shared for the betterment of the community, but that the developer is the one that ultimately controls how the code is used. For example, if you purchase a car, Chevy can't tell you what to do with it. Likewise, a developer can release a blob of code into the wild but can't stop another developer from locking their version up (the original released version is still freely available). Licenses like BSD and MIT are examples of Permissive licensing.

To quickly distill this, "Copyleft" favors software over the developer, and "Permissive" favors the developer over the software.

Why does this matter?

Let's get back to the matter of Joomla Framework. Right now Joomla, and the Joomla Framework, are licensed under the GPL. The GPL is a "Copyleft" licensing scheme, which favors the idea that no one has the right to lock up the code into a proprietary system. If I make a CMS based on the Joomla Framework and distribute it, I'm not allowed to stop anyone from asking for the source code and modifying it. This helps encourage people to share back improvements.

I'm also stopping someone from asking the source code, modifying it (let's say changing the name to SuperAwesomeFramework) and then no longer offering the new source code. The GPL is a viral licensing so anything that is built with the Joomla Framework will also be GPL. From the perspective of the software this is great since it will continue to grow without fear that enhancements are locked up.

One of the issues with the GPL that many people (like myself) have is that anything that touches the GPL'd software must also be GPL. This is where the viral part comes in. Let's say I'm building an accounting software and want to use an XML library that is distributed as GPL. The GPL on the XML library says that anything I build with it must also be GPL, so the accounting software I build must also be GPL. The GPL spread from the XML library to my software, so my software must now be GPL. From a copyleft standpoint that is good, because now I can offer my software to the world and it will be free.

What some people want to do is switch to the LGPL, which removes that linking requirement. In the case of my accounting software, if I use an XML library that is LGPL I don't have to license my entire software as LGPL (though if I modify the XML library I will still be required to open source those changes).

By using the LGPL I'm not adding to the open source ecosystem, which is a major sticking point for many developers. I'm still required to offer the source and any modifications to the XML library, but not the accounting software. I've locked up the accounting software and taken away it's freedom. That's a big deal to some people, which is why many developers are against the Joomla Framework being LGPL.

Remember, the whole idea behind Copyleft licensing is that software wants to be free, so anything that takes away freedom from the software is a bad thing.

Why change the license?

This gets back to whom you are servicing - the software or the developer? The more permissive and less copyleft something is, the more it favors the developer. In the case of the Joomla Framework, switching to the LGPL makes sense because many developers and companies will not use GPL software to build their products, since they do not want their entire product/service/whatever to be be GPL'd, and therefore open source.

If the Joomla Framework switches to LGPL, the idea is that more people will use the framework without it affecting the contributions to the framework at large. Remember, modifications to the framework itself still need to be open sourced, so if I build something on the Joomla Framework and fix a bug with it's DB layer I still need to make that change available.

By staying GPL, the Joomla Framework limits who can use it, but it also forces code built on it to be open source and contribute to the community. That's not necessarily a bad thing, but if the Joomla Framework wants to service the developer above the code, then LGPL makes more sense. If the GPL makes someone not want to use the framework, why use the GPL?

Do What's Best for the Community

I don't have an answer for this debate. Well, I do, and it would be to switch to BSD licensing but that's because I'm not a fan of the viral nature of copyleft licensing, but that's not the point of his article. I think ultimately the Joomla Framework community first needs to answer who they are trying to serve - developers at large using their software or making sure that the rights of their software are upheld. That should be the first question that's answered, as that answer will dictate what license to use.

Determining what license you want to use is a personal choice, and a hard one.


Categories: licensing