At 3 Dogs and a Cat Software, we are believers in Open Source software, and helping out our fellow developers. As we've been developing our own applications, we've come across some caveats of development that aren't as well documented as we would have liked them to be. For instance, the iPhone SDK doesn't provide a drop-down box/combo box type control (although one is present in Apple's Safari application for use on web pages). We needed one for iQuilt, and not being satisfied with what was out there, we set out to create one on our own. Although it was core to having our UI properly work, it isn't critical functionality to the internal operation of iQuilt.
When we develop code like this, that is ancillary to the core functioning of our products, we see no need to keep it to ourselves. Rather than force other developers to work from scratch to solve the same problems we've solved, we'd much rather share the fruits of our labors with them. As such, we extract that code from our projects, package it up, and make it available here for others to use. In addition, we will also be opening up a subversion repository to allow other developers to directly access our open source'd code.
What are the caveats?
The code we release as open source is licensed under the terms of the GNU Lesser General Public License (LGPL) version 2.1 with an exception granted based on the nature of iPhone/iPod Touch/iPad development restrictions imposed by Apple. If you produce a work (application) based on this source code, you need not distribute object files necessary for the re-compilation of the application by the end user.
Basically if you use our libraries in your products, you have to make the source code for those libraries (not your entire application) available to everyone. If you use the source code verbatim, merely linking back to our site is sufficient. If you make improvements to the libraries, you must make the source code for those changes available to everyone. Again, this only applies to our libraries, and not your entire application.
Why the LGPL? (or why not the GPL/BSD/Apache License?)
We chose to make our components available under open source licenses in the hopes that other developers, like ourselves, will actually use them. Most iPhone developers aren't making enough money to retire on, so having to pay for components takes a bite out of their income. Yes, its a tax deductible bite, but it is a bite nonetheless. We chose to not use the BSD or Apache Licenses, because while we want our code to be used, we also want to be "paid" for our work (doesn't everyone). Using the BSD or Apache licenses would have allowed a developer to use our work, or even modify our work, without "payment".
Wait a minute, I thought you said you wanted to give them away for free.
We did, and we do. By payment, we don't mean money. In this sense, the payment that we receive is the improvements that others make upon the code base. In the case of the combo box widget, it isn't a true combo box in the sense that it has a drop down list as well as being editable. It's really just a drop-down box. It would be great if it were editable as well, but at the time we created it, we just didn't need it. If another developer decided to use our code as a base for a true combo box, that would be great. We just want to make sure that they're giving back to the community that helped them out.
So why not the GPL?
We recognize that our software is likely not the only software out there providing the functionality we're sharing. We know for a fact that we're not the only ones who have written a combo box/drop-down box control. If we were to license it under the terms of the GPL, it would force developers to release their entire code base for their applications under the terms of the GPL, which would result in a lack of use of our code. While they may exist, and we certainly haven't gone looking for them, we have yet to come across any software for the iPhone that is licensed under the GPL, which seems to indicate to us that developers really aren't interested in releasing their bread and butter under the GPL. The LGPL, with the exceptions that we note, is much more suited to getting our source code used, which in turn provides more visibility for our company.
So What's Available?