# Mozilla Public License

La Mozilla Public License (MPL) è una licenza di software libero. La versione 1.0 fu sviluppata da Mitchell Baker quando lei lavorava come avvocato alla Netscape Communications e la versione 1.1 quando era alla Mozilla Foundation. La MPL è stata concepita come una versione ibridata di una licenza BSD modificata e la GNU General Public License.

## Adozioni

La MPL è la licenza della Mozilla Application Suite, di Mozilla Firefox, di Mozilla Thunderbird e di altro software Mozilla. Adobe annunciò di usare la MPL per licenziare la sua linea di prodotti Flex per la fine del 2007.
La MPL è stata adattata da altri come licenza per i loro programmi, tra i più famosi, Sun Microsystems, per la Common Development and Distribution License per OpenSolaris, la versione open source del sistema operativo Solaris 10.

## Storia

La versione 1.0
La versione 1.0 della MPL è stata scritta da Mitchell Baker nel 1998 mentre lavorava come avvocato alla Netscape Communications . Netscape sperava di creare una strategia open source per creare un proprio web browser, che avrebbe permesso di competere meglio con quello della Microsoft, Internet Explorer. Per coprire il codice del browser, la compagnia elaborò una licenza nota come la Netscape Public License (NPL), che includeva una clausola che permetteva anche a un codice sviluppato apertamente di essere teoricamente ri-licenziato come proprietario. La possibilità di Netscape di accettare codice da altri solo per rivendicarlo esclusivamente con una nuova licenza ricevette ampie critiche dalla community open source. Nel frattempo, Baker sviluppò una seconda licenza simile alla NPL, ma con caratteristiche di copyleft per assicurare che i contributi rimanessero open source. Fu chiamata “Mozilla Public License”, e anche se è stato originariamente previsto solo per software che integravano moduli di base coperti dalla NPL, diventò molto più popolare della NPL e, infine, ottenne l'approvazione dalla Open Source Initiative. In meno di un anno, Baker e la Mozilla Foundation apportarono dei cambiamenti alla MPL, pubblicando la versione 1.1. Questa revisione fu redatta attraverso un processo aperto che teneva in considerazione i giudizi sia dai collaboratori istituzionali, che da quelli individuali. L'obiettivo primario era di chiarificare i termini riguardanti i brevetti e permettere la licenza multipla, per incoraggiare una cooperazione con gli sviluppatori che preferivano le licenze più rigorose come la GPL (versione 2). All'inizio del 2010, dopo più di un decennio senza modifiche, iniziò un open process per creare la versione 2.0 della MPL. Nel corso dei 21 mesi successivi, la MPL cambiò non solo per rendere la licenza più chiara e facile da applicare, ma anche per raggiungere la compatibilità con le licenze GPL (versione 3) e Apache. Il team di revisione fu supervisionato dalla Baker e coordinato da Luis Villa con il supporto chiave di Gervase Markham e Harvey Anderson. Pubblicarono tre bozze alfa, due bozze beta e due release per i commenti prima di rilasciare la versione finale 2.0 il 3 gennaio 2012.
La versione 1.1
La v1.1 è una modifica dell'originale v1.0 e come ogni licenza, concede diritti sotto certe condizioni. A differenza di altre licenze open source, la MPL divide la concessione dei diritti in due sezioni: una relativa alla concessione dei diritti da parte dell'autore iniziale del codice e un'altra relativa alla concessione di diritti di altre persone che hanno aggiunto del codice al lavoro dell'autore iniziale.
L'autore iniziale concede i seguenti diritti:
* usare, riprodurre, modificare, visualizzare, eseguire, sotto-licenziare e distribuire la sorgente, modificare le versioni della sorgente;
* diritti di brevetto per utilizzare e rendere disponibile il codice (se rilevante);
* di distribuire i lavori che contengono combinazioni di codice iniziale con del codice nuovo e di licenziare il nuovo codice nel modo che il distributore preferisce.
Il contributore, invece, concede i seguenti diritti leggermente diversi da quelli dell'autore iniziale:
* usare, riprodurre, modificare, visualizzare, eseguire, sotto-licenziare e distribuire la sorgente;
* diritti di brevetto per utilizzare e rendere disponibili sia le modifiche sia l'intero lavoro (codice originale più le modifiche)
* di distribuire i lavori che contengono combinazioni di codice iniziale con del codice nuovo e di licenziare il nuovo codice nel modo che il distributore preferisce. Entrambe queste concessioni sono però regolate dalle seguenti condizioni:
** tutte le copie distribuite (originali o modificate) devono includere il codice sorgente o suggerire come ricavarlo;
** tutte le modifiche devono essere accompagnate da una documentazione in cui vi è un'opportuna descrizione delle modifiche apportate;
** i diritti di brevetto necessari per operare il software devono chiaramente essere descritti nella documentazione, di cui si è parlato nel punto precedente;
** tutte le copie del codice (originali o modificate) devono avere ha dichiarazione di copyright e un'esclusione di garanzie allegate;
** tutti i file modificati devono essere distribuiti sotto la MPL. Nuovi file contenenti del codice completamente nuovo devono essere distribuiti sotto la MPL. Come si può notare da queste concessioni e clausole, la MPL differisce significativamente dalla GPL. La differenza sta nel fatto che la MPL disciplina il modo in cui le opere contenenti il codice con licenza MPL possono essere distribuite. Ad esempio, chiunque può prendere un lavoro sotto licenza MPL e sviluppare su di esso con nuovi componenti. Il lavoro risultante può essere distribuito con la MPL che copre l'uso del lavoro originale e qualsiasi licenza che copra il resto. In questo modo un'azienda può aggiungere componenti proprietari ad un lavoro sotto licenza MPL e in questo modo creare un prodotto a sua volta proprietario.
La versione 2.0
Dodici anni dopo la creazione dell’originale Mozilla Public License, la Mozilla Foundation ha deciso che alcune questioni andavano affrontate con questa nuova licenza. All'inizio del 2010 hanno messo in atto un processo di consultazione (nello stesso modo in cui avevano sviluppato e rilasciato il software) che avrebbe inviato l’input da parte dei membri interessati del pubblico e altre organizzazioni. Tra le questioni che la Fondazione Mozilla ha voluto affrontare ci sono: la compatibilità del codice MPL con il sottocodice di altre popolari licenze FOSS (Free and Open Source Software) e la chiarezza e la specificità US del linguaggio del MPL v1.1. Nel corso di quasi due anni, tre versioni Alpha, due versioni beta e due candidati al rilascio, una grande comunità di parti interessate ha lavorato per migliorare e modernizzare la licenza.
Caratteristiche principali della MPL v2.0
La disposizione copyleft del MPLv2.0 è “debole”, il che significa che copre un sottoinsieme di lavori che sono “basati su” il suo codice coperto. Come il suo predecessore la regola che determina se un adattamento specifico deve supportare la MPLv2.0 o no si basa sulle divisioni dei file all’interno del software. I file adattati devono rimanere MPLv2.0, ma i file completamente nuovi possono avere una licenza scelta dall’adattatore. La MPL v2.0 permette anche che il suo codice coperto sia incorporato in progetti sotto uno specifico set di altre licenze secondarie FOSS ampliando così la compatibilità che copre il software.
Il software che è stato distribuito sotto la MPL v1.1può essere distribuito automaticamente sotto la MPL v2.0, le nuove funzionalità di compatibilità hanno sollevato una domanda interessante: cosa succede se il proprietario originale non desidera questa compatibilità estesa, con le relative implicazioni che il suo codice potrebbe finire all'interno di un progetto con una licenza diversa? La MPL v2.0 si occupa di ciò fornendo un avviso supplementare che può essere aggiunto al software che copre, affermando che l’autore non desidera che le caratteristiche di compatibilità della licenza siano utilizzate sul suo codice. Quando aggiorniamo un pezzo di software dal MPL v1.1 a MPL v2.0, solo l’originale proprietario del codice può decidere che tale avviso non deve essere applicato. Se qualcuno diverso dall’originale proprietario sta aggiornando la licenza, la notifica deve essere inclusa.
A tal fine la MPL v2.0 ha modificato le condizioni sulla cessazione della licenza di brevetto. Queste portano la licenza ad essere compatibile con la licenza Apache v2, e permettono quindi al codice Apache License v2 di essere incorporato direttamente nei file coperti da MPL v2.0. Per entrambe queste misure di compatibilità sono importanti per realizzare i loro limiti. Permettono al codice Apache License v2 di essere usato nei programmi di MPL v2.0, e il codice MPL v2.0 è usato in determinate condizioni nei programmi di varie versioni della GNU-GPL. Non è però consentita la combinazione di codice nella direzione opposta.
Così come la compatibilità espansa, la MPL v2.0 fornisce un linguaggio legale modificato per essere adattato meglio agli usi e alle leggi per gli stati al di fuori degli Stati Uniti. Nella riscrittura, la licenza è stata resa più breve e chiara.

## Condizioni

La licenza è considerata come un debole copyleft, che significa che copre un sottoinsieme di opere basate sul codice coperto. In particolare, il codice sorgente copiato o modificato sotto la licenza MPL deve rimanere sotto MPL. Questo rende la MPL un compromesso tra la Licenza MIT, o quella BSD, che permettono di ri-licenziare i lavori derivati come proprietari, e la licenza GPL, che richiedono che l'intero lavoro, comprese le nuove parti aggiunte, rimangano sotto la GPL.
A differenza delle forti licenze copyleft, si può creare e distribuire un'Opera Maggiore (si intende un'opera che combina Software Coperto con altro materiale, in un file separato o più file, che non costituisce Software Coperto) sotto termini di propria scelta, a patto che siano conformi ai requisiti della licenza per il software coperto. Se l'opera maggiore è una combinazione di software coperto con un'opera disciplinata da una o più licenze secondarie, e il software coperto non è incompatibile con licenze secondarie, la MPL permette di distribuire ulteriormente tale software coperto sotto i termini di tale licenza secondaria, in modo che il destinatario del lavoro maggiore può, a propria discrezione, ulteriormente distribuire il software coperto sotto i termini della presente licenza o tale licenza secondaria (sezione 3.3 della licenza MPL). Per esempio, Netscape 6 e le versioni successive sono versioni proprietarie del Mozilla Application Suite. Per queste versioni di Netscape, AOL Time Warner esercitava anche i diritti esclusivi su versioni proprietarie che la Netscape Public License ha fornito da sé.
Non si possono rimuovere o alterare la sostanza degli avvisi di licenza (comprese le note di copyright, brevetti, avvisi di garanzia, le esclusioni o limitazioni di responsabilità) contenuti nel codice sorgente del software coperto, ad eccezione dell'alterazione di avvisi di licenza nella misura necessaria per rimediare a note inesattezze fattuali.

## Compatibilità con altre licenze

La versione MPL 2.0 è compatibile sia con la licenza Apache, sia con la GPL (GNU GPLv2, GNU GPLv2.1, GNU Affero GPL v3 e versioni successive). Tuttavia, al contrario della licenza X11, la versione 1.1 aveva alcune "complesse restrizioni" che la rendevano incompatibile con la GPL. Nonostante la versione 1.1 includesse una clausola (Sezione 13) per provvedere a lavorare sotto licenze secondarie (incluse la GPL o la GPL-compatibile), la MPL 1.1 e il codice GPL non potevano essere connessi legalmente, permettendo alla Free Software Foundation di scoraggiare l'uso della MPL 1.1. Per queste ragioni, le prime versioni di Mozilla Suite e Firefox furono rilasciate sotto licenze multiple (MPL, GPL e LGPL).
La Free Software Foundation considera la licenza una free software license, ma non una forte licenza copyleft. La MPL è stata approvata dalla Open Source Initiative come una licenza di software open source.

## Licenze derivate dalla MPL

* Common Development and Distribution License
* Sun Public License
* gSOAP Public License
* AROS Public License (dall'Aros Research Operating System)
* SugarCRM Public License
* Common Public Attribution License
* Erlang Public License
* Celtx Public License
* OpenMRS Public License
* Yahoo! Public License