Choosing an Open Source License
There really isn't a right answer. The GPL v3 is great for developers of GPL'd software, but requires that all derived software keep the same GPL license. That simply won't fit my development model. I don't want every product I create that uses the libraries to have to be GPL as well, nor do I want that for other developers using the code.
So there is the LGPL, which might be a good choice for my libraries, but has similar restrictions to the GPL that I simply don't want to require people to adhere to.
I then found the CDDL, and I really liked the way it was written. It's unfortunate that it's incompatible with the GPL or it would be my top choice for pretty much everything. But it's not compatible, and I don't want to keep my software out of the hands of developers of GPL'd software.
None-the-less, the CDDL is one of the few file-based open source licenses, and one of my requirements for some of my software is that I need to mix in some commercial libraries which are obviously not open source. The best answer might be a dual-license model, but as far as I can tell, I wouldn't be able to mix in proprietary code with a GPL license, so the GPL version of those products would need to be severely crippled, which might not make sense to do at all.
The only course I can see clearly working is releasing the following:
- For libraries containing only open source code, dual-licensing the CDDL and LGPL (allowing GPL developers to choose the LGPL license, making it compatible)
- For applications containing only open source code, dual-licensing the CDDL and GPL, for the same reason as above
- For libraries or applications containing open source and proprietary code, licensing only under the CDDL is the only option. Nothing compatible with the GPL can contain proprietary code in my understanding.
For this reason, I will try to keep as much of my code as possible in the dual-licensed projects and available for all open source developers. However, many of my applications themselves will be mixed in with proprietary code, and this will be released only under the CDDL (with the proprietary code released under its own license, all fully documented).
Of course, all of my past work up until this point is still available and can continue to be used under the MIT license it came with. Most of my future code, however, will not be released under an MIT license. None-the-less, if you opt for the CDDL license on my future projects, it has the handy addition of allowing you to mix it in with any proprietary, closed source code that you want, as long as you keep the original code and any modified files based off of the original code under the CDDL.
Due to all the confusion and incompatibilities surrounding the current crop of open source licenses, I was very tempted to simply write my own. But that would just add to the confusion, so the best choice right now seems to be to play along while being as open as possible.
I will be sure to fully document on each project homepage the licensing model of the project and what it means for others wishing to redistribute the source code.
Related articles
- Is Copyleft Really Right for Open Source? (intridea.com)
- My take on open source licenses (spf13.com)
- Why the GPL Matters (avdi.org)
- Why Open Source misses the point of Free Software (gnu.org)
CakePHP Project: WebManager
I have started work on a solution to a problem I have been searching for for quite a while. Finding nothing that satisfied me, a while back I started development on a new CakePHP project titled WebManager (DE WebManager to be precise).
The functionality will include the ability to manage the entirety of a business or individual's web presense, from domain names and websites to providers, datacenters, servers, and more. Manage them all in one place and interact with them in intelligent ways--get renewal reminders, login links to all services, relevant contact information displayed on related pages, and much more.
This project came about because I was tired of having to manage my various web assets in all different disconnected places--my registrar for domain names, my various hosting providers and control panels, all of my websites, pages, and projects around the web, and more. It was all just getting to be too much, and while there are a lot of organizational tools, none of them seemed to be designed for this specific type of management. In this, I saw a way to make something that works better for me.
The project is built with CakePHP 1.3, the MooTools Javascript framework, and the MochaUI interface to give users a full desktop-like experience on the web.
I am not sure yet what different versions I will offer, and whether this will be a locally-hosted product or SaaS (Software as a Service) hosted and provided by the Digital Empire. Only time will tell, and I should hopefully have some screenshots and more information posted soon.
