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 10 Regole per licenziare il kernel Linux 11 ===================================== 12 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. 18 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. 22 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:: 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 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. 37 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. 46 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. 52 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 61 https://spdx.org/ 62 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/. 68 69 Sintassi degli identificatori di licenza 70 ---------------------------------------- 71 72 1. 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 82 2. 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 104 3. 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 164 Identificatori di licenza 165 ------------------------- 166 167 Le licenze attualmente in uso, così come le licenze aggiunte al kernel, possono 168 essere categorizzate in: 169 170 1. _`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 252 2. 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 297 3. 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 `Metatag`_. 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 345 4. _`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 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/>`_. 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 ============================= =============================================
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.