Hop Studios uses code written by EllisLab every day, and we’re watching each day for the drop of ExpressionEngine 2.0, which will be based on the CodeIgniter PHP framework. While we wait, I was musing about how EE is often admonished for not being open source, while CodeIgniter’s status as such is seemingly overlooked.
The PHP framework by EllisLab touts its open source nature everywhere: in the site’s page title, in the home page’s largest text, and in the CodeIgniter At a Glance documentation, where it says “CodeIgniter is licensed under an Apache/BSD-style open source license so you can use it however you please. For more information please read the license agreement.” But the license agreement itself is quite short and says mostly this (I left out the warranty stuff):
Copyright (c) 2006, EllisLab, Inc.
All rights reserved.
You are permitted to use, copy, modify, and distribute the Software and its documentation, with or without modification, for any purpose, provided that the following conditions are met:
1. A copy of this license agreement must be included with the distribution.
2. Redistributions of source code must retain the above copyright notice in all source code files.
3. Redistributions in binary form must reproduce the above copyright notice in the documentation and/or other materials provided with the distribution.
4. Any files that have been modified must carry notices stating the nature of the change and the names of those who changed them.
5. Products derived from the Software must include an acknowledgment that they are derived from CodeIgniter in their documentation and/or other materials provided with the distribution.
6. Products derived from the Software may not be called “CodeIgniter”, nor may “CodeIgniter” appear in their name, without prior written permission from EllisLab, Inc.
So, does this mean it’s open source? The Open Source Initiative lays out pretty clearly what it means for a license to be open source, probably most thoroughly here. So the question is: Does CodeIgniter qualify? Point by point, let’s see:
1. Free redistribution. Basically, yes. The requirement to document changes and to acknowledge CodeIgniter is minimal and doesn’t interfere with use. The limit on using CodeIgniter in the name is addressed in point 4.
2. Source Code. CI is not required to be re-distributed with source code, which means that someone can take CI, obfuscate it or otherwise compile it, and market that product without providing the source. But not all open source licenses require their code’s “offspring” to have accessible source code. So, this is maybe a little unfortunate, but it’s still open source.
3. Derived works. CI requires a copy of its license to be included with anything redistributed, but it doesn’t require the modifications to be offered under the same, or even under an open source, license. Again, this runs counter to how open source software is supposed to behave, but isn’t in itself a disqualification. Incidentally, this clause is perhaps necessarily so, in order that ExpressionEngine can be based on CI without itself becoming open source (though I suppose EllisLab, owning copyright on CI, could give itself a separate, unlimited license to use CI however it wants).
4. Integrity of The Author’s Source Code. CI allows modification of the source code in re-distributions, so this doesn’t apply. CI requires that a developer not use “CodeIgniter” in the name of the redistributed code, which is allowable.
5. No discrimination against people or groups. CI has none.
6. No discrimination against fields of endeavour. CI has none.
7. Distribution of License. CI doesn’t require (or block) any other license.
8. License Must Not Be Specific to a Product. CI does not require itself to be part of any particular software distribution.
9. License Must Not Restrict Other Software. CI does not require other accompanying programs to match its license.
10. License Must Be Technology-Neutral. This is true for CI.
So it seems that, while CodeIgniter doesn’t use a standard open source license and could be doing more to protect the open source status of derivative works, it does qualify as open source. Using a more recognized open source license might help others have confidence in this fact; so would being certified by the Open Source Initiative. But I think the basic answer is clear. Is CI open source? Yes.
Thanks to Zak and Boris for helping me to think through these questions.