- The Open Source Community
- Free as in Lunch
- Existing Communities and the Stealth Geek
- The License Question
- Why Bother?
The License Question
The license that you choose for your code restricts who will contribute to it. No one will contribute if they can't use the code, but any Free Software license permits use. However, various licenses restrict the kind of derived works that you can create.
If you choose a very permissive license, such as the X11 license, anyone can use your code in absolutely any way that they want. The only thing that they can't do is claim that they wrote it. With the public domain, such as used by SQLite, even this isn't a restriction.
The more permissive the license, the larger the pool of potential contributors, but this is only half of the equation. Turning potential contributors into actual contributors isn't always trivial. If you release your code into the public domain, people can incorporate it into their products, but what incentive do they have for giving anything back?
The obvious answer is that it lowers their cost of maintenance. If you change something in your code, you'll probably check that it doesn't break anything else in your code, but you won't check that it doesn't break third-party changes. If third parties contribute their changes to you, you'll need to keep those changes up to date with yours. If the third parties keep their changes out of the tree, this cost remains theirs.
You also can try to use some legal pressure. Licenses like the GNU General Public License (GPL) require that you provide a copy of the code when you give binaries to anyone. This rule doesn't necessarily imply that the code will make it back to you, but it usually does in practice.
You might prefer a license with more strict patent protection, such as the Mozilla Public License (MPL), or its relative the Common Development and Distribution License (CDDL).
Any choice comes with complications. The GPL doesn't allow linkage with any code that has restrictions not present in the GPL; if you use the MPL or CDDL for your code, then it can't be used by GPL'd projects, reducing your potential contributor pools. Similarly, GPL'd code can't be used by any of these projects, or by those that use the Apache or BSD licenses.
You might consider dual licensing. Mozilla, for example, uses a combination of the MPL, GPL, and LGPL, meaning that you can use their code under any of these licenses. This practice solves the incompatibility problem. Because the MPL is a per-file license, the code can be used in BSD-licensed projects (legally, at least). This is how FreeBSD is able to incorporate CDDL'd code from Solaris, for ZFS and DTrace, in a BSD-licensed kernel. If you're considering this option, remember that some projects have philosophical as well as legal issues with more-restrictive licenses. For example, OpenBSD won't incorporate OpenSolaris code, because they require that all of their core code be licensed as permissively as possible.