In this post I will try to explain why the software need a license, and what is that license. Also I will explain why license are so important for free software.
The usage and distribution terms of any software can be read in its license.
Every software product need a written license, because software works are covered by copyright law, and this law states that all the rights (the right to use, to distribute, to modify, to link that software with others, etc) belong to the author or titular of the rights. So if the author or titular of those rights does not explicitly say what can you do with the program, the result would be that you cannot do anything with the software (maybe nor even use it!).
Developers of proprietary software use licenses to state what you can do with the program (normally, few things: for example, to use it, maybe distribute it without changes, maybe distribute it but free-of-charge). Normally they write in “negative-language”: they state all the things that you cannot do (for example “you can use this program only for educational purposes, professional use is not allowed”). Developers of free software also use licenses to state what you can do with the program. The difference is that free licenses gives you much more freedom.
In particular, a free program provides the user this four freedoms:
- Freedom to use the program, for any purpose
- Freedom to study and adapt the programs (modify)
- Freedom to distribute the program to others
- Freedom to distribute to others the modified versions of the program
So if you want to know if a given program is free or not, you should read the license file and evaluate if its usage and distribution terms respect the four freedoms (at the same time); if yes, it is free software; if not, it is proprietary software. If the program comes to you without license, I am afraid it is proprietary software: it is already copyrighted, belongs to the author or titular of the software, and you cannot do anything with it.
With proprietary software, you can find as many different licenses as many programs (or companies). There are no general licenses as “General License for Use” meaning “you can use the program for any purpose but you cannot do anything else with the program”, or “General license for non-commercial distribution” meaning “you can use and distribute the program but without charging any fee”.
With free software there are many different license terms too, because developers may provide you the four freedoms and state other clauses or restrictions not affecting those freedoms. For example, you can find free software which license includes a clause stating that if you modify the program to introduce code that implements a patented idea by you, you must provide a patent license to everyone you distribute the modified program. Other example can be a the license with a clause stating that if you distribute the program, modified or not, it must been distributed within the same license terms. As you can see, none of this two examples are affecting the freedoms for using, distributing, modifying or distributing modified versions of the program.
However, using particular license terms for free software can be problematic at the time of distributing several free programs together, or linking or reusing code from different free programs in order to develop a new software. Why? Because the derived work should meet all the license terms of the original works, and maybe these terms are not compatible (“non compatible” means that you cannot meet the two or three terms at the same time). For example, think about a software ‘A’ which license ‘A’ saying that if you modify the program, you should distribute your modified copy with license ‘A’. And now another program ‘B’ which license ‘B’ saying that if you modify the program, you should distribute your modified copy with license ‘B’. If I want to make a work using code from programs ‘A’ and ‘B’, my license should be A’type and B’type at the same time…
That’s why with free software you can find several general licenses that many programs from different developers and company use. Some of this general licenses are the GPLv3 (GNU General Public License version 3), the Apache v2.0 license, or the BSD license. So for example, if you know the terms of GPLv3 license, and you find several programs that use that license, you can be sure that all this programs are free software, and also you can combine them because their license terms are compatible.
The Open Source Initiative and the Free Software Foundation maintain lists of recognized free licenses: if you find a program with a license included in their lists, you don’t need to read the license terms to know if the program is free; they already did it for us and stated that is free. (Although knowing that the program is free software, it is still recommended to read the license terms in order to know if there are additional clauses, not restricting your freedom, which you should meet in your usage/modifications/distributions).
Note that you can still find free software with particular license terms, not included in FSF nor OSI lists; they cannot read all the licenses of all the programs being produced worldwide! You can still read the license and evaluate if they respect the four freedoms; if you are in doubt, you can write them asking help.
But both OSI and FSF encourages everybody to use the already created general licenses in order to avoid the problems that I already explained. FSF also explains which licenses are compatible with GPL (most used license in free software).