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.
DOM and SAX and File Streams…
Sometimes I sit up late at night starting at my screen and wondering, is it worth coding all of these advanced libraries for something as high-level as AHK? Will people understand such “cryptic” functionality who are used to simple Batch-like commands?
Regardless, I’m doing it… here are some status updates:
- DOM Level 3 Interfaces: complete
- DOM Level 3 Core Module: complete (in testing)
- DOM Level 3 Load and Save Module: in development (waiting on SAX parser)
- SAX 2 Interfaces and Core Classes: complete (in testing)
- SAX2 XMLReader Implementation: in development
- File class (with Windows function wrappers): in development
- File Stream Support: in development
As you can see, there’s a lot to be done—but just having the core DOM complete (per se) is enough of a driving factor to keep me going with everything else…
The XML parser (XMLReader implementation) is turning out to be a bit complex, however.
I’ll post links to documentation and discussion as they become available.
Portland, the city of weirdness
Well, my girlfriend and I finished our move to Portland, OR. So far we're having a great time in the new house and exploring around the neighborhood.
Now that I'm back at work again, and actually working from the office, I'm anxious for the weekend to get here. I have a lot of work to finish up.
FOMS (The Fallout 3 Mod Sorter) is being rewritten, as I've said, and as a prerequisite I'm working on completing my DOM implementation in AutoHotKey. Expect that next week, and hopefully a new FOMS version shortly thereafter.
After that, and several other currently in-development AHK classes, hopefully my heavily-neglected SteamWin and SteamLab rewrites will be underway.
Look for more news about that soon.
FOMS – Fallout 3 Mod Sorter
I have recently released an AutoHotKey utility for Fallout 3 called FOMS (Fallout 3 Mod Sorter).
Links:
FOMS on Fallout3Nexus
FOMS Wiki
FOMS Trac site (Development and bug tracking)
FOMS Source Code (SVN)
Current major beta release is 0.5.0, which support mod sorting, conflict and dependency tracking and resolution, user messages, backups, and more.
Coming soon: GUI and tray features, a Backup manager and Template manager, and more!
All I want for Christmas is the Torque Game Engine Advanced
I have been just itching to put some of my more recent game ideas into fruition. While I love the Source engine and the Source development tools, and still plan to use it to release the Consumed Episodes (and probably Consumed itself), I am very interested in giving the TGEA a try.
Unfortunately I don't have $295 available to purchase an Indie license, which is what I'd need. Maybe after the holidays, I'll be able to start saving up for a license. I just hope it doesn't take too long, dammit!
CakePHP 1.2 RC3 upgrades coming
Luckily all of my Cake projects are still under development, because I'm going to be upgrading them all to CakePHP 1.2 RC3 over the weekend.
I'll report any caveats I find during the upgrade process here for others if interested; I don't anticipate many problems, however, as I am not using deprecated functions and I believe my code is clean enough to track down any inconsistencies quickly.
Here's crossing my fingers, and hoping that the upgrade to RC3 brings the promised speed improvements to my projects!
