Cosa sono i modelli di licenza multipli nel software?

Antonio Musarra - Oct 6 - - Dev Community

Nel mondo del software, la scelta di una licenza rappresenta un passaggio cruciale nello sviluppo e nella distribuzione di un prodotto. Tuttavia, in alcuni casi, gli sviluppatori decidono di adottare un approccio più flessibile, optando per modelli di licenza multipli. Questa strategia permette al software di essere distribuito sotto diverse licenze, a seconda delle esigenze dell’utente o del contesto di utilizzo.

A settembre del 2023 ho deciso di archiviare il progetto liferay-portal-database-all-in-one-support e uno dei motivi principali che ha spinto questa mia azione riguardava proprio l’adozione dei modelli di licenza multipli da parte del progetto Liferay Portal.

In questo articolo esploreremo quali sono gli aspetti essenziali dei modelli di licenza multipli, il loro funzionamento, i vantaggi e gli svantaggi, nonché alcuni casi d’uso reali.

Cosa sono?

I modelli di licenza multipli si riferiscono alla pratica di rilasciare un software sotto più di una licenza. Questo significa che gli utenti o le aziende possono scegliere tra diverse licenze, ognuna delle quali offre diritti e restrizioni diversi. Le ragioni per adottare un approccio del genere sono molteplici e spesso includono la volontà di massimizzare la diffusione del software, soddisfare le esigenze di diversi mercati, o rispondere a differenti contesti normativi e commerciali.

Tipi di modelli di licenza multipli

Esistono diverse configurazioni per i modelli di licenza multipli.

  1. Dual Licensing : Questa è la forma più comune di licenza multipla. In un modello di licenza duale, il software viene rilasciato sotto due licenze distinte, una delle quali è spesso una licenza open-source, come la GPL (General Public License), e l’altra è una licenza commerciale. Gli utenti possono scegliere di utilizzare il software secondo i termini della licenza open-source o di acquistare una licenza commerciale che offre vantaggi aggiuntivi, come l’assistenza tecnica o il diritto di creare software proprietario basato sul codice.

  2. Licenza con Eccezione : Alcuni sviluppatori rilasciano il software sotto una licenza principale open-source, con delle eccezioni che permettono un utilizzo più ampio del codice. Ad esempio, un software potrebbe essere rilasciato sotto la GPL con un’eccezione che permette l’integrazione con software proprietari senza imporre la stessa licenza a quest’ultimo.

  3. Licenza Tripla o Multipla : In questo modello, il software è rilasciato sotto tre o più licenze, offrendo una maggiore flessibilità. Ad esempio, un progetto potrebbe essere disponibile sotto la GPL, la LGPL (Lesser General Public License) e una licenza commerciale, permettendo agli utenti di scegliere quella che meglio si adatta alle loro necessità.

Vantaggi dei modelli di licenza multipli

I modelli di licenza multipli offrono una serie di vantaggi sia per gli sviluppatori che per gli utenti.

  1. Flessibilità : Gli sviluppatori possono soddisfare le esigenze di diversi utenti o mercati, aumentando il potenziale di adozione del software.

  2. Monetizzazione : La combinazione di licenze open-source e commerciali permette agli sviluppatori di attrarre una vasta base di utenti, pur mantenendo la possibilità di monetizzare attraverso licenze commerciali.

  3. Adozione da Parte delle Aziende : Molte aziende preferiscono utilizzare software con licenze commerciali per motivi di supporto e conformità legale. Offrire un’opzione commerciale può facilitare l’adozione da parte di queste aziende.

  4. Contributo alla Comunità : L’uso di una licenza open-source consente alla comunità di contribuire al progetto, migliorando il software e beneficiando al contempo di un feedback più ampio.

Svantaggi

Nonostante i numerosi vantaggi, i modelli di licenza multipli non sono privi di critiche.

  1. Confusione : L’esistenza di più licenze può creare confusione tra gli utenti, specialmente se non sono esperti in materia legale.

  2. Complessità Legale : Gestire più licenze può comportare una maggiore complessità legale, sia per gli sviluppatori che per gli utenti, che devono assicurarsi di rispettare i termini di tutte le licenze applicabili.

  3. Rischio di Forking : In alcuni casi, i modelli di licenza multipli possono incentivare la creazione di fork del software, in particolare se una parte della comunità non è d’accordo con le condizioni delle licenze commerciali.

I punti sopra indicati evidenziano come i modelli di licenza multipli, pur offrendo flessibilità e opportunità, possano anche introdurre sfide significative nella gestione e nell’adozione del software.

Esempi di applicazione e note pratica

Alcuni dei più noti software che utilizzano modelli di licenza multipli includono:

MySQL : Questo celebre sistema di gestione di database è stato rilasciato sotto la GPL, ma è disponibile anche con una licenza commerciale per coloro che desiderano incorporare il database in applicazioni proprietarie senza rilasciare il codice sorgente.

Qt : La libreria Qt, utilizzata per lo sviluppo di interfacce grafiche, è disponibile sotto diverse licenze, inclusa una licenza GPL, LGPL, e una licenza commerciale.

Mozilla Firefox : Anche se principalmente rilasciato sotto la MPL (Mozilla Public License), Firefox offre componenti disponibili sotto altre licenze, come la GPL e la LGPL, per favorire l’integrazione e l’utilizzo in vari contesti.

Prendendo in considerazione il progetto Liferay Portal, anch’esso fa uso dell’approccio dual-licensing di cui riporto un breve estratto dal file LICENSING.markdown.

This software is available to you under a dual-licensing approach, whereby you may choose under any of the following options:

- **FOSS [GNU Lesser General Public License v2.1 or later][lgpl-2.1-or-later]** – this means anyone may use it under either LGPL-2.1 or any later version of LGPL. Currently the only newer version is LGPL-3.0, but should the [FSF][fsf] in the future adopt a newer version, you will be able to choose that as well;
- **proprietary [EULA: Liferay Digital Experience Platform And Certain Applications (2002306_GL)][dxp_eula]**, available through _[Liferay Enterprise Services Agreement][esa]_ – this additional option is intended for Liferay's subscription customers. Should you wish to become a subscription customer, contact Liferay at <https://www.liferay.com/contact-sales>.

In addition, you should be aware that even if you opt to use the code under the LGPL-2.1 license (instead of LGPL-3.0), Liferay is a signatory of the [GPL Cooperation Commitment][gplcc]. Meaning that in case you, by chance, violated the LGPL-2.1, we would apply the much more friendly grace period and automatic license reinstatement from the GPL-3.0. For more info, see [our public commitment][gplcc_liferay] and this [blog post][gplcc_blog].

## SPDX and REUSE standards

The above licensing situation is expressed in [SPDX language][spdx_id] with the following unambiguous identifier, which you can find in every source code file that is released to you under these licenses:

`SPDX-License-Identifier: (LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06)`

You can find the texts of both licenses in the `LICENSES/` folder in the root of this repository/package, with the SPDX ID of each license as the files base name, specifically in:

- [LICENSES/LGPL-2.1-or-later.txt](LICENSES/LGPL-2.1-or-later.txt)
- [LICENSES/LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06.txt](LICENSES/LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06.txt)

This is in line with the [REUSE Software 3.0 specification][reuse] of community best practices regarding standardised declaring of copyright and licensing information for software projects.
Enter fullscreen mode Exit fullscreen mode

Licensing.markdown

L’intestazione dei file sorgenti (indicata a seguire) riporta le due license mostrate nell’estratto precedente. Le licenze sono espresse in formato SPDX language come illustrato enll’esempio seguente per il file sorgente OracleDB.java.

/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/ 
Enter fullscreen mode Exit fullscreen mode

OracleDB.java

Se notate, le due licenze sono indicate con la chiave “ OR ”, significa che il codice sorgente è rilasciato sotto una licenza duale, e chi utilizza il codice ha la possibilità di scegliere quale delle due licenze adottare. L’utente potrà quindi scegliere se rispettare i termini della licenza LGPL-2.1-or-later oppure quelli della licenza LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06. Ogni licenza ha le proprie condizioni e obblighi, quindi la scelta dell’utente può dipendere da quale licenza è più adatta al loro uso specifico.

Oltre alla chiave “OR”, esistono altre chiavi o combinazioni che possono essere utilizzate per indicare diverse modalità di licenza del codice sorgente, anche se sono meno comuni. Ecco una panoramica delle opzioni:

1. AND:

  • Significato : Se le licenze sono indicate con la chiave “AND” (esempio: “GPL-3.0 AND MIT”), significa che chi utilizza il codice deve rispettare entrambe le licenze contemporaneamente.

  • Implicazioni : Questo scenario richiede che l’utente soddisfi i requisiti di tutte le licenze applicabili. Questo può essere complicato, soprattutto se le licenze hanno condizioni che potrebbero essere difficili da conciliare.

Esempio :

  • GPL-3.0 AND MIT : L’utente deve rispettare i termini della GPL-3.0, che impone il rilascio del codice derivato sotto la stessa licenza, e anche i termini della licenza MIT, che potrebbe essere più permissiva. Di fatto, la GPL-3.0 è la licenza più restrittiva e quindi le sue condizioni prevalgono, ma bisogna comunque rispettare entrambe.

2. WITH:

  • Significato : La chiave “WITH” viene utilizzata in combinazione con clausole aggiuntive o eccezioni.

  • Implicazioni : Questa chiave indica che il codice è licenziato sotto una licenza principale, ma con alcune modifiche o eccezioni specifiche.

Esempio :

  • GPL-3.0 WITH Classpath Exception : Questa combinazione indica che il codice è rilasciato sotto la GPL-3.0, ma con un’eccezione specifica (la Classpath Exception) che consente un utilizzo più flessibile del codice in alcuni contesti, come il linking con software proprietario.

3. Dual/Multi-Licensing (senza chiavi specifiche):

  • Descrizione : Alcuni progetti possono essere rilasciati con più licenze, ma senza usare chiavi specifiche come “OR” o “AND”. In questi casi, le modalità di scelta o combinazione delle licenze vengono spiegate in dettaglio nella documentazione del progetto.

  • Implicazioni : La chiarezza delle condizioni di licenza dipende fortemente dalla documentazione fornita.

4. Composite Licensing:

  • Descrizione : In alcuni casi complessi, il codice potrebbe essere soggetto a una combinazione di licenze per diverse parti del progetto. Ad esempio, una parte del codice potrebbe essere rilasciata sotto una licenza e un’altra parte sotto un’altra.

  • Implicazioni : Gli utenti devono fare attenzione a rispettare le licenze specifiche applicabili a ciascuna parte del codice.

È essenziale per chi utilizza il codice comprendere queste combinazioni per garantire la conformità alle condizioni legali richieste.

Conclusioni

I modelli di licenza multipli rappresentano una strategia versatile che permette di combinare i vantaggi del software open-source con le opportunità commerciali. L’uso di chiavi come “OR”, “AND” e “WITH” permette di definire con precisione come devono essere applicate le licenze in un progetto di software.

L’adozione di modelli multipli, sebbene possano presentare alcune sfide, offrono un mezzo efficace per adattarsi a diversi mercati e contesti normativi. Per gli sviluppatori, la chiave del successo con questo modello risiede nella trasparenza e nella chiarezza nella comunicazione delle condizioni di licenza, assicurando che gli utenti comprendano appieno le opzioni a loro disposizione.

Risorse

  1. Open Source Initiative (OSI)opensource.org
  • L’OSI è l’organizzazione di riferimento per la certificazione delle licenze open-source. Il sito contiene risorse educative, articoli e documenti su varie licenze, comprese quelle multiple.
  1. Free Software Foundation (FSF)fsf.org
  • La FSF offre risorse approfondite sulle licenze software libere, inclusa la GPL, e sulle modalità di rilascio del software sotto licenze multiple.
  1. Understanding Open Source and Free Software Licensing di Andrew M St Laurent (Autore)
  • Un testo essenziale per chiunque voglia capire le differenze tra le licenze open-source e free software. Include esempi pratici di licenze multiple e casi d’uso reali.
  1. The Cathedral & the Bazaar – Musings on Linux & Open Source by an Accidental Revolutionary di Eric Raymond (Autore)
  • Anche se non specificamente focalizzato sulle licenze multiple, questo libro esplora la filosofia open-source e le implicazioni pratiche del rilascio di software con licenze aperte, toccando anche le dinamiche legate alla scelta delle licenze.

L'articolo Cosa sono i modelli di licenza multipli nel software? sembra essere il primo su Antonio Musarra's Blog.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player