501 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3.. include:: ../disclaimer-ita.rst4 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 Linux11=====================================12 13Il kernel Linux viene rilasciato sotto i termini definiti dalla seconda14versione della licenza *GNU General Public License* (GPL-2.0), di cui una15copia è disponibile nel file LICENSES/preferred/GPL-2.0; a questo si16aggiunge eccezione per le chiamate di sistema come descritto in17LICENSES/exceptions/Linux-syscall-note; tutto ciò è descritto nel file COPYING.18 19Questo documento fornisce una descrizione su come ogni singolo file sorgente20debba essere licenziato per far si che sia chiaro e non ambiguo. Questo non21sostituisce la licenza del kernel.22 23La licenza descritta nel file COPYING si applica ai sorgenti del kernel nella24loro interezza, quindi i singoli file sorgenti possono avere diverse licenze ma25devono essere compatibili con la GPL-2.0::26 27 GPL-1.0+ : GNU General Public License v1.0 o successiva28 GPL-2.0+ : GNU General Public License v2.0 o successiva29 LGPL-2.0 : GNU Library General Public License v230 LGPL-2.0+ : GNU Library General Public License v2 o successiva31 LGPL-2.1 : GNU Lesser General Public License v2.132 LGPL-2.1+ : GNU Lesser General Public License v2.1 o successiva33 34A parte questo, i singolo file possono essere forniti con una doppia licenza,35per esempio con una delle varianti compatibili della GPL e alternativamente con36una licenza permissiva come BSD, MIT eccetera.37 38I file d'intestazione per l'API verso lo spazio utente (UAPI) descrivono39le interfacce usate dai programmi, e per questo sono un caso speciale.40Secondo le note nel file COPYING, le chiamate di sistema sono un chiaro41confine oltre il quale non si estendono i requisiti della GPL per quei42programmi che le usano per comunicare con il kernel. Dato che i file43d'intestazione UAPI devono poter essere inclusi nei sorgenti di un44qualsiasi programma eseguibile sul kernel Linux, questi meritano45un'eccezione documentata da una clausola speciale.46 47Il modo più comune per indicare la licenza dei file sorgenti è quello di48aggiungere il corrispondente blocco di testo come commento in testa a detto49file. Per via della formattazione, dei refusi, eccetera, questi blocchi di50testo sono difficili da identificare dagli strumenti usati per verificare il51rispetto delle licenze.52 53Un'alternativa ai blocchi di testo è data dall'uso degli identificatori54*Software Package Data Exchange* (SPDX) in ogni file sorgente. Gli55identificatori di licenza SPDX sono analizzabili dalle macchine e sono precisi56simboli stenografici che identificano la licenza sotto la quale viene57licenziato il file che lo include. Gli identificatori di licenza SPDX sono58gestiti del gruppo di lavoro SPDX presso la Linux Foundation e sono stati59concordati fra i soci nell'industria, gli sviluppatori di strumenti, e i60rispettivi gruppi legali. Per maggiori informazioni, consultate61https://spdx.org/62 63Il kernel Linux richiede un preciso identificatore SPDX in tutti i file64sorgenti. Gli identificatori validi verranno spiegati nella sezione65`Identificatori di licenza`_ e sono stati copiati dalla lista ufficiale di66licenze SPDX assieme al rispettivo testo come mostrato in67https://spdx.org/licenses/.68 69Sintassi degli identificatori di licenza70----------------------------------------71 721. Posizionamento:73 74 L'identificativo di licenza SPDX dev'essere posizionato come prima riga75 possibile di un file che possa contenere commenti. Per la maggior parte76 dei file questa è la prima riga, fanno eccezione gli script che richiedono77 come prima riga '#!PATH_TO_INTERPRETER'. Per questi script l'identificativo78 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 stile95 principale per i commenti, allora dev'essere usato il meccanismo accettato96 dal programma. Questo è il motivo per cui si ha "/\* \*/" nei file97 d'intestazione C. Notammo che 'ld' falliva nell'analizzare i commenti del98 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 di100 gestire lo stile dei commenti del C++.101 102|103 1043. Sintassi:105 106 Una <espressione di licenza SPDX> può essere scritta usando l'identificatore107 SPDX della licenza come indicato nella lista di licenze SPDX, oppure la108 combinazione di due identificatori SPDX separati da "WITH" per i casi109 eccezionali. Quando si usano più licenze l'espressione viene formata da110 sottoespressioni separate dalle parole chiave "AND", "OR" e racchiuse fra111 parentesi tonde "(", ")".112 113 Gli identificativi di licenza per licenze come la [L]GPL che si avvalgono114 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 alla121 licenza. Per esempio, la UAPI del kernel linux usa l'espressione::122 123 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note124 // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note125 126 Altri esempi di usi di WITH all'interno del kernel sono::127 128 // SPDX-License-Identifier: GPL-2.0 WITH mif-exception129 // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0130 131 Le eccezioni si possono usare solo in combinazione con identificatori di132 licenza. Gli identificatori di licenza riconosciuti sono elencati nei133 corrispondenti file d'eccezione. Per maggiori dettagli consultate134 `Eccezioni`_ nel capitolo `Identificatori di licenza`_135 136 La parola chiave OR dovrebbe essere usata solo quando si usa una doppia137 licenza e solo una dev'essere scelta. Per esempio, alcuni file dtsi sono138 disponibili con doppia licenza::139 140 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause141 142 Esempi dal kernel di espressioni per file licenziati con doppia licenza143 sono::144 145 // SPDX-License-Identifier: GPL-2.0 OR MIT146 // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause147 // SPDX-License-Identifier: GPL-2.0 OR Apache-2.0148 // SPDX-License-Identifier: GPL-2.0 OR MPL-1.1149 // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT150 // SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL151 152 La parola chiave AND dovrebbe essere usata quando i termini di più licenze153 si applicano ad un file. Per esempio, quando il codice viene preso da154 un altro progetto il quale da i permessi per aggiungerlo nel kernel ma155 richiede che i termini originali della licenza rimangano intatti::156 157 // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT158 159 Di seguito, un altro esempio dove entrambe i termini di licenza devono160 essere rispettati::161 162 // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+163 164Identificatori di licenza165-------------------------166 167Le licenze attualmente in uso, così come le licenze aggiunte al kernel, possono168essere 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 nei174 sorgenti del kernel, nella cartella::175 176 LICENSES/preferred/177 178 I file in questa cartella contengono il testo completo della licenza e i179 `Metatag`_. Il nome di questi file è lo stesso usato come identificatore180 di licenza SPDX e che deve essere usato nei file sorgenti.181 182 Esempi::183 184 LICENSES/preferred/GPL-2.0185 186 Contiene il testo della seconda versione della licenza GPL e i metatag187 necessari::188 189 LICENSES/preferred/MIT190 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 validi200 all'interno del progetto per far riferimento alla licenza in questione.201 Solitamente, questo è un unico identificatore valido, ma per esempio le202 licenze che permettono l'opzione 'o successive' hanno due identificatori203 validi.204 205 - SPDX-URL:206 207 L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti208 la licenza.209 210 - Usage-Guidance:211 212 Testo in formato libero per dare suggerimenti agli utenti. Il testo deve213 includere degli esempi su come usare gli identificatori di licenza SPDX214 in un file sorgente in conformità con le linea guida in215 `Sintassi degli identificatori di licenza`_.216 217 - License-Text:218 219 Tutto il testo che compare dopo questa etichetta viene trattato220 come se fosse parte del testo originale della licenza.221 222 Esempi::223 224 Valid-License-Identifier: GPL-2.0225 Valid-License-Identifier: GPL-2.0+226 SPDX-URL: https://spdx.org/licenses/GPL-2.0.html227 Usage-Guide:228 To use this license in source code, put one of the following SPDX229 tag/value pairs into a comment according to the placement230 guidelines in the licensing rules documentation.231 For 'GNU General Public License (GPL) version 2 only' use:232 SPDX-License-Identifier: GPL-2.0233 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 text237 238 ::239 240 SPDX-License-Identifier: MIT241 SPDX-URL: https://spdx.org/licenses/MIT.html242 Usage-Guide:243 To use this license in source code, put the following SPDX244 tag/value pair into a comment according to the placement245 guidelines in the licensing rules documentation.246 SPDX-License-Identifier: MIT247 License-Text:248 Full license text249 250|251 2522. Licenze deprecate:253 254 Questo tipo di licenze dovrebbero essere usate solo per codice già esistente255 o quando si prende codice da altri progetti. Le licenze sono disponibili256 nei sorgenti del kernel nella cartella::257 258 LICENSES/deprecated/259 260 I file in questa cartella contengono il testo completo della licenza e i261 `Metatag`_. Il nome di questi file è lo stesso usato come identificatore262 di licenza SPDX e che deve essere usato nei file sorgenti.263 264 Esempi::265 266 LICENSES/deprecated/ISC267 268 Contiene il testo della licenza Internet System Consortium e i suoi269 metatag::270 271 LICENSES/deprecated/GPL-1.0272 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 stessi278 di usati per le `Licenze raccomandate`_.279 280 Esempio del formato del file::281 282 Valid-License-Identifier: ISC283 SPDX-URL: https://spdx.org/licenses/ISC.html284 Usage-Guide:285 Usage of this license in the kernel for new code is discouraged286 and it should solely be used for importing code from an already287 existing project.288 To use this license in source code, put the following SPDX289 tag/value pair into a comment according to the placement290 guidelines in the licensing rules documentation.291 SPDX-License-Identifier: ISC292 License-Text:293 Full license text294 295|296 2973. Solo per doppie licenze298 299 Queste licenze dovrebbero essere usate solamente per codice licenziato in300 combinazione con un'altra licenza che solitamente è quella preferita.301 Queste licenze sono disponibili nei sorgenti del kernel nella cartella::302 303 LICENSES/dual304 305 I file in questa cartella contengono il testo completo della rispettiva306 licenza e i suoi `Metatag`_. I nomi dei file sono identici agli307 identificatori di licenza SPDX che dovrebbero essere usati nei file308 sorgenti.309 310 Esempi::311 312 LICENSES/dual/MPL-1.1313 314 Questo file contiene il testo della versione 1.1 della licenza *Mozilla315 Pulic License* e i metatag necessari::316 317 LICENSES/dual/Apache-2.0318 319 Questo file contiene il testo della versione 2.0 della licenza Apache e i320 metatag necessari.321 322 Metatag:323 324 I requisiti per le 'altre' ('*other*') licenze sono identici a quelli per le325 `Licenze raccomandate`_.326 327 Esempio del formato del file::328 329 Valid-License-Identifier: MPL-1.1330 SPDX-URL: https://spdx.org/licenses/MPL-1.1.html331 Usage-Guide:332 Do NOT use. The MPL-1.1 is not GPL2 compatible. It may only be used for333 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 compatible335 license using "OR".336 To use the Mozilla Public License version 1.1 put the following SPDX337 tag/value pair into a comment according to the placement guidelines in338 the licensing rules documentation:339 SPDX-License-Identifier: MPL-1.1340 License-Text:341 Full license text342 343|344 3454. _`Eccezioni`:346 347 Alcune licenze possono essere corrette con delle eccezioni che forniscono348 diritti aggiuntivi. Queste eccezioni sono disponibili nei sorgenti del349 kernel nella cartella::350 351 LICENSES/exceptions/352 353 I file in questa cartella contengono il testo completo dell'eccezione e i354 `Metatag per le eccezioni`_.355 356 Esempi::357 358 LICENSES/exceptions/Linux-syscall-note359 360 Contiene la descrizione dell'eccezione per le chiamate di sistema Linux361 così come documentato nel file COPYING del kernel Linux; questo viene usato362 per i file d'intestazione per la UAPI. Per esempio363 /\* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note \*/::364 365 LICENSES/exceptions/GCC-exception-2.0366 367 Contiene la 'eccezione di linking' che permette di collegare qualsiasi368 binario, indipendentemente dalla sua licenza, con un compilato il cui file369 sorgente è marchiato con questa eccezione. Questo è necessario per creare370 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 con379 un identificatore di licenza SPDX.380 381 - SPDX-URL:382 383 L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti384 l'eccezione.385 386 - SPDX-Licenses:387 388 Una lista di licenze SPDX separate da virgola, che possono essere usate389 con l'eccezione.390 391 - Usage-Guidance:392 393 Testo in formato libero per dare suggerimenti agli utenti. Il testo deve394 includere degli esempi su come usare gli identificatori di licenza SPDX395 in un file sorgente in conformità con le linea guida in396 `Sintassi degli identificatori di licenza`_.397 398 - Exception-Text:399 400 Tutto il testo che compare dopo questa etichetta viene trattato401 come se fosse parte del testo originale della licenza.402 403 Esempi::404 405 SPDX-Exception-Identifier: Linux-syscall-note406 SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html407 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-Licenses410 to mark user-space API (uapi) header files so they can be included411 into non GPL compliant user-space application code.412 To use this exception add it with the keyword WITH to one of the413 identifiers in the SPDX-Licenses tag:414 SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note415 Exception-Text:416 Full exception text417 418 ::419 420 SPDX-Exception-Identifier: GCC-exception-2.0421 SPDX-URL: https://spdx.org/licenses/GCC-exception-2.0.html422 SPDX-Licenses: GPL-2.0, GPL-2.0+423 Usage-Guidance:424 The "GCC Runtime Library exception 2.0" is used together with one425 of the above SPDX-Licenses for code imported from the GCC runtime426 library.427 To use this exception add it with the keyword WITH to one of the428 identifiers in the SPDX-Licenses tag:429 SPDX-License-Identifier: <SPDX-License> WITH GCC-exception-2.0430 Exception-Text:431 Full exception text432 433Per ogni identificatore di licenza SPDX e per le eccezioni dev'esserci un file434nella sotto-cartella LICENSES. Questo è necessario per permettere agli435strumenti di effettuare verifiche (come checkpatch.pl), per avere le licenze436disponibili per la lettura e per estrarre i diritti dai sorgenti, così come437raccomandato da diverse organizzazioni FOSS, per esempio l'`iniziativa FSFE438REUSE <https://reuse.software/>`_.439 440_`MODULE_LICENSE`441-----------------442 443 I moduli del kernel necessitano di un'etichetta MODULE_LICENSE(). Questa444 etichetta non sostituisce le informazioni sulla licenza del codice sorgente445 (SPDX-License-Identifier) né fornisce informazioni che esprimono o446 determinano l'esatta licenza sotto la quale viene rilasciato.447 448 Il solo scopo di questa etichetta è quello di fornire sufficienti449 informazioni al caricatore di moduli del kernel, o agli strumenti in spazio450 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 o457 GPL-2.0-or-later. L'esatta licenza può essere458 determinata solo leggendo i corrispondenti459 file sorgenti.460 461 "GPL v2" Stesso significato di "GPL". Esiste per462 motivi storici.463 464 "GPL and additional rights" Questa è una variante che esiste per motivi465 storici che indica che i sorgenti di un466 modulo sono rilasciati sotto una variante467 della licenza GPL v2 e quella MIT. Per favore468 non utilizzatela per codice nuovo.469 470 "Dual MIT/GPL" Questo è il modo corretto per esprimere il471 il fatto che il modulo è rilasciato con472 doppia licenza a scelta fra: una variante473 della GPL v2 o la licenza MIT.474 475 "Dual BSD/GPL" Questo modulo è rilasciato con doppia licenza476 a scelta fra: una variante della GPL v2 o la477 licenza BSD. La variante esatta della licenza478 BSD può essere determinata solo attraverso i479 corrispondenti file sorgenti.480 481 "Dual MPL/GPL" Questo modulo è rilasciato con doppia licenza482 a scelta fra: una variante della GPL v2 o la483 Mozilla Public License (MPL). La variante484 esatta della licenza MPL può essere485 determinata solo attraverso i corrispondenti486 file sorgenti.487 488 "Proprietary" Questo modulo è rilasciato con licenza489 proprietaria. Questa stringa è solo per i490 moduli proprietari di terze parti e non può491 essere usata per quelli che risiedono nei492 sorgenti del kernel. I moduli etichettati in493 questo modo stanno contaminando il kernel e494 gli viene assegnato un flag 'P'; quando495 vengono caricati, il caricatore di moduli del496 kernel si rifiuterà di collegare questi497 moduli ai simboli che sono stati esportati498 con EXPORT_SYMBOL_GPL().499 500 ============================= =============================================501