There are two main classes of licenses in Free/Libre and Open Source Software (FLOSS): GPL-style and BSD-style licenses. The GPL-style and BSD-style licenses are described, together with a discussion of the relation between the two.
The Free Software philosophy as proposed by the
Free Software Foundation intends to guarantee the unrestricted Freedom
of the software and derived works from the software. It therefore
promotes the use of the GPL license for distribution of software. The
GPL license essentially gives a licensed recipient of the SW the
explicit right to Copy, Modify and Distribute the program and its
source code. It also gives an implicit right to Use the program (but
that right could be limited again on another level by software
patents since Copyright cannot override the restrictions on use that
could be set by software patents).
The GPL license also implies one major obligation: if you wish to redistribute a program that is partially based on software that you received under the GPL license, you are obliged to make that redistribution under the same license without any other parallel limitations (e.g no NDA's of the code or no patent based limitations on its use). This principle is called the "Copyleft" property of the license. It could be called some form of a "Law of Inheritance of Freedom."
There is clearly a Free choice here. Only if you explicitly choose to base your program on GPL software and to redistribute it, this condition of Copyleft applies. You are entirely free not to base your program on GPL'ed code an reserve the right to distribute your program under any other license, including a proprietary license. You are also never obliged to redistribute or publish anything. Licenses that enforce you to publish your code or feed back modifications to a third party are not Free Software licenses. In the GPL as one of the Free Software license, it is only, if you do publish your program, then you must again use the exact GPL license for that redistribution or publication, to guarantee that the recipient of the software receives the software with the same freedoms under which you also received the software. This is the symmetrical fairness principal of the GPL.
Scope of Copyleft
The scope of the Copyleft is limited to parts of the same program.
This does include parts of the program that are linked together,
including static and dynamic linking to GPL libraries or objects, but
the Copyleft of GPL does not extend to other programs running on the
same processor, that are e.g. using the GPL'ed programs through their
normal interfaces. E.g. User land programs running on the Linux
kernel do not need to be redistributed as GPL, merely because they
run on a GPL'ed Linux kernel. Also the Linux kernel can insert
modules that are not GPL'ed without violating the GPL license on the
Linux kernel. Only modifications to the kernel itself should be
redistributed under GPL, if you want to redistribute a modified
version of the kernel.
Next to the GPL as a Free Software license with a strong Copyleft, there are many other Free Software licenses with a weaker or no Copyleft. A good overview is given here.
Another philosophy is used by the Open Source movement. Open Source software must meet a number of criteria. The exact definition can be found here. A strongly simplified definition is that everyone has the right to use the source code he received of an Open Source program in pretty much any way, as long as the Copyright and the non-liability conditions remain intact. There can also be limitations on the redistribution of modified versions (e.g. no redistribution of modified versions allowed under the same name or no redistribution allowed of modified executables), but the Copyleft is not an explicit goal of the Open Source movement. The main license of the Open Source type is the BSD license (without advertising clause). It is widely used on a large number of important programs (e.g. FreeBSD, OpenBSD, NetBSD, Apache, Sendmail, ...). BSD without advertising clause is a GPL-compatible license, which means that it is possible to redistribute BSD derived code under a GPL license, while also still obeying to the rules of BSD. The advertising clause in the license appearing on BSD Unix files was officially rescinded by the Director of the Office of Technology Licensing of the University of California on July 22, 1999.
An interesting license, derived from the GPL is the eCos 2.0 license. It is a GPL license, where the scope of the Copyleft is reduced to not extend to other pieces of software that are linking with the eCos 2.0 licensed software. This allows the possibility in an embedded system for the application to run on top of the eCos kernel, which is in practice not more than a library with a number of basic functions (HAL, timers, thread management for hard real-time performance, ...). This allows a proprietary application to run on top of an embedded eCos 2.0 Real Time Operating System.
Discussion of GPL vs. BSD
In the FLOSS community, there is a animated discussion on the merits of both types of licenses. Obviously both licenses have their merits for a particular goal.
GPL is more restrictive due to the Copyleft principle that all redistributions of derived works must exactly carry again the GPL license. With GPL-derived programs that will be redistributed on a large scale to end-customers, this effectively forces these developers to contribute their improvements back to the community as soon as the modified (improved) version is released. Major examples are the Linux kernel, the gcc compiler, etc. The net effect is that on the published versions of the software, there tends to be 1 (or max 2) major version of the program. Other derived versions for specific purposes can be available, but at any time, any of the maintainers have the right to cherry-pick the best parts of other versions and incorporate them into his version. This naturally stimulates cooperation and motivates Free SW developers to work around a centrally maintained best-of-breed version. Derived versions for niche applications are seen as differential versions, with respect to the main tree (the tree analogy is derived from the complicated directory structure that is formed by all source code elements of a large program). It is found advantageous to synchronize as much as possible with the main tree, because this reduces the work load on the other versions to keep up with the fast pace of development on the main tree. The net effect is that a lot of the development that is performed by individuals and companies on GPL'ed software adds up to the central, public code base of the program and is not held back under the proprietary ownership of the developers. This explains the phenomenal speed at which Linux and many GNU projects (gcc, gdb, GNU tools, ...) have evolved from early projects to mature, de facto standards.
Alternatively, GPL'ed programs can also remain private. If company A sells an improved version of a GPL program to company B, they can both have a natural interest not to disclose the source code: A might prefer not to release the source code so that it can sell the improved version a second time and B might prefer not to release the source code since it paid for that version and does not want its competitors to have free access to the source code of that version. So, an interesting business model can exist where GPL software is sold many times between parties, where all parties have the full right to publish the code, but none of the parties is compelled to do so for its own reasons. The Free Software philosophy encourages selling Free Software for money, since that money is than used to further develop even more Free Software.
BSD is much less restrictive on derived works. One major consequence is that it is possible for anyone (even a person or entity that has never contributed a letter of code), to grab the current code and use is as part of a program that is then distributed e.g. under a proprietary license. On a short term this leads to better possibilities for commercialization of proprietary software based on BSD-style licenses, but it also leads to the possibility of forking between different closed source, commercial versions. This is e.g. what happened to sendmail that had different version on the different UNIX systems that made life of the sysdamins harder than necessary.
Conclusion: Our understanding is that on a short term, BSD is an easier license for commercial application, but on the long run, GPL software will evolve faster due to the trust that all players can have in the fairness model that guarantees reciprocal availability of the source code to all players, long after each player has made its contribution. At Mind, we prefer to use GPL and eCos 2.0 for those programs of which we publish the source code. In this way, we are certain that later contributions that are made by other parties will also be available to us when that program is made available publicly.
Many other FLOSS licenses exist that are somewhere in between these two extremes. Mind can advise you on the exact business implications of using a certain license.