← Documents Documentation/translations/it_IT/process/license-rules.rst GitHub 원문 ↗

Linux 6.18.37 · Translations

Linux kernel license 규칙

Linux kernel source file의 license를 SPDX identifier로 명확하게 표기하는 방법과 허용되는 license·exception·metatag 및 MODULE_LICENSE() 규칙을 설명합니다.

Source pathDocumentation/translations/it_IT/process/license-rules.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

license-rules.rst:1-500

이 문서는 kernel 전체의 GPL-2.0 license를 바꾸는 것이 아니라, 개별 source file의 정확한 license와 syscall exception을 machine-readable SPDX expression으로 기록하는 방법을 정합니다. Identifier 위치, `+`, `WITH`, `OR`, `AND` 조합과 file type별 comment 형식을 구체적으로 설명합니다.

허용 license는 preferred, deprecated, dual-only category로 나뉘며 각 license와 exception file에는 검증 가능한 metatag가 필요합니다. `MODULE_LICENSE()`는 정확한 source license 표기를 대체하지 않고 module loader가 GPL compatibility와 kernel taint를 판단하는 최소 정보만 제공합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
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 ============================= =============================================
501

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Kernel license와 SPDX identifier 도입

1-68

Linux kernel 전체는 COPYING file에 설명된 대로 LICENSES/preferred/GPL-2.0의 GNU General Public License version 2 only(GPL-2.0) 조건과 LICENSES/exceptions/Linux-syscall-note의 명시적 syscall exception에 따라 제공된다.

이 문서는 각 source file의 license를 명확하고 모호하지 않게 표시하는 방법을 설명하며 kernel 자체 license를 대체하지 않는다. COPYING의 license는 kernel source 전체에 적용되지만 개별 source file은 GPL-2.0과 호환되는 다른 license를 가질 수 있다.

식별자원문에서 설명하는 license
GPL-1.0+GNU General Public License v1.0 or later
GPL-2.0+GNU General Public License v2.0 or later
LGPL-2.0GNU Library General Public License v2 only
LGPL-2.0+GNU Library General Public License v2 or later
LGPL-2.1GNU Lesser General Public License v2.1 only
LGPL-2.1+GNU Lesser General Public License v2.1 or later

개별 file은 호환되는 GPL variant 하나와 BSD·MIT 같은 permissive license를 선택지로 함께 제공하는 dual license를 사용할 수도 있다.

User-space program과 kernel 사이 interface를 기술하는 User-space API(UAPI) header는 특별한 경우다. COPYING의 note에 따르면 syscall interface는 명확한 경계이며, 이를 통해 kernel과 통신하는 software에 GPL 요구 사항이 확장되지 않는다. UAPI header는 Linux kernel에서 실행될 executable을 만드는 어떤 source file에도 include될 수 있어야 하므로 이 exception을 특별한 license expression으로 문서화해야 한다.

Source file의 license를 표현하는 전통적인 방법은 file 첫 comment에 해당 boilerplate text를 넣는 것이다. 하지만 formatting 차이와 오타 때문에 license compliance 도구가 이런 boilerplate를 검증하기 어렵다.

대안은 각 source file에 Software Package Data Exchange(SPDX) license identifier를 사용하는 것이다. SPDX identifier는 machine이 parse할 수 있고, file content가 어떤 license로 기여되었는지 정확하고 짧게 나타낸다. Linux Foundation의 SPDX Workgroup이 관리하며 산업계 partner, tool vendor와 legal team 사이에 합의된 체계다.

Linux kernel은 모든 source file에 정확한 SPDX identifier를 요구한다. Kernel에서 유효한 identifier는 이 문서의 License identifiers 절에 설명되어 있으며 license text와 함께 official SPDX license list에서 가져온 것이다.

.. SPDX-License-Identifier: GPL-2.0

.. include:: ../disclaimer-ita.rst

:Original: :ref:`Documentation/process/license-rules.rst <kernel_licensing>`
:Translator: Federico Vaga <federico.vaga@vaga.pv.it>

.. _it_kernel_licensing:

Regole per licenziare il kernel Linux
=====================================

Il kernel Linux viene rilasciato sotto i termini definiti dalla seconda
versione della licenza *GNU General Public License* (GPL-2.0), di cui una
copia è disponibile nel file LICENSES/preferred/GPL-2.0; a questo si
aggiunge eccezione per le chiamate di sistema come descritto in
LICENSES/exceptions/Linux-syscall-note; tutto ciò è descritto nel file COPYING.

Questo documento fornisce una descrizione su come ogni singolo file sorgente
debba essere licenziato per far si che sia chiaro e non ambiguo. Questo non
sostituisce la licenza del kernel.

La licenza descritta nel file COPYING si applica ai sorgenti del kernel nella
loro interezza, quindi i singoli file sorgenti possono avere diverse licenze ma
devono essere compatibili con la GPL-2.0::

    GPL-1.0+  :  GNU General Public License v1.0 o successiva
    GPL-2.0+  :  GNU General Public License v2.0 o successiva
    LGPL-2.0  :  GNU Library General Public License v2
    LGPL-2.0+ :  GNU Library General Public License v2 o successiva
    LGPL-2.1  :  GNU Lesser General Public License v2.1
    LGPL-2.1+ :  GNU Lesser General Public License v2.1 o successiva

A parte questo, i singolo file possono essere forniti con una doppia licenza,
per esempio con una delle varianti compatibili della GPL e alternativamente con
una licenza permissiva come BSD, MIT eccetera.

I file d'intestazione per l'API verso lo spazio utente (UAPI) descrivono
le interfacce usate dai programmi, e per questo sono un caso speciale.
Secondo le note nel file COPYING, le chiamate di sistema sono un chiaro
confine oltre il quale non si estendono i requisiti della GPL per quei
programmi che le usano per comunicare con il kernel.  Dato che i file
d'intestazione UAPI devono poter essere inclusi nei sorgenti di un
qualsiasi programma eseguibile sul kernel Linux, questi meritano
un'eccezione documentata da una clausola speciale.

Il modo più comune per indicare la licenza dei file sorgenti è quello di
aggiungere il corrispondente blocco di testo come commento in testa a detto
file.  Per via della formattazione, dei refusi, eccetera, questi blocchi di
testo sono difficili da identificare dagli strumenti usati per verificare il
rispetto delle licenze.

Un'alternativa ai blocchi di testo è data dall'uso degli identificatori
*Software Package Data Exchange* (SPDX) in ogni file sorgente.  Gli
identificatori di licenza SPDX sono analizzabili dalle macchine e sono precisi
simboli stenografici che identificano la licenza sotto la quale viene
licenziato il file che lo include.  Gli identificatori di licenza SPDX sono
gestiti del gruppo di lavoro SPDX presso la Linux Foundation e sono stati
concordati fra i soci nell'industria, gli sviluppatori di strumenti, e i
rispettivi gruppi legali. Per maggiori informazioni, consultate
https://spdx.org/

Il kernel Linux richiede un preciso identificatore SPDX in tutti i file
sorgenti.  Gli identificatori validi verranno spiegati nella sezione
`Identificatori di licenza`_ e sono stati copiati dalla lista ufficiale di
licenze SPDX assieme al rispettivo testo come mostrato in
https://spdx.org/licenses/.

SPDX identifier 위치와 expression 문법

69-163

Kernel file의 SPDX license identifier는 comment를 넣을 수 있는 가장 첫 line에 둔다. 대부분 file에서는 첫 line이다. 첫 line에 #!PATH_TO_INTERPRETER가 필요한 script는 SPDX identifier를 두 번째 line에 둔다.

C source: // SPDX-License-Identifier: <SPDX License Expression>
C header: /* SPDX-License-Identifier: <SPDX License Expression> */
ASM:      /* SPDX-License-Identifier: <SPDX License Expression> */
scripts:  # SPDX-License-Identifier: <SPDX License Expression>
.rst:     .. SPDX-License-Identifier: <SPDX License Expression>
.dts{i}:  // SPDX-License-Identifier: <SPDX License Expression>

특정 tool이 표준 comment style을 처리하지 못하면 그 tool이 허용하는 comment mechanism을 사용한다. C header에 /* */ style을 쓰는 이유도 여기에 있다. 과거 generated .lds file에서 ld가 C++ comment를 parse하지 못해 build가 깨진 적이 있다. 그 문제는 수정되었지만 C++ style comment를 처리하지 못하는 오래된 assembler tool이 아직 남아 있다.

SPDX License Expression은 SPDX License List의 short-form license identifier 하나이거나, exception이 적용될 때 두 identifier를 WITH로 결합한 형태다. 여러 license가 함께 적용되면 AND 또는 OR keyword로 sub-expression을 나누고 필요에 따라 괄호로 묶는다.

or later를 나타내는 +

// SPDX-License-Identifier: GPL-2.0+
// SPDX-License-Identifier: LGPL-2.1+

[L]GPL에서 해당 version 이후도 허용하는 or later option은 identifier 뒤에 +를 붙여 나타낸다.

License modifier를 결합하는 WITH

// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
// SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
// SPDX-License-Identifier: GPL-2.0 WITH mif-exception
// SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0

License에 modifier가 필요하면 WITH를 사용한다. Linux kernel UAPI file은 Linux-syscall-note를 결합한다. Exception은 아무 license에나 붙일 수 없으며 exception text file의 tag에 나열된 license identifier하고만 사용할 수 있다.

선택 가능한 dual license의 OR

// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
// SPDX-License-Identifier: GPL-2.0 OR MIT
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
// SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
// SPDX-License-Identifier: GPL-2.0 OR MPL-1.1
// SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT
// SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL

File이 dual licensed되어 있고 사용자가 그중 하나를 선택할 수 있다면 OR를 사용한다. 일부 dtsi file이 이 형태로 제공된다.

모든 조건이 동시에 적용되는 AND

// SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT
// SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+

File 사용에 여러 license 조건이 모두 적용되면 AND를 사용한다. 다른 project에서 code를 가져오면서 kernel에 넣을 permission을 받았지만 original license 조건도 계속 유효한 경우가 예다.

Sintassi degli identificatori di licenza
----------------------------------------

1. Posizionamento:

   L'identificativo di licenza SPDX dev'essere posizionato come prima riga
   possibile di un file che possa contenere commenti.  Per la maggior parte
   dei file questa è la prima riga, fanno eccezione gli script che richiedono
   come prima riga '#!PATH_TO_INTERPRETER'.  Per questi script l'identificativo
   SPDX finisce nella seconda riga.

|

2. Stile:

   L'identificativo di licenza SPDX viene aggiunto sotto forma di commento.
   Lo stile del commento dipende dal tipo di file::

      sorgenti C:	// SPDX-License-Identifier: <SPDX License Expression>
      intestazioni C:	/* SPDX-License-Identifier: <SPDX License Expression> */
      ASM:	/* SPDX-License-Identifier: <SPDX License Expression> */
      scripts:	# SPDX-License-Identifier: <SPDX License Expression>
      .rst:	.. SPDX-License-Identifier: <SPDX License Expression>
      .dts{i}:	// SPDX-License-Identifier: <SPDX License Expression>

   Se un particolare programma non dovesse riuscire a gestire lo stile
   principale per i commenti, allora dev'essere usato il meccanismo accettato
   dal programma.  Questo è il motivo per cui si ha "/\* \*/" nei file
   d'intestazione C.  Notammo che 'ld' falliva nell'analizzare i commenti del
   C++ nei file .lds che venivano prodotti.  Oggi questo è stato corretto,
   ma ci sono in giro ancora vecchi programmi che non sono in grado di
   gestire lo stile dei commenti del C++.

|

3. Sintassi:

   Una <espressione di licenza SPDX> può essere scritta usando l'identificatore
   SPDX della licenza come indicato nella lista di licenze SPDX, oppure la
   combinazione di due identificatori SPDX separati da "WITH" per i casi
   eccezionali. Quando si usano più licenze l'espressione viene formata da
   sottoespressioni separate dalle parole chiave "AND", "OR" e racchiuse fra
   parentesi tonde "(", ")".

   Gli identificativi di licenza per licenze come la [L]GPL che si avvalgono
   dell'opzione 'o successive' si formano aggiungendo alla fine il simbolo "+"
   per indicare l'opzione 'o successive'.::

      // SPDX-License-Identifier: GPL-2.0+
      // SPDX-License-Identifier: LGPL-2.1+

   WITH dovrebbe essere usato quando sono necessarie delle modifiche alla
   licenza.  Per esempio, la UAPI del kernel linux usa l'espressione::

      // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
      // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note

   Altri esempi di usi di WITH all'interno del kernel sono::

      // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
      // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0

   Le eccezioni si possono usare solo in combinazione con identificatori di
   licenza. Gli identificatori di licenza riconosciuti sono elencati nei
   corrispondenti file d'eccezione. Per maggiori dettagli consultate
   `Eccezioni`_ nel capitolo `Identificatori di licenza`_

   La parola chiave OR dovrebbe essere usata solo quando si usa una doppia
   licenza e solo una dev'essere scelta.  Per esempio, alcuni file dtsi sono
   disponibili con doppia licenza::

      // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause

   Esempi dal kernel di espressioni per file licenziati con doppia licenza
   sono::

      // SPDX-License-Identifier: GPL-2.0 OR MIT
      // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
      // SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
      // SPDX-License-Identifier: GPL-2.0 OR MPL-1.1
      // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT
      // SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL

   La parola chiave AND dovrebbe essere usata quando i termini di più licenze
   si applicano ad un file. Per esempio, quando il codice viene preso da
   un altro progetto il quale da i permessi per aggiungerlo nel kernel ma
   richiede che i termini originali della licenza rimangano intatti::

      // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT

   Di seguito, un altro esempio dove entrambe i termini di licenza devono
   essere rispettati::

      // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+

License identifier, category, metatag와 exception

164-439

현재 사용 중인 license와 새로 kernel에 추가되는 code의 license는 여러 category로 나뉜다. 가능한 경우 완전한 compatibility가 알려져 있고 널리 사용되는 preferred license를 선택해야 한다. 이 file들은 kernel source tree의 LICENSES/preferred/ 아래에 있으며 full license text와 metatag를 포함한다. Filename은 source file에서 사용할 SPDX license identifier와 같다.

  • LICENSES/preferred/GPL-2.0: GPL version 2 license text와 필수 metatag
  • LICENSES/preferred/MIT: MIT license text와 필수 metatag
Metatag의미
Valid-License-IdentifierProject에서 이 license text를 가리키는 데 유효한 identifier. 보통 하나지만 or later option이면 두 identifier가 유효할 수 있다.
SPDX-URL해당 license의 추가 정보를 담은 SPDX page URL
Usage-Guidance사용 지침을 담는 freeform text. License identifier syntax 지침에 맞는 정확한 source-file 예제를 포함해야 한다.
License-Text이 tag 뒤의 모든 text를 original license text로 취급한다.
Valid-License-Identifier: GPL-2.0
Valid-License-Identifier: GPL-2.0+
SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
Usage-Guide:
  To use this license in source code, put one of the following SPDX
  tag/value pairs into a comment according to the placement
  guidelines in the licensing rules documentation.
  For 'GNU General Public License (GPL) version 2 only' use:
    SPDX-License-Identifier: GPL-2.0
  For 'GNU General Public License (GPL) version 2 or any later version' use:
    SPDX-License-Identifier: GPL-2.0+
License-Text:
  Full license text
SPDX-License-Identifier: MIT
SPDX-URL: https://spdx.org/licenses/MIT.html
Usage-Guide:
  To use this license in source code, put the following SPDX
  tag/value pair into a comment according to the placement
  guidelines in the licensing rules documentation.
    SPDX-License-Identifier: MIT
License-Text:
  Full license text

위 metatag 이름과 예제의 Usage-Guide 표기는 Linux v6.18.37 원문을 그대로 보존했다.

Deprecated license는 기존 code 또는 다른 project의 code를 import할 때만 사용해야 한다. Kernel source tree의 LICENSES/deprecated/ 아래에 full license text와 metatag가 있으며 filename은 source file에서 사용할 SPDX identifier와 같다.

  • LICENSES/deprecated/ISC: Internet Systems Consortium license text와 필수 metatag
  • LICENSES/deprecated/GPL-1.0: GPL version 1 license text와 필수 metatag

Metatag 요구 사항은 preferred license와 동일하다. ISC 예제는 새 kernel code에 이 license를 사용하는 것을 권장하지 않으며 이미 존재하는 project에서 code를 가져올 때만 사용하라고 명시한다.

Valid-License-Identifier: ISC
SPDX-URL: https://spdx.org/licenses/ISC.html
Usage-Guide:
  Usage of this license in the kernel for new code is discouraged
  and it should solely be used for importing code from an already
  existing project.
  To use this license in source code, put the following SPDX
  tag/value pair into a comment according to the placement
  guidelines in the licensing rules documentation.
    SPDX-License-Identifier: ISC
License-Text:
  Full license text

이 category의 license는 preferred license와 함께 code를 dual license할 때만 사용해야 한다. File은 LICENSES/dual/ 아래에 있고 full license text와 metatag를 포함하며 filename은 source에서 사용할 SPDX identifier와 같다.

  • LICENSES/dual/MPL-1.1: Mozilla Public License version 1.1 text와 필수 metatag
  • LICENSES/dual/Apache-2.0: Apache License version 2.0 text와 필수 metatag

Metatag 요구 사항은 preferred license와 동일하다. MPL-1.1은 GPL2 compatible하지 않으므로 단독으로 사용해서는 안 된다. 다른 license가 GPL2 compatible한 dual-licensed file에서만 사용할 수 있으며 반드시 OR로 결합해야 한다.

Valid-License-Identifier: MPL-1.1
SPDX-URL: https://spdx.org/licenses/MPL-1.1.html
Usage-Guide:
  Do NOT use. The MPL-1.1 is not GPL2 compatible. It may only be used for
  dual-licensed files where the other license is GPL2 compatible.
  If you end up using this it MUST be used together with a GPL2 compatible
  license using "OR".
  To use the Mozilla Public License version 1.1 put the following SPDX
  tag/value pair into a comment according to the placement guidelines in
  the licensing rules documentation:
SPDX-License-Identifier: MPL-1.1
License-Text:
  Full license text

일부 license는 original license가 주지 않는 특정 권리를 부여하는 exception으로 수정할 수 있다. Exception file은 LICENSES/exceptions/ 아래에 있으며 full exception text와 필수 exception metatag를 포함한다.

  • LICENSES/exceptions/Linux-syscall-note: Linux kernel COPYING에 설명된 syscall exception이며 UAPI header에 사용한다. 예: /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  • LICENSES/exceptions/GCC-exception-2.0: GCC linking exception. 표시된 file의 compiled version과 binary license에 관계없이 link할 수 있게 하며 GPL과 호환되지 않는 source로 runnable executable을 만드는 데 필요하다.
Exception metatag의미
SPDX-Exception-IdentifierSPDX license identifier와 결합할 수 있는 exception identifier 하나
SPDX-URL해당 exception 추가 정보를 담은 SPDX page URL
SPDX-Licenses이 exception을 사용할 수 있는 SPDX license identifier의 comma-separated list
Usage-Guidance사용 지침과 License identifier syntax에 맞는 정확한 source-file 예제
Exception-Text이 tag 뒤의 모든 text를 original exception text로 취급
SPDX-Exception-Identifier: Linux-syscall-note
SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html
SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+
Usage-Guidance:
  This exception is used together with one of the above SPDX-Licenses
  to mark user-space API (uapi) header files so they can be included
  into non GPL compliant user-space application code.
  To use this exception add it with the keyword WITH to one of the
  identifiers in the SPDX-Licenses tag:
    SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note
Exception-Text:
  Full exception text
SPDX-Exception-Identifier: GCC-exception-2.0
SPDX-URL: https://spdx.org/licenses/GCC-exception-2.0.html
SPDX-Licenses: GPL-2.0, GPL-2.0+
Usage-Guidance:
  The "GCC Runtime Library exception 2.0" is used together with one
  of the above SPDX-Licenses for code imported from the GCC runtime
  library.
  To use this exception add it with the keyword WITH to one of the
  identifiers in the SPDX-Licenses tag:
    SPDX-License-Identifier: <SPDX-License> WITH GCC-exception-2.0
Exception-Text:
  Full exception text

모든 SPDX license identifier와 exception에는 LICENSES 하위 directory에 대응하는 file이 있어야 한다. 그래야 checkpatch.pl 같은 도구가 검증할 수 있고, 여러 FOSS organization이 권장하는 대로 source에서 license를 바로 읽고 추출할 수 있다.

Identificatori di licenza
-------------------------

Le licenze attualmente in uso, così come le licenze aggiunte al kernel, possono
essere categorizzate in:

1. _`Licenze raccomandate`:

   Ovunque possibile le licenze qui indicate dovrebbero essere usate perché
   pienamente compatibili e molto usate.  Queste licenze sono disponibile nei
   sorgenti del kernel, nella cartella::

     LICENSES/preferred/

   I file in questa cartella contengono il testo completo della licenza e i
   `Metatag`_.  Il nome di questi file è lo stesso usato come identificatore
   di licenza SPDX e che deve essere usato nei file sorgenti.

   Esempi::

     LICENSES/preferred/GPL-2.0

   Contiene il testo della seconda versione della licenza GPL e i metatag
   necessari::

     LICENSES/preferred/MIT

   Contiene il testo della licenza MIT e i metatag necessari.

   _`Metatag`:

   I seguenti metatag devono essere presenti in un file di licenza:

   - Valid-License-Identifier:

     Una o più righe che dichiarano quali identificatori di licenza sono validi
     all'interno del progetto per far riferimento alla licenza in questione.
     Solitamente, questo è un unico identificatore valido, ma per esempio le
     licenze che permettono l'opzione 'o successive' hanno due identificatori
     validi.

   - SPDX-URL:

     L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
     la licenza.

   - Usage-Guidance:

     Testo in formato libero per dare suggerimenti agli utenti. Il testo deve
     includere degli esempi su come usare gli identificatori di licenza SPDX
     in un file sorgente in conformità con le linea guida in
     `Sintassi degli identificatori di licenza`_.

   - License-Text:

     Tutto il testo che compare dopo questa etichetta viene trattato
     come se fosse parte del testo originale della licenza.

   Esempi::

      Valid-License-Identifier: GPL-2.0
      Valid-License-Identifier: GPL-2.0+
      SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
      Usage-Guide:
        To use this license in source code, put one of the following SPDX
	tag/value pairs into a comment according to the placement
	guidelines in the licensing rules documentation.
	For 'GNU General Public License (GPL) version 2 only' use:
	  SPDX-License-Identifier: GPL-2.0
	For 'GNU General Public License (GPL) version 2 or any later version' use:
	  SPDX-License-Identifier: GPL-2.0+
      License-Text:
        Full license text

   ::

      SPDX-License-Identifier: MIT
      SPDX-URL: https://spdx.org/licenses/MIT.html
      Usage-Guide:
	To use this license in source code, put the following SPDX
	tag/value pair into a comment according to the placement
	guidelines in the licensing rules documentation.
	  SPDX-License-Identifier: MIT
      License-Text:
        Full license text

|

2. Licenze deprecate:

   Questo tipo di licenze dovrebbero essere usate solo per codice già esistente
   o quando si prende codice da altri progetti.  Le licenze sono disponibili
   nei sorgenti del kernel nella cartella::

     LICENSES/deprecated/

   I file in questa cartella contengono il testo completo della licenza e i
   `Metatag`_.  Il nome di questi file è lo stesso usato come identificatore
   di licenza SPDX e che deve essere usato nei file sorgenti.

   Esempi::

     LICENSES/deprecated/ISC

   Contiene il testo della licenza Internet System Consortium e i suoi
   metatag::

     LICENSES/deprecated/GPL-1.0

   Contiene il testo della versione 1 della licenza GPL e i suoi metatag.

   Metatag:

   I metatag necessari per le 'altre' ('other') licenze sono gli stessi
   di usati per le `Licenze raccomandate`_.

   Esempio del formato del file::

      Valid-License-Identifier: ISC
      SPDX-URL: https://spdx.org/licenses/ISC.html
      Usage-Guide:
        Usage of this license in the kernel for new code is discouraged
        and it should solely be used for importing code from an already
        existing project.
        To use this license in source code, put the following SPDX
        tag/value pair into a comment according to the placement
        guidelines in the licensing rules documentation.
          SPDX-License-Identifier: ISC
      License-Text:
        Full license text

|

3. Solo per doppie licenze

   Queste licenze dovrebbero essere usate solamente per codice licenziato in
   combinazione con un'altra licenza che solitamente è quella preferita.
   Queste licenze sono disponibili nei sorgenti del kernel nella cartella::

     LICENSES/dual

   I file in questa cartella contengono il testo completo della rispettiva
   licenza e i suoi `Metatag`_.  I nomi dei file sono identici agli
   identificatori di licenza SPDX che dovrebbero essere usati nei file
   sorgenti.

   Esempi::

     LICENSES/dual/MPL-1.1

   Questo file contiene il testo della versione 1.1 della licenza *Mozilla
   Pulic License* e i metatag necessari::

     LICENSES/dual/Apache-2.0

   Questo file contiene il testo della versione 2.0 della licenza Apache e i
   metatag necessari.

   Metatag:

   I requisiti per le 'altre' ('*other*') licenze sono identici a quelli per le
   `Licenze raccomandate`_.

   Esempio del formato del file::

    Valid-License-Identifier: MPL-1.1
    SPDX-URL: https://spdx.org/licenses/MPL-1.1.html
    Usage-Guide:
      Do NOT use. The MPL-1.1 is not GPL2 compatible. It may only be used for
      dual-licensed files where the other license is GPL2 compatible.
      If you end up using this it MUST be used together with a GPL2 compatible
      license using "OR".
      To use the Mozilla Public License version 1.1 put the following SPDX
      tag/value pair into a comment according to the placement guidelines in
      the licensing rules documentation:
    SPDX-License-Identifier: MPL-1.1
    License-Text:
      Full license text

|

4. _`Eccezioni`:

   Alcune licenze possono essere corrette con delle eccezioni che forniscono
   diritti aggiuntivi.  Queste eccezioni sono disponibili nei sorgenti del
   kernel nella cartella::

     LICENSES/exceptions/

   I file in questa cartella contengono il testo completo dell'eccezione e i
   `Metatag per le eccezioni`_.

   Esempi::

      LICENSES/exceptions/Linux-syscall-note

   Contiene la descrizione dell'eccezione per le chiamate di sistema Linux
   così come documentato nel file COPYING del kernel Linux; questo viene usato
   per i file d'intestazione per la UAPI.  Per esempio
   /\* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note \*/::

      LICENSES/exceptions/GCC-exception-2.0

   Contiene la 'eccezione di linking' che permette di collegare qualsiasi
   binario, indipendentemente dalla sua licenza, con un compilato il cui file
   sorgente è marchiato con questa eccezione. Questo è necessario per creare
   eseguibili dai sorgenti che non sono compatibili con la GPL.

   _`Metatag per le eccezioni`:

   Un file contenente un'eccezione deve avere i seguenti metatag:

   - SPDX-Exception-Identifier:

     Un identificatore d'eccezione che possa essere usato in combinazione con
     un identificatore di licenza SPDX.

   - SPDX-URL:

     L'URL della pagina SPDX che contiene informazioni aggiuntive riguardanti
     l'eccezione.

   - SPDX-Licenses:

     Una lista di licenze SPDX separate da virgola, che possono essere usate
     con l'eccezione.

   - Usage-Guidance:

     Testo in formato libero per dare suggerimenti agli utenti. Il testo deve
     includere degli esempi su come usare gli identificatori di licenza SPDX
     in un file sorgente in conformità con le linea guida in
     `Sintassi degli identificatori di licenza`_.

   - Exception-Text:

     Tutto il testo che compare dopo questa etichetta viene trattato
     come se fosse parte del testo originale della licenza.

   Esempi::

      SPDX-Exception-Identifier: Linux-syscall-note
      SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html
      SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+
      Usage-Guidance:
        This exception is used together with one of the above SPDX-Licenses
	to mark user-space API (uapi) header files so they can be included
	into non GPL compliant user-space application code.
        To use this exception add it with the keyword WITH to one of the
	identifiers in the SPDX-Licenses tag:
	  SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note
      Exception-Text:
        Full exception text

   ::

      SPDX-Exception-Identifier: GCC-exception-2.0
      SPDX-URL: https://spdx.org/licenses/GCC-exception-2.0.html
      SPDX-Licenses: GPL-2.0, GPL-2.0+
      Usage-Guidance:
        The "GCC Runtime Library exception 2.0" is used together with one
	of the above SPDX-Licenses for code imported from the GCC runtime
	library.
        To use this exception add it with the keyword WITH to one of the
	identifiers in the SPDX-Licenses tag:
	  SPDX-License-Identifier: <SPDX-License> WITH GCC-exception-2.0
      Exception-Text:
        Full exception text

Per ogni identificatore di licenza SPDX e per le eccezioni dev'esserci un file
nella sotto-cartella LICENSES.  Questo è necessario per permettere agli
strumenti di effettuare verifiche (come checkpatch.pl), per avere le licenze
disponibili per la lettura e per estrarre i diritti dai sorgenti, così come
raccomandato da diverse organizzazioni FOSS, per esempio l'`iniziativa FSFE
REUSE <https://reuse.software/>`_.

MODULE_LICENSE()의 제한된 역할

440-500

Loadable kernel module에는 MODULE_LICENSE() tag도 필요하다. 이 tag는 정확한 source code license 정보인 SPDX-License-Identifier를 대체하지 않으며 module source가 제공되는 정확한 license를 표현하거나 판정하는 수단도 아니다.

MODULE_LICENSE()의 유일한 목적은 kernel module loader와 user-space tool이 module이 free software인지 proprietary인지 판단하는 데 필요한 최소 정보를 제공하는 것이다.

MODULE_LICENSE string의미
"GPL"GPL version 2 module. GPL-2.0-only와 GPL-2.0-or-later를 구분하지 않으며 정확한 license는 source file의 license 정보로만 판정한다.
"GPL v2""GPL"과 같고 역사적인 이유로 존재한다.
"GPL and additional rights"GPL v2 variant와 MIT dual license를 나타내던 역사적 표현. 새 code에서는 사용하지 않는다.
"Dual MIT/GPL"GPL v2 variant 또는 MIT 중 선택 가능한 dual license의 올바른 표현
"Dual BSD/GPL"GPL v2 variant 또는 BSD 중 선택. 정확한 BSD variant는 source file의 license 정보로 판정한다.
"Dual MPL/GPL"GPL v2 variant 또는 MPL 중 선택. 정확한 MPL variant는 source file의 license 정보로 판정한다.
"Proprietary"GPLv2 compatible하지 않은 third-party module. Kernel tree 안의 source module에는 사용할 수 없다.

"Proprietary"는 오직 license가 GPLv2와 compatible하지 않다는 의미로 이해해야 한다. 이 tag의 module을 load하면 kernel에 P taint flag가 설정되고 module loader는 EXPORT_SYMBOL_GPL()로 export된 symbol에 해당 module을 link하는 것을 거부한다.

_`MODULE_LICENSE`
-----------------

   I moduli del kernel necessitano di un'etichetta MODULE_LICENSE(). Questa
   etichetta non sostituisce le informazioni sulla licenza del codice sorgente
   (SPDX-License-Identifier) né fornisce informazioni che esprimono o
   determinano l'esatta licenza sotto la quale viene rilasciato.

   Il solo scopo di questa etichetta è quello di fornire sufficienti
   informazioni al caricatore di moduli del kernel, o agli strumenti in spazio
   utente, per capire se il modulo è libero o proprietario.

   Le stringe di licenza valide per MODULE_LICENSE() sono:

    ============================= =============================================
    "GPL"			  Il modulo è licenziato con la GPL versione 2.
				  Questo non fa distinzione fra GPL'2.0-only o
				  GPL-2.0-or-later. L'esatta licenza può essere
				  determinata solo leggendo i corrispondenti
				  file sorgenti.

    "GPL v2"			  Stesso significato di "GPL". Esiste per
				  motivi storici.

    "GPL and additional rights"   Questa è una variante che esiste per motivi
				  storici che indica che i sorgenti di un
				  modulo sono rilasciati sotto una variante
				  della licenza GPL v2 e quella MIT. Per favore
				  non utilizzatela per codice nuovo.

    "Dual MIT/GPL"		  Questo è il modo corretto per esprimere il
				  il fatto che il modulo è rilasciato con
				  doppia licenza a scelta fra: una variante
				  della GPL v2 o la licenza MIT.

    "Dual BSD/GPL"		  Questo modulo è rilasciato con doppia licenza
				  a scelta fra: una variante della GPL v2 o la
				  licenza BSD. La variante esatta della licenza
				  BSD può essere determinata solo attraverso i
				  corrispondenti file sorgenti.

    "Dual MPL/GPL"		  Questo modulo è rilasciato con doppia licenza
				  a scelta fra: una variante della GPL v2 o la
				  Mozilla Public License (MPL). La variante
				  esatta della licenza MPL può essere
				  determinata solo attraverso i corrispondenti
				  file sorgenti.

    "Proprietary"		  Questo modulo è rilasciato con licenza
				  proprietaria. Questa stringa è solo per i
				  moduli proprietari di terze parti e non può
				  essere usata per quelli che risiedono nei
				  sorgenti del kernel. I moduli etichettati in
				  questo modo stanno contaminando il kernel e
				  gli viene assegnato un flag 'P'; quando
				  vengono caricati, il caricatore di moduli del
				  kernel si rifiuterà di collegare questi
				  moduli ai simboli che sono stati esportati
				  con EXPORT_SYMBOL_GPL().

    ============================= =============================================