Frameworks and Licenses
The Joomla! CMS Project recently announced a change in the policy for listing 3rd-party extensions on their popular JED site. The new policy requires that all 3rd-party extensions must use the GPL license in order to be listed on the directory. Furthermore, they will no longer accept extensions that contain encrypted code, which some open source software developers use to discourage individuals and warez sites from redistributing their software.
This came as no big surprise to me, as Joomla's overall policy on extension licensing, which was announced about 18 months ago, is that extensions to Joomla!, which is GPL, are, by definition, GPL since they are considered "derivative works."
While I personally have no problem with this new policy (other than wondering why GPL-compatible licenses are not allowed), I wondered if anyone had really thought about what the long term effect of a GPL-only policy would be on one of Joomla's often stated future goals. That being the desire to have the Joomla! CMS spawn a companion "application framework" upon which a number of diverse applications could be built.
One thought that crossed my mind while burning a minimal amount of brain cells thinking about this was:
What the current state of Linux (aka GNU Linux to the anal-retentive) would be had a decision not been made long ago to use LGPL licensing for the dynamic libraries? These libraries provide critical "application framework" for the vast majority of applications that run in Linux environments. This allows applications to run on Linux, whether their license is proprietary or one of the non-GPL open source variants.
Talking about Joomla's future application platform and Linux dynamic libraries might seem like a stretch to some. However I consider them both application platforms, albeit it at different levels of abstraction. One can visualize the Joomla! framework as a higher level equivalent of the Linux kernel. That is, the Joomla! framework provides the basic program control and input/output operations.
Having said this, let us talk a bit about the GPL in the context of PHP-based systems such as Joomla, and the barriers to licensing the prospective Joomla! application platform's APIs as LGPL, thus opening it up for use by proprietary and non-GPL open source application developers.
- License Interpretation - the school of thought that any extension that links to GPL-licensed systems such as Joomla! are also GPL works since they are by definition "statically linked" and thus are derivatives. To me, this is a fallacious argument when applied to scripting languages such a PHP, since they do not make a distinction between dynamic and static linking. Everything is generated on the fly as one big blob at run-time as opposed to classic complied languages such as C where one is given a choice of using dynamic or static linking.
- Mission Impossible - Although Joomla! 1.5 has been refactored and now use a MVC architecture, it still retains a fair amount of the original GPL-licensed code from back in the "Mambo" days. A such, to effect any change in the Joomla! licensing the Project is legally bound to get permission not only from current developers who hold copyrights to the code, but also from any and all people who have contributed code since Mambo first saw the light of day. What, if any, solution there is to this issue probably involves lawyers and lots of time and money.
- Reality - the Joomla! Project's stated policy is to license Joomla! as a GPL work with no exceptions allowed. This includes the belief that anything that uses the Joomla! framework APIs is, by definition, GPL.
The Joomla! Project may indeed some day offer an application framework in addition to their current CMS software. However I do wonder how successful it will be if the application framework's APIs remain under the GPL rather than using the LGPL or similar licensing.
Disclaimer: The above are my opinions. Furthermore if any of the technical points I've talked about are in error or inconsistent, it was done with no malice aforethought...just technical ignorance on my part!