Software License Types
Software licenses are generally either
- more permissive, like the Apache 2, MIT, BSD, or Boost license, or
- less permissive, like the GPL family
The more permissive licenses focus more on the user’s rights to do what they want with the code. These tend to be called “open source” licenses.
The less permissive licenses focus more on the code itself (and contributions to it and distributed along with it) always remaining free. These tend to be called “free software” licenses.
The differences between open source and free software are discussed in detail at Why Open Source Misses the Point.
Another distinction between licenses is whether or not they contain patent language. The FSF licenses and the Apache 2 license do. Many other licenses do not.
The GPL is a “copyleft” license. Copyleft is the quality of a license requiring contributions which you distribute to be licensed the same as the original program.
The term “libre” means “free” as in freedom (as opposed to cost in money). It is often used to describe free software.
License Compatibility
It’s possible for a program to be licensed under more than one license (usually just two), which means that you can use the code under the terms of any of the licenses.
If you find some free or open source software that you’d like to contribute to, and then further distribute (with your changes), you can choose the license for your contributions. That is, the combined software will consist of the original code under the original license, and also your added code which is licensed under the license of your choosing. For this to work, you need to choose a license for your contributions that is compatible with the original license.
(There’s also the possibility of getting permission from the original author to allow you to re-license the entire project.)
For a license to be compatible with another license, it means that the different licenses don’t have terms that conflict.