1 .. SPDX-License-Identifier: GPL-2.0
3 .. include:: ../disclaimer-ita.rst
5 :Original: :ref:`Documentation/process/license-rules.rst <kernel_licensing>`
6 :Translator: Federico Vaga <federico.vaga@vaga.pv.it>
8 .. _it_kernel_licensing:
10 Regole per licenziare il kernel Linux
11 =====================================
13 Il kernel Linux viene rilasciato sotto i termini definiti dalla seconda
14 versione della licenza *GNU General Public License* (GPL-2.0), di cui una
15 copia è disponibile nel file LICENSES/preferred/GPL-2.0; a questo si
16 aggiunge eccezione per le chiamate di sistema come descritto in
17 LICENSES/exceptions/Linux-syscall-note; tutto ciò è descritto nel file COPYING.
19 Questo documento fornisce una descrizione su come ogni singolo file sorgente
20 debba essere licenziato per far si che sia chiaro e non ambiguo. Questo non
21 sostituisce la licenza del kernel.
23 La licenza descritta nel file COPYING si applica ai sorgenti del kernel nella
24 loro interezza, quindi i singoli file sorgenti possono avere diverse licenze ma
25 devono essere compatibili con la GPL-2.0::
27 GPL-1.0+ : GNU General Public License v1.0 o successiva
28 GPL-2.0+ : GNU General Public License v2.0 o successiva
29 LGPL-2.0 : GNU Library General Public License v2
30 LGPL-2.0+ : GNU Library General Public License v2 o successiva
31 LGPL-2.1 : GNU Lesser General Public License v2.1
32 LGPL-2.1+ : GNU Lesser General Public License v2.1 o successiva
34 A parte questo, i singolo file possono essere forniti con una doppia licenza,
35 per esempio con una delle varianti compatibili della GPL e alternativamente con
36 una licenza permissiva come BSD, MIT eccetera.
38 I file d'intestazione per l'API verso lo spazio utente (UAPI) descrivono
39 le interfacce usate dai programmi, e per questo sono un caso speciale.
40 Secondo le note nel file COPYING, le chiamate di sistema sono un chiaro
41 confine oltre il quale non si estendono i requisiti della GPL per quei
42 programmi che le usano per comunicare con il kernel. Dato che i file
43 d'intestazione UAPI devono poter essere inclusi nei sorgenti di un
44 qualsiasi programma eseguibile sul kernel Linux, questi meritano
45 un'eccezione documentata da una clausola speciale.
47 Il modo più comune per indicare la licenza dei file sorgenti è quello di
48 aggiungere il corrispondente blocco di testo come commento in testa a detto
49 file. Per via della formattazione, dei refusi, eccetera, questi blocchi di
50 testo sono difficili da identificare dagli strumenti usati per verificare il
51 rispetto delle licenze.
53 Un'alternativa ai blocchi di testo è data dall'uso degli identificatori
54 *Software Package Data Exchange* (SPDX) in ogni file sorgente. Gli
55 identificatori di licenza SPDX sono analizzabili dalle macchine e sono precisi
56 simboli stenografici che identificano la licenza sotto la quale viene
57 licenziato il file che lo include. Gli identificatori di licenza SPDX sono
58 gestiti del gruppo di lavoro SPDX presso la Linux Foundation e sono stati
59 concordati fra i soci nell'industria, gli sviluppatori di strumenti, e i
60 rispettivi gruppi legali. Per maggiori informazioni, consultate
63 Il kernel Linux richiede un preciso identificatore SPDX in tutti i file
64 sorgenti. Gli identificatori validi verranno spiegati nella sezione
65 `Identificatori di licenza`_ e sono stati copiati dalla lista ufficiale di
66 licenze SPDX assieme al rispettivo testo come mostrato in
67 https://spdx.org/licenses/.
69 Sintassi degli identificatori di licenza
70 ----------------------------------------
74 L'identificativo di licenza SPDX dev'essere posizionato come prima riga
75 possibile di un file che possa contenere commenti. Per la maggior parte
76 dei file questa è la prima riga, fanno eccezione gli script che richiedono
77 come prima riga '#!PATH_TO_INTERPRETER'. Per questi script l'identificativo
78 SPDX finisce nella seconda riga.
84 L'identificativo di licenza SPDX viene aggiunto sotto forma di commento.
85 Lo stile del commento dipende dal tipo di file::
87 sorgenti C: // SPDX-License-Identifier: <SPDX License Expression>
88 intestazioni C: /* SPDX-License-Identifier: <SPDX License Expression> */
89 ASM: /* SPDX-License-Identifier: <SPDX License Expression> */
90 scripts: # SPDX-License-Identifier: <SPDX License Expression>
91 .rst: .. SPDX-License-Identifier: <SPDX License Expression>
92 .dts{i}: // SPDX-License-Identifier: <SPDX License Expression>
94 Se un particolare programma non dovesse riuscire a gestire lo stile
95 principale per i commenti, allora dev'essere usato il meccanismo accettato
96 dal programma. Questo è il motivo per cui si ha "/\* \*/" nei file
97 d'intestazione C. Notammo che 'ld' falliva nell'analizzare i commenti del
98 C++ nei file .lds che venivano prodotti. Oggi questo è stato corretto,
99 ma ci sono in giro ancora vecchi programmi che non sono in grado di
100 gestire lo stile dei commenti del C++.
106 Una <espressione di licenza SPDX> può essere scritta usando l'identificatore
107 SPDX della licenza come indicato nella lista di licenze SPDX, oppure la
108 combinazione di due identificatori SPDX separati da "WITH" per i casi
109 eccezionali. Quando si usano più licenze l'espressione viene formata da
110 sottoespressioni separate dalle parole chiave "AND", "OR" e racchiuse fra
111 parentesi tonde "(", ")".
113 Gli identificativi di licenza per licenze come la [L]GPL che si avvalgono
114 dell'opzione 'o successive' si formano aggiungendo alla fine il simbolo "+"
115 per indicare l'opzione 'o successive'.::
117 // SPDX-License-Identifier: GPL-2.0+
118 // SPDX-License-Identifier: LGPL-2.1+
120 WITH dovrebbe essere usato quando sono necessarie delle modifiche alla
121 licenza. Per esempio, la UAPI del kernel linux usa l'espressione::
123 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
124 // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
126 Altri esempi di usi di WITH all'interno del kernel sono::
128 // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
129 // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
131 Le eccezioni si possono usare solo in combinazione con identificatori di
132 licenza. Gli identificatori di licenza riconosciuti sono elencati nei
133 corrispondenti file d'eccezione. Per maggiori dettagli consultate
134 `Eccezioni`_ nel capitolo `Identificatori di licenza`_
136 La parola chiave OR dovrebbe essere usata solo quando si usa una doppia
137 licenza e solo una dev'essere scelta. Per esempio, alcuni file dtsi sono
138 disponibili con doppia licenza::
140 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
142 Esempi dal kernel di espressioni per file licenziati con doppia licenza
145 // SPDX-License-Identifier: GPL-2.0 OR MIT
146 // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
147 // SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
148 // SPDX-License-Identifier: GPL-2.0 OR MPL-1.1
149 // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT
150 // SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL
152 La parola chiave AND dovrebbe essere usata quando i termini di più licenze
153 si applicano ad un file. Per esempio, quando il codice viene preso da
154 un altro progetto il quale da i permessi per aggiungerlo nel kernel ma
155 richiede che i termini originali della licenza rimangano intatti::
157 // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT
159 Di seguito, un altro esempio dove entrambe i termini di licenza devono
162 // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+
164 Identificatori di licenza
165 -------------------------
167 Le licenze attualmente in uso, così come le licenze aggiunte al kernel, possono
168 essere categorizzate in:
170 1. _`Licenze raccomandate`:
172 Ovunque possibile le licenze qui indicate dovrebbero essere usate perché
173 pienamente compatibili e molto usate. Queste licenze sono disponibile nei
174 sorgenti del kernel, nella cartella::
178 I file in questa cartella contengono il testo completo della licenza e i
179 `Metatag`_. Il nome di questi file è lo stesso usato come identificatore
180 di licenza SPDX e che deve essere usato nei file sorgenti.
184 LICENSES/preferred/GPL-2.0
186 Contiene il testo della seconda versione della licenza GPL e i metatag
189 LICENSES/preferred/MIT
191 Contiene il testo della licenza MIT e i metatag necessari.
195 I seguenti metatag devono essere presenti in un file di licenza:
197 - Valid-License-Identifier:
199 Una o più righe che dichiarano quali identificatori di licenza sono validi
200 all'interno del progetto per far riferimento alla licenza in questione.
201 Solitamente, questo è un unico identificatore valido, ma per esempio le
202 licenze che permettono l'opzione 'o successive' hanno due identificatori
207 L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
212 Testo in formato libero per dare suggerimenti agli utenti. Il testo deve
213 includere degli esempi su come usare gli identificatori di licenza SPDX
214 in un file sorgente in conformità con le linea guida in
215 `Sintassi degli identificatori di licenza`_.
219 Tutto il testo che compare dopo questa etichetta viene trattato
220 come se fosse parte del testo originale della licenza.
224 Valid-License-Identifier: GPL-2.0
225 Valid-License-Identifier: GPL-2.0+
226 SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
228 To use this license in source code, put one of the following SPDX
229 tag/value pairs into a comment according to the placement
230 guidelines in the licensing rules documentation.
231 For 'GNU General Public License (GPL) version 2 only' use:
232 SPDX-License-Identifier: GPL-2.0
233 For 'GNU General Public License (GPL) version 2 or any later version' use:
234 SPDX-License-Identifier: GPL-2.0+
240 SPDX-License-Identifier: MIT
241 SPDX-URL: https://spdx.org/licenses/MIT.html
243 To use this license in source code, put the following SPDX
244 tag/value pair into a comment according to the placement
245 guidelines in the licensing rules documentation.
246 SPDX-License-Identifier: MIT
252 2. Licenze deprecate:
254 Questo tipo di licenze dovrebbero essere usate solo per codice già esistente
255 o quando si prende codice da altri progetti. Le licenze sono disponibili
256 nei sorgenti del kernel nella cartella::
260 I file in questa cartella contengono il testo completo della licenza e i
261 `Metatag`_. Il nome di questi file è lo stesso usato come identificatore
262 di licenza SPDX e che deve essere usato nei file sorgenti.
266 LICENSES/deprecated/ISC
268 Contiene il testo della licenza Internet System Consortium e i suoi
271 LICENSES/deprecated/GPL-1.0
273 Contiene il testo della versione 1 della licenza GPL e i suoi metatag.
277 I metatag necessari per le 'altre' ('other') licenze sono gli stessi
278 di usati per le `Licenze raccomandate`_.
280 Esempio del formato del file::
282 Valid-License-Identifier: ISC
283 SPDX-URL: https://spdx.org/licenses/ISC.html
285 Usage of this license in the kernel for new code is discouraged
286 and it should solely be used for importing code from an already
288 To use this license in source code, put the following SPDX
289 tag/value pair into a comment according to the placement
290 guidelines in the licensing rules documentation.
291 SPDX-License-Identifier: ISC
297 3. Solo per doppie licenze
299 Queste licenze dovrebbero essere usate solamente per codice licenziato in
300 combinazione con un'altra licenza che solitamente è quella preferita.
301 Queste licenze sono disponibili nei sorgenti del kernel nella cartella::
305 I file in questa cartella contengono il testo completo della rispettiva
306 licenza e i suoi `Metatag`_. I nomi dei file sono identici agli
307 identificatori di licenza SPDX che dovrebbero essere usati nei file
312 LICENSES/dual/MPL-1.1
314 Questo file contiene il testo della versione 1.1 della licenza *Mozilla
315 Pulic License* e i metatag necessari::
317 LICENSES/dual/Apache-2.0
319 Questo file contiene il testo della versione 2.0 della licenza Apache e i
324 I requisiti per le 'altre' ('*other*') licenze sono identici a quelli per le
325 `Licenze raccomandate`_.
327 Esempio del formato del file::
329 Valid-License-Identifier: MPL-1.1
330 SPDX-URL: https://spdx.org/licenses/MPL-1.1.html
332 Do NOT use. The MPL-1.1 is not GPL2 compatible. It may only be used for
333 dual-licensed files where the other license is GPL2 compatible.
334 If you end up using this it MUST be used together with a GPL2 compatible
336 To use the Mozilla Public License version 1.1 put the following SPDX
337 tag/value pair into a comment according to the placement guidelines in
338 the licensing rules documentation:
339 SPDX-License-Identifier: MPL-1.1
347 Alcune licenze possono essere corrette con delle eccezioni che forniscono
348 diritti aggiuntivi. Queste eccezioni sono disponibili nei sorgenti del
349 kernel nella cartella::
353 I file in questa cartella contengono il testo completo dell'eccezione e i
354 `Metatag per le eccezioni`_.
358 LICENSES/exceptions/Linux-syscall-note
360 Contiene la descrizione dell'eccezione per le chiamate di sistema Linux
361 così come documentato nel file COPYING del kernel Linux; questo viene usato
362 per i file d'intestazione per la UAPI. Per esempio
363 /\* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note \*/::
365 LICENSES/exceptions/GCC-exception-2.0
367 Contiene la 'eccezione di linking' che permette di collegare qualsiasi
368 binario, indipendentemente dalla sua licenza, con un compilato il cui file
369 sorgente è marchiato con questa eccezione. Questo è necessario per creare
370 eseguibili dai sorgenti che non sono compatibili con la GPL.
372 _`Metatag per le eccezioni`:
374 Un file contenente un'eccezione deve avere i seguenti metatag:
376 - SPDX-Exception-Identifier:
378 Un identificatore d'eccezione che possa essere usato in combinazione con
379 un identificatore di licenza SPDX.
383 L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
388 Una lista di licenze SPDX separate da virgola, che possono essere usate
393 Testo in formato libero per dare suggerimenti agli utenti. Il testo deve
394 includere degli esempi su come usare gli identificatori di licenza SPDX
395 in un file sorgente in conformità con le linea guida in
396 `Sintassi degli identificatori di licenza`_.
400 Tutto il testo che compare dopo questa etichetta viene trattato
401 come se fosse parte del testo originale della licenza.
405 SPDX-Exception-Identifier: Linux-syscall-note
406 SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html
407 SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+
409 This exception is used together with one of the above SPDX-Licenses
410 to mark user-space API (uapi) header files so they can be included
411 into non GPL compliant user-space application code.
412 To use this exception add it with the keyword WITH to one of the
413 identifiers in the SPDX-Licenses tag:
414 SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note
420 SPDX-Exception-Identifier: GCC-exception-2.0
421 SPDX-URL: https://spdx.org/licenses/GCC-exception-2.0.html
422 SPDX-Licenses: GPL-2.0, GPL-2.0+
424 The "GCC Runtime Library exception 2.0" is used together with one
425 of the above SPDX-Licenses for code imported from the GCC runtime
427 To use this exception add it with the keyword WITH to one of the
428 identifiers in the SPDX-Licenses tag:
429 SPDX-License-Identifier: <SPDX-License> WITH GCC-exception-2.0
433 Per ogni identificatore di licenza SPDX e per le eccezioni dev'esserci un file
434 nella sotto-cartella LICENSES. Questo è necessario per permettere agli
435 strumenti di effettuare verifiche (come checkpatch.pl), per avere le licenze
436 disponibili per la lettura e per estrarre i diritti dai sorgenti, così come
437 raccomandato da diverse organizzazioni FOSS, per esempio l'`iniziativa FSFE
438 REUSE <https://reuse.software/>`_.
443 I moduli del kernel necessitano di un'etichetta MODULE_LICENSE(). Questa
444 etichetta non sostituisce le informazioni sulla licenza del codice sorgente
445 (SPDX-License-Identifier) né fornisce informazioni che esprimono o
446 determinano l'esatta licenza sotto la quale viene rilasciato.
448 Il solo scopo di questa etichetta è quello di fornire sufficienti
449 informazioni al caricatore di moduli del kernel, o agli strumenti in spazio
450 utente, per capire se il modulo è libero o proprietario.
452 Le stringe di licenza valide per MODULE_LICENSE() sono:
454 ============================= =============================================
455 "GPL" Il modulo è licenziato con la GPL versione 2.
456 Questo non fa distinzione fra GPL'2.0-only o
457 GPL-2.0-or-later. L'esatta licenza può essere
458 determinata solo leggendo i corrispondenti
461 "GPL v2" Stesso significato di "GPL". Esiste per
464 "GPL and additional rights" Questa è una variante che esiste per motivi
465 storici che indica che i sorgenti di un
466 modulo sono rilasciati sotto una variante
467 della licenza GPL v2 e quella MIT. Per favore
468 non utilizzatela per codice nuovo.
470 "Dual MIT/GPL" Questo è il modo corretto per esprimere il
471 il fatto che il modulo è rilasciato con
472 doppia licenza a scelta fra: una variante
473 della GPL v2 o la licenza MIT.
475 "Dual BSD/GPL" Questo modulo è rilasciato con doppia licenza
476 a scelta fra: una variante della GPL v2 o la
477 licenza BSD. La variante esatta della licenza
478 BSD può essere determinata solo attraverso i
479 corrispondenti file sorgenti.
481 "Dual MPL/GPL" Questo modulo è rilasciato con doppia licenza
482 a scelta fra: una variante della GPL v2 o la
483 Mozilla Public License (MPL). La variante
484 esatta della licenza MPL può essere
485 determinata solo attraverso i corrispondenti
488 "Proprietary" Questo modulo è rilasciato con licenza
489 proprietaria. Questa stringa è solo per i
490 moduli proprietari di terze parti e non può
491 essere usata per quelli che risiedono nei
492 sorgenti del kernel. I moduli etichettati in
493 questo modo stanno contaminando il kernel e
494 gli viene assegnato un flag 'P'; quando
495 vengono caricati, il caricatore di moduli del
496 kernel si rifiuterà di collegare questi
497 moduli ai simboli che sono stati esportati
498 con EXPORT_SYMBOL_GPL().
500 ============================= =============================================