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.