Merge tag 'docs-6.0' of git://git.lwn.net/linux
[linux-2.6-microblaze.git] / Documentation / translations / it_IT / process / submitting-patches.rst
1 .. include:: ../disclaimer-ita.rst
2
3 :Original: :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
4 :Translator: Federico Vaga <federico.vaga@vaga.pv.it>
5
6 .. _it_submittingpatches:
7
8 Inviare patch: la guida essenziale per vedere il vostro codice nel kernel
9 =========================================================================
10
11 Una persona o un'azienda che volesse inviare una patch al kernel potrebbe
12 sentirsi scoraggiata dal processo di sottomissione, specialmente quando manca
13 una certa familiarità col "sistema".  Questo testo è una raccolta di
14 suggerimenti che aumenteranno significativamente le probabilità di vedere le
15 vostre patch accettate.
16
17 Questo documento contiene un vasto numero di suggerimenti concisi. Per maggiori
18 dettagli su come funziona il processo di sviluppo del kernel leggete
19 Documentation/translations/it_IT/process/development-process.rst. Leggete anche
20 Documentation/translations/it_IT/process/submit-checklist.rst per una lista di
21 punti da verificare prima di inviare del codice.
22 Per delle patch relative alle associazioni per Device Tree leggete
23 Documentation/translations/it_IT/process/submitting-patches.rst.
24
25 Questa documentazione assume che sappiate usare ``git`` per preparare le patch.
26 Se non siete pratici di ``git``, allora è bene che lo impariate;
27 renderà la vostra vita di sviluppatore del kernel molto più semplice.
28
29 I sorgenti di alcuni sottosistemi e manutentori contengono più informazioni
30 riguardo al loro modo di lavorare ed aspettative. Consultate
31 :ref:`Documentation/translations/it_IT/process/maintainer-handbooks.rst <it_maintainer_handbooks_main>`
32
33 Ottenere i sorgenti attuali
34 ---------------------------
35
36 Se non avete un repositorio coi sorgenti del kernel più recenti, allora usate
37 ``git`` per ottenerli.  Vorrete iniziare col repositorio principale che può
38 essere recuperato col comando::
39
40   git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
41
42 Notate, comunque, che potreste non voler sviluppare direttamente coi sorgenti
43 principali del kernel.  La maggior parte dei manutentori hanno i propri
44 sorgenti e desiderano che le patch siano preparate basandosi su di essi.
45 Guardate l'elemento **T:** per un determinato sottosistema nel file MAINTANERS
46 che troverete nei sorgenti, o semplicemente chiedete al manutentore nel caso
47 in cui i sorgenti da usare non siano elencati il quel file.
48
49 .. _it_describe_changes:
50
51 Descrivete le vostre modifiche
52 ------------------------------
53
54 Descrivete il vostro problema. Esiste sempre un problema che via ha spinto
55 ha fare il vostro lavoro, che sia la correzione di un baco da una riga o una
56 nuova funzionalità da 5000 righe di codice.  Convincete i revisori che vale
57 la pena risolvere il vostro problema e che ha senso continuare a leggere oltre
58 al primo paragrafo.
59
60 Descrivete ciò che sarà visibile agli utenti.  Chiari incidenti nel sistema
61 e blocchi sono abbastanza convincenti, ma non tutti i bachi sono così evidenti.
62 Anche se il problema è stato scoperto durante la revisione del codice,
63 descrivete l'impatto che questo avrà sugli utenti.  Tenete presente che
64 la maggior parte delle installazioni Linux usa un kernel che arriva dai
65 sorgenti stabili o dai sorgenti di una distribuzione particolare che prende
66 singolarmente le patch dai sorgenti principali; quindi, includete tutte
67 le informazioni che possono essere utili a capire le vostre modifiche:
68 le circostanze che causano il problema, estratti da dmesg, descrizioni di
69 un incidente di sistema, prestazioni di una regressione, picchi di latenza,
70 blocchi, eccetera.
71
72 Quantificare le ottimizzazioni e i compromessi.  Se affermate di aver
73 migliorato le prestazioni, il consumo di memoria, l'impatto sollo stack,
74 o la dimensione del file binario, includete dei numeri a supporto della
75 vostra dichiarazione.  Ma ricordatevi di descrivere anche eventuali costi
76 che non sono ovvi.  Solitamente le ottimizzazioni non sono gratuite, ma sono
77 un compromesso fra l'uso di CPU, la memoria e la leggibilità; o, quando si
78 parla di ipotesi euristiche, fra differenti carichi.  Descrivete i lati
79 negativi che vi aspettate dall'ottimizzazione cosicché i revisori possano
80 valutare i costi e i benefici.
81
82 Una volta che il problema è chiaro, descrivete come lo risolvete andando
83 nel dettaglio tecnico.  È molto importante che descriviate la modifica
84 in un inglese semplice cosicché i revisori possano verificare che il codice si
85 comporti come descritto.
86
87 I manutentori vi saranno grati se scrivete la descrizione della patch in un
88 formato che sia compatibile con il gestore dei sorgenti usato dal kernel,
89 ``git``, come un "commit log". Leggete :ref:`it_the_canonical_patch_format`.
90
91 Risolvete solo un problema per patch.  Se la vostra descrizione inizia ad
92 essere lunga, potrebbe essere un segno che la vostra patch necessita d'essere
93 divisa. Leggete :ref:`it_split_changes`.
94
95 Quando inviate o rinviate una patch o una serie, includete la descrizione
96 completa delle modifiche e la loro giustificazione.  Non limitatevi a dire che
97 questa è la versione N della patch (o serie).  Non aspettatevi che i
98 manutentori di un sottosistema vadano a cercare le versioni precedenti per
99 cercare la descrizione da aggiungere.  In pratica, la patch (o serie) e la sua
100 descrizione devono essere un'unica cosa.  Questo aiuta i manutentori e i
101 revisori.  Probabilmente, alcuni revisori non hanno nemmeno ricevuto o visto
102 le versioni precedenti della patch.
103
104 Descrivete le vostro modifiche usando l'imperativo, per esempio "make xyzzy
105 do frotz" piuttosto che "[This patch] makes xyzzy do frotz" or "[I] changed
106 xyzzy to do frotz", come se steste dando ordini al codice di cambiare il suo
107 comportamento.
108
109 Se ci sono delle discussioni, o altre informazioni d'interesse, che fanno
110 riferimento alla patch, allora aggiungete l'etichetta 'Link:' per farvi
111 riferimento. Per esempio, se la vostra patch corregge un baco potete aggiungere
112 quest'etichetta per fare riferimento ad un rapporto su una lista di discussione
113 o un *bug tracker*. Un altro esempio; potete usare quest'etichetta per far
114 riferimento ad una discussione precedentemente avvenuta su una lista di
115 discussione, o qualcosa di documentato sul web, da cui poi è nata la patch in
116 questione.
117
118 Quando volete fare riferimento ad una lista di discussione, preferite il
119 servizio d'archiviazione lore.kernel.org. Per create un collegamento URL è
120 sufficiente usare il campo ``Message-Id``, presente nell'intestazione del
121 messaggio, senza parentesi angolari. Per esempio::
122
123      Link: https://lore.kernel.org/r/30th.anniversary.repost@klaava.Helsinki.FI/
124
125 Prima d'inviare il messaggio ricordatevi di verificare che il collegamento così
126 creato funzioni e che indirizzi verso il messaggio desiderato.
127
128 Tuttavia, provate comunque a dare una spiegazione comprensibile anche senza
129 accedere alle fonti esterne. Inoltre, riassumente i punti più salienti che hanno
130 condotto all'invio della patch.
131
132 Se volete far riferimento a uno specifico commit, non usate solo
133 l'identificativo SHA-1.  Per cortesia, aggiungete anche la breve riga
134 riassuntiva del commit per rendere la chiaro ai revisori l'oggetto.
135 Per esempio::
136
137         Commit e21d2170f36602ae2708 ("video: remove unnecessary
138         platform_set_drvdata()") removed the unnecessary
139         platform_set_drvdata(), but left the variable "dev" unused,
140         delete it.
141
142 Dovreste anche assicurarvi di usare almeno i primi 12 caratteri
143 dell'identificativo SHA-1.  Il repositorio del kernel ha *molti* oggetti e
144 questo rende possibile la collisione fra due identificativi con pochi
145 caratteri.  Tenete ben presente che anche se oggi non ci sono collisioni con il
146 vostro identificativo a 6 caratteri, potrebbero essercene fra 5 anni da oggi.
147
148 Se la vostra patch corregge un baco in un commit specifico, per esempio avete
149 trovato un problema usando ``git bisect``, per favore usate l'etichetta
150 'Fixes:' indicando i primi 12 caratteri dell'identificativo SHA-1 seguiti
151 dalla riga riassuntiva.  Per esempio::
152
153         Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()")
154
155 La seguente configurazione di ``git config`` può essere usata per formattare
156 i risultati dei comandi ``git log`` o ``git show`` come nell'esempio
157 precedente::
158
159         [core]
160                 abbrev = 12
161         [pretty]
162                 fixes = Fixes: %h (\"%s\")
163
164 Un esempio::
165
166        $ git log -1 --pretty=fixes 54a4f0239f2e
167        Fixes: 54a4f0239f2e ("KVM: MMU: make kvm_mmu_zap_page() return the number of pages it actually freed")
168
169 .. _it_split_changes:
170
171 Separate le vostre modifiche
172 ----------------------------
173
174 Separate ogni **cambiamento logico** in patch distinte.
175
176 Per esempio, se i vostri cambiamenti per un singolo driver includono
177 sia delle correzioni di bachi che miglioramenti alle prestazioni,
178 allora separateli in due o più patch.  Se i vostri cambiamenti includono
179 un aggiornamento dell'API e un nuovo driver che lo sfrutta, allora separateli
180 in due patch.
181
182 D'altro canto, se fate una singola modifica su più file, raggruppate tutte
183 queste modifiche in una singola patch.  Dunque, un singolo cambiamento logico
184 è contenuto in una sola patch.
185
186 Il punto da ricordare è che ogni modifica dovrebbe fare delle modifiche
187 che siano facilmente comprensibili e che possano essere verificate dai revisori.
188 Ogni patch dovrebbe essere giustificabile di per sé.
189
190 Se al fine di ottenere un cambiamento completo una patch dipende da un'altra,
191 va bene.  Semplicemente scrivete una nota nella descrizione della patch per
192 farlo presente: **"this patch depends on patch X"**.
193
194 Quando dividete i vostri cambiamenti in una serie di patch, prestate
195 particolare attenzione alla verifica di ogni patch della serie; per ognuna
196 il kernel deve compilare ed essere eseguito correttamente.  Gli sviluppatori
197 che usano ``git bisect`` per scovare i problemi potrebbero finire nel mezzo
198 della vostra serie in un punto qualsiasi; non vi saranno grati se nel mezzo
199 avete introdotto dei bachi.
200
201 Se non potete condensare la vostra serie di patch in una più piccola, allora
202 pubblicatene una quindicina alla volta e aspettate che vengano revisionate
203 ed integrate.
204
205
206 4) Verificate lo stile delle vostre modifiche
207 ---------------------------------------------
208
209 Controllate che la vostra patch non violi lo stile del codice, maggiori
210 dettagli sono disponibili in Documentation/translations/it_IT/process/coding-style.rst.
211 Non farlo porta semplicemente a una perdita di tempo da parte dei revisori e
212 voi vedrete la vostra patch rifiutata, probabilmente senza nemmeno essere stata
213 letta.
214
215 Un'eccezione importante si ha quando del codice viene spostato da un file
216 ad un altro -- in questo caso non dovreste modificare il codice spostato
217 per nessun motivo, almeno non nella patch che lo sposta.  Questo separa
218 chiaramente l'azione di spostare il codice e il vostro cambiamento.
219 Questo aiuta enormemente la revisione delle vere differenze e permette agli
220 strumenti di tenere meglio la traccia della storia del codice.
221
222 Prima di inviare una patch, verificatene lo stile usando l'apposito
223 verificatore (scripts/checkpatch.pl).  Da notare, comunque, che il verificator
224 di stile dovrebbe essere visto come una guida, non come un sostituto al
225 giudizio umano.  Se il vostro codice è migliore nonostante una violazione
226 dello stile, probabilmente è meglio lasciarlo com'è.
227
228 Il verificatore ha tre diversi livelli di severità:
229  - ERROR: le cose sono molto probabilmente sbagliate
230  - WARNING: le cose necessitano d'essere revisionate con attenzione
231  - CHECK: le cose necessitano di un pensierino
232
233 Dovreste essere in grado di giustificare tutte le eventuali violazioni rimaste
234 nella vostra patch.
235
236
237 5) Selezionate i destinatari della vostra patch
238 -----------------------------------------------
239
240 Dovreste sempre inviare una copia della patch ai manutentori dei sottosistemi
241 interessati dalle modifiche; date un'occhiata al file MAINTAINERS e alla storia
242 delle revisioni per scoprire chi si occupa del codice. Lo script
243 scripts/get_maintainer.pl può esservi d'aiuto (passategli il percorso alle
244 vostre patch). Se non riuscite a trovare un manutentore per il sottosistema su
245 cui state lavorando, allora Andrew Morton (akpm@linux-foundation.org) sarà la
246 vostra ultima possibilità.
247
248 Normalmente, dovreste anche scegliere una lista di discussione a cui inviare la
249 vostra serie di patch. La lista di discussione linux-kernel@vger.kernel.org
250 dovrebbe essere usata per inviare tutte le patch, ma il traffico è tale per cui
251 diversi sviluppatori la trascurano. Guardate nel file MAINTAINERS per trovare la
252 lista di discussione dedicata ad un sottosistema; probabilmente lì la vostra
253 patch riceverà molta più attenzione. Tuttavia, per favore, non spammate le liste
254 di discussione che non sono interessate al vostro lavoro.
255
256 Molte delle liste di discussione relative al kernel vengono ospitate su
257 vger.kernel.org; potete trovare un loro elenco alla pagina
258 http://vger.kernel.org/vger-lists.html.  Tuttavia, ci sono altre liste di
259 discussione ospitate altrove.
260
261 Non inviate più di 15 patch alla volta sulle liste di discussione vger!!!
262
263 L'ultimo giudizio sull'integrazione delle modifiche accettate spetta a
264 Linux Torvalds.  Il suo indirizzo e-mail è <torvalds@linux-foundation.org>.
265 Riceve moltissime e-mail, e, a questo punto, solo poche patch passano
266 direttamente attraverso il suo giudizio; quindi, dovreste fare del vostro
267 meglio per -evitare di- inviargli e-mail.
268
269 Se avete una patch che corregge un baco di sicurezza che potrebbe essere
270 sfruttato, inviatela a security@kernel.org.  Per bachi importanti, un breve
271 embargo potrebbe essere preso in considerazione per dare il tempo alle
272 distribuzioni di prendere la patch e renderla disponibile ai loro utenti;
273 in questo caso, ovviamente, la patch non dovrebbe essere inviata su alcuna
274 lista di discussione pubblica. Leggete anche
275 Documentation/admin-guide/security-bugs.rst.
276
277 Patch che correggono bachi importanti su un kernel già rilasciato, dovrebbero
278 essere inviate ai manutentori dei kernel stabili aggiungendo la seguente riga::
279
280   Cc: stable@vger.kernel.org
281
282 nella vostra patch, nell'area dedicata alle firme (notate, NON come destinatario
283 delle e-mail).  In aggiunta a questo file, dovreste leggere anche
284 Documentation/translations/it_IT/process/stable-kernel-rules.rst.
285
286 Se le modifiche hanno effetti sull'interfaccia con lo spazio utente, per favore
287 inviate una patch per le pagine man ai manutentori di suddette pagine (elencati
288 nel file MAINTAINERS), o almeno una notifica circa la vostra modifica,
289 cosicché l'informazione possa trovare la sua strada nel manuale.  Le modifiche
290 all'API dello spazio utente dovrebbero essere inviate in copia anche a
291 linux-api@vger.kernel.org.
292
293 Niente: MIME, links, compressione, allegati.  Solo puro testo
294 -------------------------------------------------------------
295
296 Linus e gli altri sviluppatori del kernel devono poter commentare
297 le modifiche che sottomettete.  Per uno sviluppatore è importante
298 essere in grado di "citare" le vostre modifiche, usando normali
299 programmi di posta elettronica, cosicché sia possibile commentare
300 una porzione specifica del vostro codice.
301
302 Per questa ragione tutte le patch devono essere inviate via e-mail
303 come testo. Il modo più facile, e quello raccomandato, è con ``git
304 send-email``.  Al sito https://git-send-email.io è disponibile una
305 guida interattiva sull'uso di ``git send-email``.
306
307 Se decidete di non usare ``git send-email``:
308
309 .. warning::
310
311   Se decidete di copiare ed incollare la patch nel corpo dell'e-mail, state
312   attenti che il vostro programma non corrompa il contenuto con andate
313   a capo automatiche.
314
315 La patch non deve essere un allegato MIME, compresso o meno.  Molti
316 dei più popolari programmi di posta elettronica non trasmettono un allegato
317 MIME come puro testo, e questo rende impossibile commentare il vostro codice.
318 Inoltre, un allegato MIME rende l'attività di Linus più laboriosa, diminuendo
319 così la possibilità che il vostro allegato-MIME venga accettato.
320
321 Eccezione: se il vostro servizio di posta storpia le patch, allora qualcuno
322 potrebbe chiedervi di rinviarle come allegato MIME.
323
324 Leggete Documentation/translations/it_IT/process/email-clients.rst
325 per dei suggerimenti sulla configurazione del programmi di posta elettronica
326 per l'invio di patch intatte.
327
328 Rispondere ai commenti di revisione
329 -----------------------------------
330
331 In risposta alla vostra email, quasi certamente i revisori vi
332 invieranno dei commenti su come migliorare la vostra patch.  Dovete
333 rispondere a questi commenti; ignorare i revisori è un ottimo modo per
334 essere ignorati.  Riscontri o domande che non conducono ad una
335 modifica del codice quasi certamente dovrebbero portare ad un commento
336 nel changelog cosicché il prossimo revisore potrà meglio comprendere
337 cosa stia accadendo.
338
339 Assicuratevi di dire ai revisori quali cambiamenti state facendo e di
340 ringraziarli per il loro tempo.  Revisionare codice è un lavoro faticoso e che
341 richiede molto tempo, e a volte i revisori diventano burberi. Tuttavia, anche in
342 questo caso, rispondete con educazione e concentratevi sul problema che hanno
343 evidenziato. Quando inviate una version successiva ricordatevi di aggiungere un
344 ``patch changelog`` alla email di intestazione o ad ogni singola patch spiegando
345 le differenze rispetto a sottomissioni precedenti (vedere
346 :ref:`it_the_canonical_patch_format`).
347
348 Leggete Documentation/translations/it_IT/process/email-clients.rst per
349 le raccomandazioni sui programmi di posta elettronica e l'etichetta da usare
350 sulle liste di discussione.
351
352 .. _it_resend_reminders:
353
354 Non scoraggiatevi - o impazientitevi
355 ------------------------------------
356
357 Dopo che avete inviato le vostre modifiche, siate pazienti e aspettate.
358 I revisori sono persone occupate e potrebbero non ricevere la vostra patch
359 immediatamente.
360
361 Un tempo, le patch erano solite scomparire nel vuoto senza alcun commento,
362 ma ora il processo di sviluppo funziona meglio.  Dovreste ricevere commenti
363 in una settimana o poco più; se questo non dovesse accadere, assicuratevi di
364 aver inviato le patch correttamente.  Aspettate almeno una settimana prima di
365 rinviare le modifiche o sollecitare i revisori - probabilmente anche di più
366 durante la finestra d'integrazione.
367
368 Potete anche rinviare la patch, o la serie di patch, dopo un paio di settimane
369 aggiungendo la parola "RESEND" nel titolo::
370
371     [PATCH Vx RESEND] sub/sys: Condensed patch summary
372
373 Ma non aggiungete "RESEND" quando state sottomettendo una versione modificata
374 della vostra patch, o serie di patch - "RESEND" si applica solo alla
375 sottomissione di patch, o serie di patch, che non hanno subito modifiche
376 dall'ultima volta che sono state inviate.
377
378 Aggiungete PATCH nell'oggetto
379 -----------------------------
380
381 Dato l'alto volume di e-mail per Linus, e la lista linux-kernel, è prassi
382 prefiggere il vostro oggetto con [PATCH].  Questo permette a Linus e agli
383 altri sviluppatori del kernel di distinguere facilmente le patch dalle altre
384 discussioni.
385
386 ``git send-email`` lo fa automaticamente.
387
388
389 Firmate il vostro lavoro - Il certificato d'origine dello sviluppatore
390 ----------------------------------------------------------------------
391
392 Per migliorare la tracciabilità su "chi ha fatto cosa", specialmente per
393 quelle patch che per raggiungere lo stadio finale passano attraverso
394 diversi livelli di manutentori, abbiamo introdotto la procedura di "firma"
395 delle patch che vengono inviate per e-mail.
396
397 La firma è una semplice riga alla fine della descrizione della patch che
398 certifica che l'avete scritta voi o che avete il diritto di pubblicarla
399 come patch open-source.  Le regole sono abbastanza semplici: se potete
400 certificare quanto segue:
401
402 Il certificato d'origine dello sviluppatore 1.1
403 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
404
405 Contribuendo a questo progetto, io certifico che:
406
407         (a) Il contributo è stato creato interamente, o in parte, da me e che
408             ho il diritto di inviarlo in accordo con la licenza open-source
409             indicata nel file; oppure
410
411         (b) Il contributo è basato su un lavoro precedente che, nei limiti
412             della mia conoscenza, è coperto da un'appropriata licenza
413             open-source che mi da il diritto di modificarlo e inviarlo,
414             le cui modifiche sono interamente o in parte mie, in accordo con
415             la licenza open-source (a meno che non abbia il permesso di usare
416             un'altra licenza) indicata nel file; oppure
417
418         (c) Il contributo mi è stato fornito direttamente da qualcuno che
419             ha certificato (a), (b) o (c) e non l'ho modificata.
420
421         (d) Capisco e concordo col fatto che questo progetto e i suoi
422             contributi sono pubblici e che un registro dei contributi (incluse
423             tutte le informazioni personali che invio con essi, inclusa la mia
424             firma) verrà mantenuto indefinitamente e che possa essere
425             ridistribuito in accordo con questo progetto o le licenze
426             open-source coinvolte.
427
428 poi dovete solo aggiungere una riga che dice::
429
430         Signed-off-by: Random J Developer <random@developer.example.org>
431
432 usando il vostro vero nome (spiacenti, non si accettano pseudonimi o
433 contributi anonimi). Questo verrà fatto automaticamente se usate
434 ``git commit -s``. Anche il ripristino di uno stato precedente dovrebbe
435 includere "Signed-off-by", se usate ``git revert -s`` questo verrà
436 fatto automaticamente.
437
438 Alcune persone aggiungono delle etichette alla fine.  Per ora queste verranno
439 ignorate, ma potete farlo per meglio identificare procedure aziendali interne o
440 per aggiungere dettagli circa la firma.
441
442 In seguito al SoB (Signed-off-by:) dell'autore ve ne sono altri da
443 parte di tutte quelle persone che si sono occupate della gestione e
444 del trasporto della patch. Queste però non sono state coinvolte nello
445 sviluppo, ma la loro sequenza d'apparizione ci racconta il percorso
446 **reale** che una patch a intrapreso dallo sviluppatore, fino al
447 manutentore, per poi giungere a Linus.
448
449
450 Quando utilizzare Acked-by:, Cc:, e Co-developed-by:
451 ----------------------------------------------------
452
453 L'etichetta Signed-off-by: indica che il firmatario è stato coinvolto nello
454 sviluppo della patch, o che era nel suo percorso di consegna.
455
456 Se una persona non è direttamente coinvolta con la preparazione o gestione
457 della patch ma desidera firmare e mettere agli atti la loro approvazione,
458 allora queste persone possono chiedere di aggiungere al changelog della patch
459 una riga Acked-by:.
460
461 Acked-by: viene spesso utilizzato dai manutentori del sottosistema in oggetto
462 quando quello stesso manutentore non ha contribuito né trasmesso la patch.
463
464 Acked-by: non è formale come Signed-off-by:.  Questo indica che la persona ha
465 revisionato la patch e l'ha trovata accettabile.  Per cui, a volte, chi
466 integra le patch convertirà un "sì, mi sembra che vada bene" in un Acked-by:
467 (ma tenete presente che solitamente è meglio chiedere esplicitamente).
468
469 Acked-by: non indica l'accettazione di un'intera patch.  Per esempio, quando
470 una patch ha effetti su diversi sottosistemi e ha un Acked-by: da un
471 manutentore di uno di questi, significa che il manutentore accetta quella
472 parte di codice relativa al sottosistema che mantiene.  Qui dovremmo essere
473 giudiziosi.  Quando si hanno dei dubbi si dovrebbe far riferimento alla
474 discussione originale negli archivi della lista di discussione.
475
476 Se una persona ha avuto l'opportunità di commentare la patch, ma non lo ha
477 fatto, potete aggiungere l'etichetta ``Cc:`` alla patch.  Questa è l'unica
478 etichetta che può essere aggiunta senza che la persona in questione faccia
479 alcunché - ma dovrebbe indicare che la persona ha ricevuto una copia della
480 patch.  Questa etichetta documenta che terzi potenzialmente interessati sono
481 stati inclusi nella discussione.
482
483 Co-developed-by: indica che la patch è stata cosviluppata da diversi
484 sviluppatori; viene usato per assegnare più autori (in aggiunta a quello
485 associato all'etichetta From:) quando più persone lavorano ad una patch.  Dato
486 che Co-developed-by: implica la paternità della patch, ogni Co-developed-by:
487 dev'essere seguito immediatamente dal Signed-off-by: del corrispondente
488 coautore. Qui si applica la procedura di base per sign-off, in pratica
489 l'ordine delle etichette Signed-off-by: dovrebbe riflettere il più possibile
490 l'ordine cronologico della storia della patch, indipendentemente dal fatto che
491 la paternità venga assegnata via From: o Co-developed-by:. Da notare che
492 l'ultimo Signed-off-by: dev'essere quello di colui che ha sottomesso la patch.
493
494 Notate anche che l'etichetta From: è opzionale quando l'autore in From: è
495 anche la persona (e indirizzo email) indicato nel From: dell'intestazione
496 dell'email.
497
498 Esempio di una patch sottomessa dall'autore in From:::
499
500         <changelog>
501
502         Co-developed-by: First Co-Author <first@coauthor.example.org>
503         Signed-off-by: First Co-Author <first@coauthor.example.org>
504         Co-developed-by: Second Co-Author <second@coauthor.example.org>
505         Signed-off-by: Second Co-Author <second@coauthor.example.org>
506         Signed-off-by: From Author <from@author.example.org>
507
508 Esempio di una patch sottomessa dall'autore Co-developed-by:::
509
510         From: From Author <from@author.example.org>
511
512         <changelog>
513
514         Co-developed-by: Random Co-Author <random@coauthor.example.org>
515         Signed-off-by: Random Co-Author <random@coauthor.example.org>
516         Signed-off-by: From Author <from@author.example.org>
517         Co-developed-by: Submitting Co-Author <sub@coauthor.example.org>
518         Signed-off-by: Submitting Co-Author <sub@coauthor.example.org>
519
520 Utilizzare Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: e Fixes:
521 -------------------------------------------------------------------------
522
523 L'etichetta Reported-by da credito alle persone che trovano e riportano i bachi
524 e si spera che questo possa ispirarli ad aiutarci nuovamente in futuro.
525 Rammentate che se il baco è stato riportato in privato, dovrete chiedere il
526 permesso prima di poter utilizzare l'etichetta Reported-by. Questa etichetta va
527 usata per i bachi, dunque non usatela per richieste di nuove funzionalità.
528
529 L'etichetta Tested-by: indica che la patch è stata verificata con successo
530 (su un qualche sistema) dalla persona citata.  Questa etichetta informa i
531 manutentori che qualche verifica è stata fatta, fornisce un mezzo per trovare
532 persone che possano verificare il codice in futuro, e garantisce che queste
533 stesse persone ricevano credito per il loro lavoro.
534
535 Reviewd-by:, invece, indica che la patch è stata revisionata ed è stata
536 considerata accettabile in accordo con la dichiarazione dei revisori:
537
538 Dichiarazione di svista dei revisori
539 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
540
541 Offrendo la mia etichetta Reviewed-by, dichiaro quanto segue:
542
543          (a) Ho effettuato una revisione tecnica di questa patch per valutarne
544              l'adeguatezza ai fini dell'inclusione nel ramo principale del
545              kernel.
546
547          (b) Tutti i problemi e le domande riguardanti la patch sono stati
548              comunicati al mittente.  Sono soddisfatto dalle risposte
549              del mittente.
550
551          (c) Nonostante ci potrebbero essere cose migliorabili in queste
552              sottomissione, credo che sia, in questo momento, (1) una modifica
553              di interesse per il kernel, e (2) libera da problemi che
554              potrebbero metterne in discussione l'integrazione.
555
556          (d) Nonostante abbia revisionato la patch e creda che vada bene,
557              non garantisco (se non specificato altrimenti) che questa
558              otterrà quello che promette o funzionerà correttamente in tutte
559              le possibili situazioni.
560
561 L'etichetta Reviewed-by è la dichiarazione di un parere sulla bontà di
562 una modifica che si ritiene appropriata e senza alcun problema tecnico
563 importante.  Qualsiasi revisore interessato (quelli che lo hanno fatto)
564 possono offrire il proprio Reviewed-by per la patch.  Questa etichetta serve
565 a dare credito ai revisori e a informare i manutentori sul livello di revisione
566 che è stato fatto sulla patch.  L'etichetta Reviewd-by, quando fornita da
567 revisori conosciuti per la loro conoscenza sulla materia in oggetto e per la
568 loro serietà nella revisione, accrescerà le probabilità che la vostra patch
569 venga integrate nel kernel.
570
571 Quando si riceve una email sulla lista di discussione da un tester o
572 un revisore, le etichette Tested-by o Reviewd-by devono essere
573 aggiunte dall'autore quando invierà nuovamente la patch. Tuttavia, se
574 la patch è cambiata in modo significativo, queste etichette potrebbero
575 non avere più senso e quindi andrebbero rimosse. Solitamente si tiene traccia
576 della rimozione nel changelog della patch (subito dopo il separatore '---').
577
578 L'etichetta Suggested-by: indica che l'idea della patch è stata suggerita
579 dalla persona nominata e le da credito. Tenete a mente che questa etichetta
580 non dovrebbe essere aggiunta senza un permesso esplicito, specialmente se
581 l'idea non è stata pubblicata in un forum pubblico.  Detto ciò, dando credito
582 a chi ci fornisce delle idee, si spera di poterli ispirare ad aiutarci
583 nuovamente in futuro.
584
585 L'etichetta Fixes: indica che la patch corregge un problema in un commit
586 precedente.  Serve a chiarire l'origine di un baco, il che aiuta la revisione
587 del baco stesso.  Questa etichetta è di aiuto anche per i manutentori dei
588 kernel stabili al fine di capire quale kernel deve ricevere la correzione.
589 Questo è il modo suggerito per indicare che un baco è stato corretto nella
590 patch. Per maggiori dettagli leggete :ref:`it_describe_changes`
591
592 Da notare che aggiungere un tag "Fixes:" non esime dalle regole
593 previste per i kernel stabili, e nemmeno dalla necessità di aggiungere
594 in copia conoscenza stable@vger.kernel.org su tutte le patch per
595 suddetti kernel.
596
597 .. _it_the_canonical_patch_format:
598
599 Il formato canonico delle patch
600 -------------------------------
601
602 Questa sezione descrive il formato che dovrebbe essere usato per le patch.
603 Notate che se state usando un repositorio ``git`` per salvare le vostre patch
604 potere usare il comando ``git format-patch`` per ottenere patch nel formato
605 appropriato.  Lo strumento non crea il testo necessario, per cui, leggete
606 le seguenti istruzioni.
607
608 L'oggetto di una patch canonica è la riga::
609
610     Subject: [PATCH 001/123] subsystem: summary phrase
611
612 Il corpo di una patch canonica contiene i seguenti elementi:
613
614   - Una riga ``from`` che specifica l'autore della patch, seguita
615     da una riga vuota (necessaria soltanto se la persona che invia la
616     patch non ne è l'autore).
617
618   - Il corpo della spiegazione, con linee non più lunghe di 75 caratteri,
619     che verrà copiato permanentemente nel changelog per descrivere la patch.
620
621   - Una riga vuota
622
623   - Le righe ``Signed-off-by:``, descritte in precedenza, che finiranno
624     anch'esse nel changelog.
625
626   - Una linea di demarcazione contenente semplicemente ``---``.
627
628   - Qualsiasi altro commento che non deve finire nel changelog.
629
630   - Le effettive modifiche al codice (il prodotto di ``diff``).
631
632 Il formato usato per l'oggetto permette ai programmi di posta di usarlo
633 per ordinare le patch alfabeticamente - tutti i programmi di posta hanno
634 questa funzionalità - dato che al numero sequenziale si antepongono degli zeri;
635 in questo modo l'ordine numerico ed alfabetico coincidono.
636
637 Il ``subsystem`` nell'oggetto dell'email dovrebbe identificare l'area
638 o il sottosistema modificato dalla patch.
639
640 La ``summary phrase`` nell'oggetto dell'email dovrebbe descrivere brevemente
641 il contenuto della patch.  La ``summary phrase`` non dovrebbe essere un nome
642 di file. Non utilizzate la stessa ``summary phrase`` per tutte le patch in
643 una serie (dove una ``serie di patch`` è una sequenza ordinata di diverse
644 patch correlate).
645
646 Ricordatevi che la ``summary phrase`` della vostra email diventerà un
647 identificatore globale ed unico per quella patch.  Si propaga fino al
648 changelog ``git``.  La ``summary phrase`` potrà essere usata in futuro
649 dagli sviluppatori per riferirsi a quella patch.  Le persone vorranno
650 cercare la ``summary phrase`` su internet per leggere le discussioni che la
651 riguardano.  Potrebbe anche essere l'unica cosa che le persone vedranno
652 quando, in due o tre mesi, riguarderanno centinaia di patch usando strumenti
653 come ``gitk`` o ``git log --oneline``.
654
655 Per queste ragioni, dovrebbe essere lunga fra i 70 e i 75 caratteri, e deve
656 descrivere sia cosa viene modificato, sia il perché sia necessario. Essere
657 brevi e descrittivi è una bella sfida, ma questo è quello che fa un riassunto
658 ben scritto.
659
660 La ``summary phrase`` può avere un'etichetta (*tag*) di prefisso racchiusa fra
661 le parentesi quadre "Subject: [PATCH <tag>...] <summary phrase>".
662 Le etichette non verranno considerate come parte della frase riassuntiva, ma
663 indicano come la patch dovrebbe essere trattata.  Fra le etichette più comuni
664 ci sono quelle di versione che vengono usate quando una patch è stata inviata
665 più volte (per esempio, "v1, v2, v3"); oppure "RFC" per indicare che si
666 attendono dei commenti (*Request For Comments*).
667
668 Se ci sono quattro patch nella serie, queste dovrebbero essere
669 enumerate così: 1/4, 2/4, 3/4, 4/4.  Questo assicura che gli
670 sviluppatori capiranno l'ordine in cui le patch dovrebbero essere
671 applicate, e per tracciare quelle che hanno revisionate o che hanno
672 applicato.
673
674 Un paio di esempi di oggetti::
675
676     Subject: [PATCH 2/5] ext2: improve scalability of bitmap searching
677     Subject: [PATCH v2 01/27] x86: fix eflags tracking
678     Subject: [PATCH v2] sub/sys: Condensed patch summary
679     Subject: [PATCH v2 M/N] sub/sys: Condensed patch summary
680
681 La riga ``from`` dev'essere la prima nel corpo del messaggio ed è nel
682 formato:
683
684         From: Patch Author <author@example.com>
685
686 La riga ``from`` indica chi verrà accreditato nel changelog permanente come
687 l'autore della patch.  Se la riga ``from`` è mancante, allora per determinare
688 l'autore da inserire nel changelog verrà usata la riga ``From``
689 nell'intestazione dell'email.
690
691 Il corpo della spiegazione verrà incluso nel changelog permanente, per cui
692 deve aver senso per un lettore esperto che è ha dimenticato i dettagli della
693 discussione che hanno portato alla patch.  L'inclusione di informazioni
694 sui problemi oggetto dalla patch (messaggi del kernel, messaggi di oops,
695 eccetera) è particolarmente utile per le persone che potrebbero cercare fra
696 i messaggi di log per la patch che li tratta. Il testo dovrebbe essere scritto
697 con abbastanza dettagli da far capire al lettore **perché** quella
698 patch fu creata, e questo a distanza di settimane, mesi, o addirittura
699 anni.
700
701 Se la patch corregge un errore di compilazione, non sarà necessario
702 includere proprio _tutto_ quello che è uscito dal compilatore;
703 aggiungete solo quello che è necessario per far si che la vostra patch
704 venga trovata.  Come nella ``summary phrase``, è importante essere sia
705 brevi che descrittivi.
706
707 La linea di demarcazione ``---`` serve essenzialmente a segnare dove finisce
708 il messaggio di changelog.
709
710 Aggiungere il ``diffstat`` dopo ``---`` è un buon uso di questo spazio, per
711 mostrare i file che sono cambiati, e il numero di file aggiunto o rimossi.
712 Un ``diffstat`` è particolarmente utile per le patch grandi. Se
713 includete un ``diffstat`` dopo ``---``, usate le opzioni ``-p 1 -w70``
714 cosicché i nomi dei file elencati non occupino troppo spazio
715 (facilmente rientreranno negli 80 caratteri, magari con qualche
716 indentazione).  (``git`` genera di base dei diffstat adatti).
717
718 I commenti che sono importanti solo per i manutentori, quindi
719 inadatti al changelog permanente, dovrebbero essere messi qui.  Un
720 buon esempio per questo tipo di commenti potrebbe essere il cosiddetto
721 ``patch changelogs`` che descrivere le differenze fra le versioni
722 della patch.
723
724 Queste informazioni devono andare **dopo** la linea ``---`` che separa
725 il *changelog* dal resto della patch. Le informazioni riguardanti la
726 versione di una patch non sono parte del *chagelog* che viene incluso
727 in git. Queste sono informazioni utili solo ai revisori. Se venissero
728 messe sopra la riga, qualcuno dovrà fare del lavoro manuale per
729 rimuoverle; cosa che invece viene fatta automaticamente quando vengono
730 messe correttamente oltre la riga.::
731
732   <commit message>
733   ...
734   Signed-off-by: Author <author@mail>
735   ---
736   V2 -> V3: Removed redundant helper function
737   V1 -> V2: Cleaned up coding style and addressed review comments
738
739   path/to/file | 5+++--
740   ...
741
742 Maggiori dettagli sul formato delle patch nei riferimenti qui di seguito.
743
744 .. _it_backtraces:
745
746 Aggiungere i *backtrace* nei messaggi di commit
747 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
748
749 I *backtrace* aiutano a documentare la sequenza di chiamate a funzione
750 che portano ad un problema. Tuttavia, non tutti i *backtrace* sono
751 davvero utili. Per esempio, le sequenze iniziali di avvio sono uniche
752 e ovvie. Copiare integralmente l'output di ``dmesg`` aggiunge tante
753 informazioni che distraggono dal vero problema (per esempio, i
754 marcatori temporali, la lista dei moduli, la lista dei registri, lo
755 stato dello stack).
756
757 Quindi, per rendere utile un *backtrace* dovreste eliminare le
758 informazioni inutili, cosicché ci si possa focalizzare sul
759 problema. Ecco un esempio di un *backtrace* essenziale::
760
761   unchecked MSR access error: WRMSR to 0xd51 (tried to write 0x0000000000000064)
762   at rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20)
763   Call Trace:
764   mba_wrmsr
765   update_domains
766   rdtgroup_mkdir
767
768 .. _it_explicit_in_reply_to:
769
770 Usare esplicitamente In-Reply-To nell'intestazione
771 --------------------------------------------------
772
773 Aggiungere manualmente In-Reply-To: nell'intestazione dell'e-mail
774 potrebbe essere d'aiuto per associare una patch ad una discussione
775 precedente, per esempio per collegare la correzione di un baco con l'e-mail
776 che lo riportava.  Tuttavia, per serie di patch multiple è generalmente
777 sconsigliato l'uso di In-Reply-To: per collegare precedenti versioni.
778 In questo modo versioni multiple di una patch non diventeranno un'ingestibile
779 giungla di riferimenti all'interno dei programmi di posta.  Se un collegamento
780 è utile, potete usare https://lore.kernel.org/ per ottenere i collegamenti
781 ad una versione precedente di una serie di patch (per esempio, potete usarlo
782 per l'email introduttiva alla serie).
783
784 Riferimenti
785 -----------
786
787 Andrew Morton, "La patch perfetta" (tpp).
788   <http://www.ozlabs.org/~akpm/stuff/tpp.txt>
789
790 Jeff Garzik, "Formato per la sottomissione di patch per il kernel Linux"
791   <https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html>
792
793 Greg Kroah-Hartman, "Come scocciare un manutentore di un sottosistema"
794   <http://www.kroah.com/log/linux/maintainer.html>
795
796   <http://www.kroah.com/log/linux/maintainer-02.html>
797
798   <http://www.kroah.com/log/linux/maintainer-03.html>
799
800   <http://www.kroah.com/log/linux/maintainer-04.html>
801
802   <http://www.kroah.com/log/linux/maintainer-05.html>
803
804   <http://www.kroah.com/log/linux/maintainer-06.html>
805
806 No!!!! Basta gigantesche bombe patch alle persone sulla lista linux-kernel@vger.kernel.org!
807   <https://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.net>
808
809 Kernel Documentation/translations/it_IT/process/coding-style.rst.
810
811 E-mail di Linus Torvalds sul formato canonico di una patch:
812   <https://lore.kernel.org/r/Pine.LNX.4.58.0504071023190.28951@ppc970.osdl.org>
813
814 Andi Kleen, "Su come sottomettere patch del kernel"
815   Alcune strategie su come sottomettere modifiche toste o controverse.
816
817   http://halobates.de/on-submitting-patches.pdf