Aunque hay muchas licencias distintas de software libre disponibles, en los aspectos importantes, todas dicen lo mismo: que cualquier persona puede modificar el código, que cualquier persona puede redistriburlo tanto en la forma original como modificada, y que los titulares del copyright y los autores no ofrecen garantía alguna (evitar las responsabilidades es especialmente importante teniendo en cuenta que la gente puede ejecutar versiones modificadas incluso sin saberlo). Las diferencias entre las licencias se reducen a unas pocas cuestiones muy recurrentes:
Algunas licencias libres permiten que el código que cubren se utilice en software propietario. Esto no afecta a los términos de la licencia del software propietario: sigue siendo propietario como siempre, sólo que contiene código de una fuente no propietaria. La Apache License, X Consortium License, licencias estilo BSD, y licencias estilo MIT son ejemplos de licencias compatibles con licencias propietarias.
Muchas licencias libres son compatibles con las demás, significando que el código bajo una licencia puede combinarse con código bajo otra, y el resultado se distribuye bajo otra licencia sin violar los términos de las otras. La mayor excepción a esto es la GNU General Public License, que requiere que cualquier trabajo que utilice código GPL se distribuya bajo la GPL, y sin añadir ninguna restricción más aparte de las de la GPL. La GPL es compatible con algunas licencias libres, pero no con todas. Esto se trata con más detalle “La GPL y compatibilidad entre licencias”más tarde en este capítulo.
Algunas licencias libres estipulan que cualquier uso del código que cubren debe ir acompañado de un aviso, cuya colocación y exhibición se suele especificar, dando crédito a los autores o titulares del copyright del código. Estas licencias son generalmente compatibles con licencias propietarias: no necesariamente requieren que el trabajo derivado sea libre, simplemente que se dé crédito al código libre.
Una variante de la obligación de acreditación. Las licencias que protegen las marcas especifican que el nombre del software original (o los titulares del copyright, o su institución, etc.) no deben ser utilizados por trabajos derivados sin el permiso previo por escrito. Aunque la obligación de acreditación insiste en que se utilice cierto nombre, y la protección de la marca insiste en que no, son expresiones de un mismo deseo: que la reputación del código original se preserve y transmita, pero no sea empañada por asociación.
Algunas licencias (la Artistic License, usada para la implementación más popular del lenguaje de programación Perl, y la licencia TeX de Donald Knuth, por ejemplo) requieren que la modificación y redistribución se haga de modo que se distinga claramente entre la versión original del código y cualquier modificación. Permiten esencialmente las mismas libertades que las demás licencias libres, pero imponen una serie de requisitos que hacen fácil verificar la integridad del código original. Estas licencias no han despertado mucho interés más allá de los programas para los cuáles se hicieron, y no serán tratadas en este capítulo. Se mencionan aquí sólo con el propósito de exhaustividad.
La mayoría de estas disposiciones no son mutuamente excluyentes, y algunas licencias incluyen varias. El hilo común entre ellas es que imponen unas exigencias al beneficiario a cambio del derecho de los destinatarios a usar y/o redistribuir el código. Por ejemplo, algunos proyectos desean que su nombre y reputación se transmita con el código, y esto hace que impongan las claúsulas de crédito o de protección de la marca. Dependiendo de éstas, la carga añadida puede resultar en que algunos usuarios elijan un paquete con una licencia menos exigente.