YAFFS is, and will remain, a free-software project. That's why it is licensed under the GPL, to ensure it remains free, whatever Aleph One Ltd or Charles Manning do now or in the future. However, we also want to make YAFFS available to as many people as possible, and some people who wanted to use it found that they couldn't if it was GPLed. Consideration of the best way to take YAFFS forward has resulted in a dual-licensing scheme, similar to that used by MySQL AB and others. Here we explain how the various components are licensed and our reasoning for doing it this way.
GPL
Briefly, the GNU Public Licence, (GPL), requires that you publish the source code for any code that you distribute which is derived from any GPL code. Derivation in this case is deemed to cover static, but not dynamic linking to GPLed code. Some people (including the author of YAFFS) find this distinction a little arbitrary, but that's the currently accepted status.
Because YAFFS is usually used in an embedded environment it is quite likely that parts of it will be used in bootloaders which may be proprietary code, or may be statically linked to a proprietary OS. We are told that the licenses applied by Microsoft to WinCE after WinCE3 prohibit the use of GPL-licensed code even though the linking is dynamic (and it was OK for WinCE3).
Thus there are three different reasons which would make YAFFS unsuitable for a project even though it is technically appropriate. We have dealt with these in a couple of ways.
LGPL bootloader code
Early on it became clear that the small section of bootloader code was very likely to be incorporated into all sorts of bootloader programs. Bootloaders are sometimes proprietary in gadget development because manufacturers want to stop users messing with them. We decided that whilst we'd prefer bootloaders to be free too, this wasn't a big deal so the few K of bootloader code is licensed under the LGPL, allowing it to be linked-to by proprietary software which needs to read YAFFS filesystems. This is not at all contentious and many free-software projects have used LGPL libraries to allow their code to be used by non-free software.
Dual licensing
The problem of recent WinCE licensing and the fact that YAFFS is ideally suited for use in very small embedded RTOSes is trickier to deal with. We could have simply decided that such people couldn't use YAFFS, but we wanted people to use YAFFS so long as its essential freeness was not compromised. The best solution to this was for those who aren't in a position to contribute by distributing their own software, to contribute monetarily. Aleph One needs funds to develop YAFFS and getting those from people using it in proprietary products, as well as from consultancy, seems equitable.
Because we had copyright on all of the YAFFS core code we were in a position to dual-licence the software. This means that the software is available from us both under the GPL, and under the Aleph One Licence. The code you get is essentially the same, but the Aleph One Licence allows incorporation into proprietary software which can be distributed.
We hope that everyone will find this satisfactory. People developing free software can use YAFFS in the usual way, without payment if they don't need support. People developing proprietary software or using proprietary OSes get a great NAND-flash filesystem but don't have to worry about their code acquiring the GPL obligation of general release of Source; they just buy the software from us in the usual way, and Aleph One gets some income with which to continue the development of YAFFS and YAFFS2.
[0]Our Licence [0], which is for one product, is the starting point for negotiation of your Licence.
Downloads
You can access without charge the current YAFFS code at CVS. [0]