1.. SPDX-License-Identifier: GPL-2.0
2
3.. include:: ../disclaimer-ita.rst
4
5:Original: :ref:`Documentation/process/license-rules.rst <kernel_licensing>`
6:Translator: Federico Vaga <federico.vaga@vaga.pv.it>
7
8.. _it_kernel_licensing:
9
10Regole per licenziare il kernel Linux
11=====================================
12
13Il kernel Linux viene rilasciato sotto i termini definiti dalla seconda
14versione della licenza *GNU General Public License* (GPL-2.0), di cui una
15copia è disponibile nel file LICENSES/preferred/GPL-2.0; a questo si
16aggiunge eccezione per le chiamate di sistema come descritto in
17LICENSES/exceptions/Linux-syscall-note; tutto ciò è descritto nel file COPYING.
18
19Questo documento fornisce una descrizione su come ogni singolo file sorgente
20debba essere licenziato per far si che sia chiaro e non ambiguo. Questo non
21sostituisce la licenza del kernel.
22
23La licenza descritta nel file COPYING si applica ai sorgenti del kernel nella
24loro interezza, quindi i singoli file sorgenti possono avere diverse licenze ma
25devono essere compatibili con la GPL-2.0::
26
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
33
34A parte questo, i singolo file possono essere forniti con una doppia licenza,
35per esempio con una delle varianti compatibili della GPL e alternativamente con
36una licenza permissiva come BSD, MIT eccetera.
37
38I file d'intestazione per l'API verso lo spazio utente (UAPI) descrivono
39le interfacce usate dai programmi, e per questo sono un caso speciale.
40Secondo le note nel file COPYING, le chiamate di sistema sono un chiaro
41confine oltre il quale non si estendono i requisiti della GPL per quei
42programmi che le usano per comunicare con il kernel.  Dato che i file
43d'intestazione UAPI devono poter essere inclusi nei sorgenti di un
44qualsiasi programma eseguibile sul kernel Linux, questi meritano
45un'eccezione documentata da una clausola speciale.
46
47Il modo più comune per indicare la licenza dei file sorgenti è quello di
48aggiungere il corrispondente blocco di testo come commento in testa a detto
49file.  Per via della formattazione, dei refusi, eccetera, questi blocchi di
50testo sono difficili da identificare dagli strumenti usati per verificare il
51rispetto delle licenze.
52
53Un'alternativa ai blocchi di testo è data dall'uso degli identificatori
54*Software Package Data Exchange* (SPDX) in ogni file sorgente.  Gli
55identificatori di licenza SPDX sono analizzabili dalle macchine e sono precisi
56simboli stenografici che identificano la licenza sotto la quale viene
57licenziato il file che lo include.  Gli identificatori di licenza SPDX sono
58gestiti del gruppo di lavoro SPDX presso la Linux Foundation e sono stati
59concordati fra i soci nell'industria, gli sviluppatori di strumenti, e i
60rispettivi gruppi legali. Per maggiori informazioni, consultate
61https://spdx.org/
62
63Il kernel Linux richiede un preciso identificatore SPDX in tutti i file
64sorgenti.  Gli identificatori validi verranno spiegati nella sezione
65`Identificatori di licenza`_ e sono stati copiati dalla lista ufficiale di
66licenze SPDX assieme al rispettivo testo come mostrato in
67https://spdx.org/licenses/.
68
69Sintassi degli identificatori di licenza
70----------------------------------------
71
721. Posizionamento:
73
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.
79
80|
81
822. Stile:
83
84   L'identificativo di licenza SPDX viene aggiunto sotto forma di commento.
85   Lo stile del commento dipende dal tipo di file::
86
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>
93
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++.
101
102|
103
1043. Sintassi:
105
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 "(", ")".
112
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'.::
116
117      // SPDX-License-Identifier: GPL-2.0+
118      // SPDX-License-Identifier: LGPL-2.1+
119
120   WITH dovrebbe essere usato quando sono necessarie delle modifiche alla
121   licenza.  Per esempio, la UAPI del kernel linux usa l'espressione::
122
123      // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
124      // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
125
126   Altri esempi di usi di WITH all'interno del kernel sono::
127
128      // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
129      // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
130
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`_
135
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::
139
140      // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
141
142   Esempi dal kernel di espressioni per file licenziati con doppia licenza
143   sono::
144
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
151
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::
156
157      // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT
158
159   Di seguito, un altro esempio dove entrambe i termini di licenza devono
160   essere rispettati::
161
162      // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+
163
164Identificatori di licenza
165-------------------------
166
167Le licenze attualmente in uso, così come le licenze aggiunte al kernel, possono
168essere categorizzate in:
169
1701. _`Licenze raccomandate`:
171
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::
175
176     LICENSES/preferred/
177
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.
181
182   Esempi::
183
184     LICENSES/preferred/GPL-2.0
185
186   Contiene il testo della seconda versione della licenza GPL e i metatag
187   necessari::
188
189     LICENSES/preferred/MIT
190
191   Contiene il testo della licenza MIT e i metatag necessari.
192
193   _`Metatag`:
194
195   I seguenti metatag devono essere presenti in un file di licenza:
196
197   - Valid-License-Identifier:
198
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
203     validi.
204
205   - SPDX-URL:
206
207     L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
208     la licenza.
209
210   - Usage-Guidance:
211
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`_.
216
217   - License-Text:
218
219     Tutto il testo che compare dopo questa etichetta viene trattato
220     come se fosse parte del testo originale della licenza.
221
222   Esempi::
223
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
227      Usage-Guide:
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+
235      License-Text:
236        Full license text
237
238   ::
239
240      SPDX-License-Identifier: MIT
241      SPDX-URL: https://spdx.org/licenses/MIT.html
242      Usage-Guide:
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
247      License-Text:
248        Full license text
249
250|
251
2522. Licenze deprecate:
253
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::
257
258     LICENSES/deprecated/
259
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.
263
264   Esempi::
265
266     LICENSES/deprecated/ISC
267
268   Contiene il testo della licenza Internet System Consortium e i suoi
269   metatag::
270
271     LICENSES/deprecated/GPL-1.0
272
273   Contiene il testo della versione 1 della licenza GPL e i suoi metatag.
274
275   Metatag:
276
277   I metatag necessari per le 'altre' ('other') licenze sono gli stessi
278   di usati per le `Licenze raccomandate`_.
279
280   Esempio del formato del file::
281
282      Valid-License-Identifier: ISC
283      SPDX-URL: https://spdx.org/licenses/ISC.html
284      Usage-Guide:
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
287        existing project.
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
292      License-Text:
293        Full license text
294
295|
296
2973. Solo per doppie licenze
298
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::
302
303     LICENSES/dual
304
305   I file in questa cartella contengono il testo completo della rispettiva
306   licenza e i suoi `Metatags`_.  I nomi dei file sono identici agli
307   identificatori di licenza SPDX che dovrebbero essere usati nei file
308   sorgenti.
309
310   Esempi::
311
312     LICENSES/dual/MPL-1.1
313
314   Questo file contiene il testo della versione 1.1 della licenza *Mozilla
315   Pulic License* e i metatag necessari::
316
317     LICENSES/dual/Apache-2.0
318
319   Questo file contiene il testo della versione 2.0 della licenza Apache e i
320   metatag necessari.
321
322   Metatag:
323
324   I requisiti per le 'altre' ('*other*') licenze sono identici a quelli per le
325   `Licenze raccomandate`_.
326
327   Esempio del formato del file::
328
329   Valid-License-Identifier: MPL-1.1
330   SPDX-URL: https://spdx.org/licenses/MPL-1.1.html
331   Usage-Guide:
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
335     license using "OR".
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
340   License-Text:
341     Full license text
342
343|
344
3454. _`Eccezioni`:
346
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::
350
351     LICENSES/exceptions/
352
353   I file in questa cartella contengono il testo completo dell'eccezione e i
354   `Metatag per le eccezioni`_.
355
356   Esempi::
357
358      LICENSES/exceptions/Linux-syscall-note
359
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 \*/::
364
365      LICENSES/exceptions/GCC-exception-2.0
366
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.
371
372   _`Metatag per le eccezioni`:
373
374   Un file contenente un'eccezione deve avere i seguenti metatag:
375
376   - SPDX-Exception-Identifier:
377
378     Un identificatore d'eccezione che possa essere usato in combinazione con
379     un identificatore di licenza SPDX.
380
381   - SPDX-URL:
382
383     L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
384     l'eccezione.
385
386   - SPDX-Licenses:
387
388     Una lista di licenze SPDX separate da virgola, che possono essere usate
389     con l'eccezione.
390
391   - Usage-Guidance:
392
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`_.
397
398   - Exception-Text:
399
400     Tutto il testo che compare dopo questa etichetta viene trattato
401     come se fosse parte del testo originale della licenza.
402
403   Esempi::
404
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+
408      Usage-Guidance:
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
415      Exception-Text:
416        Full exception text
417
418   ::
419
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+
423      Usage-Guidance:
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
426	library.
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
430      Exception-Text:
431        Full exception text
432
433Per ogni identificatore di licenza SPDX e per le eccezioni dev'esserci un file
434nella sotto-cartella LICENSES.  Questo è necessario per permettere agli
435strumenti di effettuare verifiche (come checkpatch.pl), per avere le licenze
436disponibili per la lettura e per estrarre i diritti dai sorgenti, così come
437raccomandato da diverse organizzazioni FOSS, per esempio l'`iniziativa FSFE
438REUSE <https://reuse.software/>`_.
439
440_`MODULE_LICENSE`
441-----------------
442
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.
447
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.
451
452   Le stringe di licenza valide per MODULE_LICENSE() sono:
453
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
459				  file sorgenti.
460
461    "GPL v2"			  Stesso significato di "GPL". Esiste per
462				  motivi storici.
463
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.
469
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.
474
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.
480
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
486				  file sorgenti.
487
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().
499
500    ============================= =============================================
501