Cada cop que penso sota quina llicència publico un programa, se'm fa una muntanya i no em sé decidir. Port ja uns dies pensant que estaria bé fer un petit resum per trobar-ne les diferències i ajudar a triar entre el ventall que tenim, com a exercici per a mi mateix i ja de pas compartir-ho.

MIT, GNU, Apache... quina és la llicència que em convé?

A grans trets

En aquest article repasso els seguents punts:

  1. Terminologia
  2. Què és una llicència de software
  3. Tipus de llicències
  4. Llicències més comuns
    1. Apache License 2.0
    2. GNU - Lesser General Public License v3.0 - LGPLv3
    3. MIT License
    4. BSD Licenses (0, 2, 3 i 4 - clause)
    5. Creative Commons

1. Terminologia

Abans d'entrar al tema, deixa'm definit-ne alguns termes:

  • Programari: Un programa, aplicatiu, mòdul, llibreria... en definitiva, una peça de software que executa una funció i pot ser distribuida.
  • Codi font: El codi amb el que està "confeccionat" el programari. En la majoria dels casos el codi font s'ha de compilar (això és el fet de traduïr el codi font en codi de màquina per tal que l'ordinador el pugui executar), i normalment no és necessari per a que el programari funcioni.
  • Programador, desenvolupador: és la persona o entitat que crea el codi font i del qual sorgirà el programari.
  • Usuari: és la persona o entitat que rep i executa el programari.

2. Què és una llicència de software?

Una llicència de software és un contracte entre l'entitat creadora i distribuidora d'un aplicatiu, el seu codi o el producte relacionat, i l'usuari final. La llicència és un document dissenyat per protegir la propietat intel.lectual del desenvolupador i limitar les demandes que poden aparèixer contra ell pel seu ús. També cobreix els lligams legals per a la distribució i l'ús del programari, o els drets de l'usuari final com per exemple en la instal.lació, garanties i responsabilitat.

La majoria del programari es pot classificar en dues grans categories, que tenen diferències en com són vistes per la llei de la propietat intel.lectual:

  • Programari Propietari (Proprietary en anglès)
  • Programari Lliure (Free and Open-Source Software, FOSS en anglès, també simplificat com a Open Source)

Les llicències de programari lliure donen permissos a l'usuari sobre el programari, que depenent de la llicència pot permetre explorar, modificar i reutilitzar el codi, no només permetent el simple ús, sinó a vegades permetent la derivació: fent un nou programari a partir del rebut.

Les llicències de programari propietari no permeten aquest tipus de llibertat sobre la modificació i reutilització del codi, limitant-ne l'ús a la simple operativa, l'execució del programari, i prohibint de forma més o menys explícita el "reverse engineering" (expressió en anglès per definir l'acte d'estudiar el producte, obrir-lo, descomposar-lo, entendre com funciona per dins) amb l'intenció d'obtenir el codi font.

Ambdues estàn pensades per limitar la responabilitat d'ús del programari i fer explícit el suport i garanties que es dónen. També defineixen les restriccions del comprador i del venedor, l'autorització o no per còpia, venta o distribució del programari, i fins i tot si la llicència definex una venta o lloguer del programari.

Si el programari no està cobert per cap llicència, normalment s'enten com:

  • Programari de domini públic: (Public domain software, en anglès) Accessible lliurement i no protegit per cap copyright.
  • Programari privat sense llicència: (Private unlicensed software, en anglès) Programari que tot i així està protegit per copyright.

3. Tipus de llicencies de software

Hi han cinc categories principals de llicencies de software que cobreixen diferent tipus d'acords, des del programari de domini públic com a menys restrictiu fins al programari comercial privatiu com a més restrictiu, passant per tres categories que apliquen a vàries formes de projectes Open Source o de Programari Liure. Snyk.io: Types of software licenses

3.1. Llicència de domini públic

Public Domain License en anglès. Un programari definit com a "de domini públic" és lliure per ser usat i modificat per qualsevol sense restriccions. És una llicència que permet afegir el codi en qualsevol altre aplicatiu o projecte i reusar el programari com es vulgui.

3.2. GNU/LGPL - GNU Llicència menor del públic general (LGPL)

GNU Lesser General Public License en anglès. Sota la llicència LGPL els desenvolupadors tenen dret d'enllaçar amb llibreries de programari lliure o Open Source en el seu propi programari. El codi resultant pot ser distribuït sota una nova llicència (inclús propietària). La contra és que si alguna part de la llibreria LGPL és copiada o modificada al codi del programari, els termes de la llicència LGPL original s'aplicarà també a aquest codi resultant.

3.3. Permissiva

Permissive en anglès. Aquest tipus de llicència és una de les més populars en les llicències per a programari lliure. Aquesta llicència defineix algunes restriccions o requeriments per a la distribució o modificació del software, com ara la obligatorietat de preservar la llicència original al programari quan és reusat, si es pot reusar de forma comercial o privada, quins requeriments té per a fer-se servir en una marca registrada, mantenir l'autoria, etc.

3.4. Copyleft

Copyleft en anglès, no sé com puc traduir aquest terme... També anomenada Llicència recíproca, aquesta és una de les llicencies més restrictives del programari lliure: el programari pot ser modificat o distribuit com a part d'un altre projecte si el nou programari es distribueix sota la mateixa llicència. Això significa que si el programari original està distribuit com a "només d'ús personal", no es podran fer derivacions comercials, o si l'original especifica que es distribueix el codi font, la derivació també haurà de distribuir el codi font de tot el programari.

3.5. Propietari

Proprietary en anglès. Aquesta llicència prohibeix que el programari es pugui copiar, modificar o distribuir. És la llicència més restrictiva, i la més comú en el món comercial.

4. Llicències més comuns

Hi ha moltes llicències. Però moltes moltes. Pots fer una ullada a aquesta llista de l'Open Source Iniciative o a aquesta altra de la GNU / FSF. Moltes llicències. A continuació faig referència a les més conegudes o les que més he vist usar i que serien candidates pel programari que jo podria arribar a produir.

4.1. Apache License 2.0

asf-estd-1999-logoCreada al 1995, la llicència original Apache era una llicència de programari lliure o open source distribuida per la Apache Software Foundation (ASF), coneguda llavors com a Apache Group. l'ASF va crear aquesta llicència per promoure l'ús de components de programari lliure a tot tipus d'aplicatius. Al 2004 es va crear la versió 2.0 d'aquesta llicència quan l'ASF va decidir separar-se del model de llicència BDS (veure més endavant). Aquesta nova versió clarifica alguns conceptes, garantitza permisos de patents als usuaris i treu una clàusula que obligava a anunciar l'atribució a Apache. En definitiva, dóna més llibertat per usar programari lliure amb finalitats comercials.

Enllaç a la llicència https://www.apache.org/licenses/LICENSE-2.0.html
Resum Pots fer el que vulguis amb el programari, sempre que incloguis les notes requerides. Conté una llicencia de patent dels contribuidors del codi
🟢 Permet - Ús comercial
- Modificar i crear derivats
- Distribuir l'original o derivats
- Sub-llicenciar
- Ús privat
- Reclamar patents sobre el codi
- Garantir el programari
🔴 Prohibeix - L'usuari final no pot responsabilitzar als contribuidors del programari
- Ús dels noms, marques o logos dels contribuidors
🔵 Obliga - Incloure nota del copyright
- Incloure nota de la llicència
- Enumerar els canvis sobre el codi original
- Incloure un arxiu "NOTICE" amb les atribucions.

4.2. GNU - Lesser General Public License 3.0 - LGPLv3

gplv3_logoEscrita per primer cop al 1989 per Richard Stallman, la GNU/GPL és una llicència usada mundialment per a programari lliure o open source, usada per desenvolupadors i entitats per prevenir que un programari passi a ser privatiu. Al seu moment unificà vàries llicències similars del moment però principalment és una implementació de la filosofia de la Free Software Fundation (FSF) i el propi Stallman sobre el concepte de copyleft en quant a creació de programari i la seva distribució.

Després apareix la LGPL, a mig camí entre la restrictiva GNU GPL de tipus Copyleft i d'altres més permissives com la BSD. Bàsicament permet al programari (normalment una llibreria) ser usat per un programa no-LGPL. En cas que el programari no modifiqui la llibreria, sino que simplement en faci ús, serà considerat com a "obra que usa la llibreria" i per tant no serà considerada una derivada i quedarà fora de la cobertura de la llicència.

Enllaç a la llicència https://choosealicense.com/licenses/lgpl-3.0/
Resum Principalment aplica a llibreries, Pots copiar, distribuir i modificar el programari sempre que les modificacions es descriguin i es distribueixin via LGPL. Les obres derivades només es poden distribuir per LGPL, però els aplicatius que les utilitzin no
🟢 Permet - Ús comercial
- Modificar i crear derivats
- Distribuir l'original o derivats
- Ús privat
- Reclamar patents sobre el codi
- Garantir el programari
🔴 Prohibeix - Sub-llicenciar
- L'usuari final no pot responsabilitzar als contribuidors del programari
🔵 Obliga - Incloure el programari original (o instruccions per obtenir còpies)
- El codi font ha d'estar disponible durant mínim 3 anys
- Incloure nota del copyright
- Incloure nota de la llicència
- Enumerar els canvis sobre el codi original
- Incloure instruccions d'instal.lació.

4.3. MIT License

mitSembla que va començar com a projecte conjunt entre IBM, el MIT i DEC al 1983. Dic sembla perque voltaven diferents versions de textos similars. Abans del 1980, molts programadors compartien el codi com a bé comú per millorar les recerques científiques. Arribat a un punt als 80 ja no es podia trobar el codi font de forma lliure per dispositius com impressores, cosa que va empènyer al professor del MIT Richard Stallman a la seva creuada per fer que el codi font fos disponible als programadors. Per fer el programari compartible, institucions com el MIT van haver d'adoptar acords de llicències.

Enllaç a la llicència https://mit-license.org/
Resum Bàsicament pots fer el que vulguis sempre que incloguis la nota original de copyright i llicència.
🟢 Permet - Ús comercial
- Modificar
- Distribuir l'executable o el codi font
- Sub-llicenciar
- Ús privat
🔴 Prohibeix - L'usuari final no pot responsabilitzar als contribuidors del programari
🔵 Obliga - Incloure nota del copyright
- Incloure nota de la llicència

4.4. BSD Licenses

BSD-licenseAl 1980 l'universitat de Berkeley crea un Sistema Operatiu basat en l'UNIX original: el Berkeley Software Distribution (BSD) OS, que va ser àmpliament adoptat per les workstations propietàries del moment. La llicència BSD usada en el Sistema Operatiu feia possible que es pogués compartir el codi font lliurement en un moment en que el programari amb copyright era la norma.

Va començar essent una llicència de 4 clàusules, de la que al 1999 se'n deriva una de 3 clàusules al veure's incompatible amb el GNU/GPL. Al mateix any el projecte FreeBSD publica una versió de 2 clàusules i més endavant es publica una anomenada zero clàusules BSD, tot i que no té res a veure amb el reste de la familia BSD i va ser publicada originàriament com a "Free Public License 1.0.0".

Enllaç a la llicència 4-Clause BSD: https://spdx.org/licenses/BSD-4-Clause.html
3-Clause BSD: https://opensource.org/licenses/BSD-3-Clause
2-Clause BSD: https://opensource.org/licenses/BSD-2-Clause
Zero-Clause BSD: https://opensource.org/licenses/0BSD
Resum 4-Clause BSD: Obligació especial a reconèixer als titulars del copyright
3-Clause BSD i 2-Clause BSD: Quasi tot està permés sempre que s'inclogui la nota del copyright BSD i de la llicència
Zero-Clause BSD: Es permet tot
🟢 Permet - Ús comercial
- Modificar i crear derivats
- Distribuir l'original o derivats
- Garantir el programari

Només 0-Clause BSD:
- Sub-Llicenciar
- Ús privat
- Incloure copyright
- Incloure Llicència
- Incloure originals
🔴 Prohibeix - L'usuari final no pot responsabilitzar als contribuidors del programari
- Ús dels noms, marques o logos dels contribuidors (només 4-Clause i 3-Clause BSD)
🔵 Obliga - Incloure nota del copyright (només 3-Clause i 2-Clause BSD)
- Incloure nota de la llicència (només 3-Clause i 2-Clause BSD)
- Reconèixe als titulars del copyright (només 4-Clause BSD)

4.5. Creative Commons

creative-commonsCreative Commons és una sèrie de llicències de copyright que faciliten al creador compartir la seva obra i definir què es pot fer amb ella. Cal triar-ne la que més ens convé i aquesta definirà en quant oberta o limitada pot ser. Estan enfocades a compartir l'obra, pensades per anar afegint limitacions a cada capa:

Creative Commons zero (CC0):

Enllaç a la llicència https://creativecommons.org/publicdomain/zero/1.0/legalcode
Resum Ho pots fer tot amb ella, però l'autoria no es transfereix
🟢 Permet - Ús comercial
- Ús privat
- Modificar i crear derivats
- Distribuir l'original o derivats
🔴 Prohibeix - L'usuari final no pot responsabilitzar als contribuidors del programari
- Ús dels noms, marques o logos dels contribuidors
- El creador manté tots els drets de patents
🔵 Obliga No obliga.

Creative Commons Attribution (CC BY 4.0):

Enllaç a la llicència https://creativecommons.org/licenses/by/4.0/
Resum Ho pots fer tot amb ella, sempre que s'anuncii l'autoria
🟢 Permet - Ús comercial
- Modificar i crear derivats
- Distribuir l'original o derivats
🔴 Prohibeix - Sub-Llicenciar
🔵 Obliga - S'ha d'anunciar explícitament l'autoria del programari
- Incloure nota del copyright
- Enumerar els canvis sobre el codi original

Creative Commons Attribution-ShareAlike (CC BY-SA 4.0):

Enllaç a la llicència https://creativecommons.org/licenses/by-sa/4.0/
Resum Ho pots fer tot amb ella, sempre que s'anuncii l'autoria. Ademés, les derivades es distribuiran sota la mateixa llicència
🟢 Permet - Ús comercial
- Modificar i crear derivats
- Distribuir l'original o derivats
🔴 Prohibeix - Sub-Llicenciar
🔵 Obliga - S'ha d'anunciar explícitament l'autoria del programari
- Incloure nota del copyright
- Enumerar els canvis sobre el codi original

Creative Commons Attribution-NonCommercial (CC BY-NC 4.0):

Enllaç a la llicència https://creativecommons.org/licenses/by-nc/4.0/
Resum Ho pots fer tot amb ella, sempre que s'anuncii l'autoria. Ademés, no es permet fer-ne un ús comercial
🟢 Permet - Modificar i crear derivats
- Distribuir l'original o derivats
🔴 Prohibeix - Ús comercial
- Sub-Llicenciar
🔵 Obliga - S'ha d'anunciar explícitament l'autoria del programari
- Incloure nota del copyright
- Enumerar els canvis sobre el codi original

Creative Commons Attribution-NoDerivatives (CC BY-ND 4.0):

Enllaç a la llicència https://creativecommons.org/licenses/by-nd/4.0/
Resum Ho pots fer tot amb ella, sempre que s'anuncii l'autoria. Ademés, no es permet fer-ne derivades
🟢 Permet - Ús comercial
- Distribuir l'original
🔴 Prohibeix - Modificar i crear derivats
- Sub-Llicenciar
🔵 Obliga - S'ha d'anunciar explícitament l'autoria del programari
- Incloure nota del copyright
- Enumerar els canvis sobre el codi original

Altres

També es poden fer altres combinacions de les anteriors:

5. Conclusió

Jo personalment em sento superat pel ventall de llicències que disposem. Mentre feia l'article em costava d'entendre les petites diferències entre elles, i en algun moment he dit "prou", o podria estar aquí un parell de mesos enumerant-les. El que trec d'aquest exercici és:

  • La varietat ve donada per la quantitat de permutacions de permisos i limitacions que li podem donar a un programari.
  • Hem de seure una estona per analitzar bé la finalitat del nostre programari i com volem que sigui distribuït. No hi ha (només) una llicència que ens valgui.
  • S'ha suat molt per arribar a un moment en que trobem normal el programari lliure. En aquest camí recorregut els programadors hem hagut d'evangelitzar de valent, i encara queda un bon tros per que la societat entengui que es pot guanyar diners amb un producte i al mateix temps compartinr el coneixement.

Un pensament més: He estat uns dies per confeccionar aquest article. La informació és a vegades una mica confusa. Si trobes que hi ha algun error en l'article no dubtis en contactar-me, no descarto que hi hagi alguna errada i per això enllaço les llicències originals i les referencies en la secció següent.

Referències

Previous Post Next Post