xref: /OK3568_Linux_fs/kernel/Documentation/translations/it_IT/process/submitting-patches.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. include:: ../disclaimer-ita.rst
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun:Original: :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
4*4882a593Smuzhiyun:Translator: Federico Vaga <federico.vaga@vaga.pv.it>
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun.. _it_submittingpatches:
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunInviare patch: la guida essenziale per vedere il vostro codice nel kernel
9*4882a593Smuzhiyun=========================================================================
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunUna persona o un'azienda che volesse inviare una patch al kernel potrebbe
12*4882a593Smuzhiyunsentirsi scoraggiata dal processo di sottomissione, specialmente quando manca
13*4882a593Smuzhiyununa certa familiarità col "sistema".  Questo testo è una raccolta di
14*4882a593Smuzhiyunsuggerimenti che aumenteranno significativamente le probabilità di vedere le
15*4882a593Smuzhiyunvostre patch accettate.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunQuesto documento contiene un vasto numero di suggerimenti concisi.  Per
18*4882a593Smuzhiyunmaggiori dettagli su come funziona il processo di sviluppo del kernel leggete
19*4882a593Smuzhiyun:ref:`Documentation/translations/it_IT/process <it_development_process_main>`.
20*4882a593SmuzhiyunLeggete anche :ref:`Documentation/translations/it_IT/process/submit-checklist.rst <it_submitchecklist>`
21*4882a593Smuzhiyunper una lista di punti da verificare prima di inviare del codice.  Se state
22*4882a593Smuzhiyuninviando un driver, allora leggete anche :ref:`Documentation/translations/it_IT/process/submitting-drivers.rst <it_submittingdrivers>`;
23*4882a593Smuzhiyunper delle patch relative alle associazioni per Device Tree leggete
24*4882a593SmuzhiyunDocumentation/devicetree/bindings/submitting-patches.rst.
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunMolti di questi passi descrivono il comportamento di base del sistema di
27*4882a593Smuzhiyuncontrollo di versione ``git``; se utilizzate ``git`` per preparare le vostre
28*4882a593Smuzhiyunpatch molto del lavoro più ripetitivo lo troverete già fatto per voi, tuttavia
29*4882a593Smuzhiyundovete preparare e documentare un certo numero di patch.  Generalmente, l'uso
30*4882a593Smuzhiyundi ``git`` renderà la vostra vita di sviluppatore del kernel più facile.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun0) Ottenere i sorgenti attuali
33*4882a593Smuzhiyun------------------------------
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunSe non avete un repositorio coi sorgenti del kernel più recenti, allora usate
36*4882a593Smuzhiyun``git`` per ottenerli.  Vorrete iniziare col repositorio principale che può
37*4882a593Smuzhiyunessere recuperato col comando::
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun  git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunNotate, comunque, che potreste non voler sviluppare direttamente coi sorgenti
42*4882a593Smuzhiyunprincipali del kernel.  La maggior parte dei manutentori hanno i propri
43*4882a593Smuzhiyunsorgenti e desiderano che le patch siano preparate basandosi su di essi.
44*4882a593SmuzhiyunGuardate l'elemento **T:** per un determinato sottosistema nel file MAINTANERS
45*4882a593Smuzhiyunche troverete nei sorgenti, o semplicemente chiedete al manutentore nel caso
46*4882a593Smuzhiyunin cui i sorgenti da usare non siano elencati il quel file.
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunEsiste ancora la possibilità di scaricare un rilascio del kernel come archivio
49*4882a593Smuzhiyuntar (come descritto in una delle prossime sezioni), ma questa è la via più
50*4882a593Smuzhiyuncomplicata per sviluppare per il kernel.
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun1) ``diff -up``
53*4882a593Smuzhiyun---------------
54*4882a593Smuzhiyun
55*4882a593SmuzhiyunSe dovete produrre le vostre patch a mano, usate ``diff -up`` o ``diff -uprN``
56*4882a593Smuzhiyunper crearle.  Git produce di base le patch in questo formato; se state
57*4882a593Smuzhiyunusando ``git``, potete saltare interamente questa sezione.
58*4882a593Smuzhiyun
59*4882a593SmuzhiyunTutte le modifiche al kernel Linux avvengono mediate patch, come descritte
60*4882a593Smuzhiyunin :manpage:`diff(1)`.  Quando create la vostra patch, assicuratevi di
61*4882a593Smuzhiyuncrearla nel formato "unified diff", come l'argomento ``-u`` di
62*4882a593Smuzhiyun:manpage:`diff(1)`.
63*4882a593SmuzhiyunInoltre, per favore usate l'argomento ``-p`` per mostrare la funzione C
64*4882a593Smuzhiyunalla quale si riferiscono le diverse modifiche - questo rende il risultato
65*4882a593Smuzhiyundi ``diff`` molto più facile da leggere.  Le patch dovrebbero essere basate
66*4882a593Smuzhiyunsulla radice dei sorgenti del kernel, e non sulle sue sottocartelle.
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunPer creare una patch per un singolo file, spesso è sufficiente fare::
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	SRCTREE=linux
71*4882a593Smuzhiyun	MYFILE=drivers/net/mydriver.c
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun	cd $SRCTREE
74*4882a593Smuzhiyun	cp $MYFILE $MYFILE.orig
75*4882a593Smuzhiyun	vi $MYFILE	# make your change
76*4882a593Smuzhiyun	cd ..
77*4882a593Smuzhiyun	diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch
78*4882a593Smuzhiyun
79*4882a593SmuzhiyunPer creare una patch per molteplici file, dovreste spacchettare i sorgenti
80*4882a593Smuzhiyun"vergini", o comunque non modificati, e fare un ``diff`` coi vostri.
81*4882a593SmuzhiyunPer esempio::
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun	MYSRC=/devel/linux
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun	tar xvfz linux-3.19.tar.gz
86*4882a593Smuzhiyun	mv linux-3.19 linux-3.19-vanilla
87*4882a593Smuzhiyun	diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \
88*4882a593Smuzhiyun		linux-3.19-vanilla $MYSRC > /tmp/patch
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun``dontdiff`` è una lista di file che sono generati durante il processo di
91*4882a593Smuzhiyuncompilazione del kernel; questi dovrebbero essere ignorati in qualsiasi
92*4882a593Smuzhiyunpatch generata con :manpage:`diff(1)`.
93*4882a593Smuzhiyun
94*4882a593SmuzhiyunAssicuratevi che la vostra patch non includa file che non ne fanno veramente
95*4882a593Smuzhiyunparte.  Al fine di verificarne la correttezza, assicuratevi anche di
96*4882a593Smuzhiyunrevisionare la vostra patch -dopo- averla generata con :manpage:`diff(1)`.
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunSe le vostre modifiche producono molte differenze, allora dovrete dividerle
99*4882a593Smuzhiyunin patch indipendenti che modificano le cose in passi logici;  leggete
100*4882a593Smuzhiyun:ref:`split_changes`.  Questo faciliterà la revisione da parte degli altri
101*4882a593Smuzhiyunsviluppatori, il che è molto importante se volete che la patch venga accettata.
102*4882a593Smuzhiyun
103*4882a593SmuzhiyunSe state utilizzando ``git``, ``git rebase -i`` può aiutarvi nel procedimento.
104*4882a593SmuzhiyunSe non usate ``git``, un'alternativa popolare è ``quilt``
105*4882a593Smuzhiyun<http://savannah.nongnu.org/projects/quilt>.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun.. _it_describe_changes:
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun2) Descrivete le vostre modifiche
110*4882a593Smuzhiyun---------------------------------
111*4882a593Smuzhiyun
112*4882a593SmuzhiyunDescrivete il vostro problema. Esiste sempre un problema che via ha spinto
113*4882a593Smuzhiyunha fare il vostro lavoro, che sia la correzione di un baco da una riga o una
114*4882a593Smuzhiyunnuova funzionalità da 5000 righe di codice.  Convincete i revisori che vale
115*4882a593Smuzhiyunla pena risolvere il vostro problema e che ha senso continuare a leggere oltre
116*4882a593Smuzhiyunal primo paragrafo.
117*4882a593Smuzhiyun
118*4882a593SmuzhiyunDescrivete ciò che sarà visibile agli utenti.  Chiari incidenti nel sistema
119*4882a593Smuzhiyune blocchi sono abbastanza convincenti, ma non tutti i bachi sono così evidenti.
120*4882a593SmuzhiyunAnche se il problema è stato scoperto durante la revisione del codice,
121*4882a593Smuzhiyundescrivete l'impatto che questo avrà sugli utenti.  Tenete presente che
122*4882a593Smuzhiyunla maggior parte delle installazioni Linux usa un kernel che arriva dai
123*4882a593Smuzhiyunsorgenti stabili o dai sorgenti di una distribuzione particolare che prende
124*4882a593Smuzhiyunsingolarmente le patch dai sorgenti principali; quindi, includete tutte
125*4882a593Smuzhiyunle informazioni che possono essere utili a capire le vostre modifiche:
126*4882a593Smuzhiyunle circostanze che causano il problema, estratti da dmesg, descrizioni di
127*4882a593Smuzhiyunun incidente di sistema, prestazioni di una regressione, picchi di latenza,
128*4882a593Smuzhiyunblocchi, eccetera.
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunQuantificare le ottimizzazioni e i compromessi.  Se affermate di aver
131*4882a593Smuzhiyunmigliorato le prestazioni, il consumo di memoria, l'impatto sollo stack,
132*4882a593Smuzhiyuno la dimensione del file binario, includete dei numeri a supporto della
133*4882a593Smuzhiyunvostra dichiarazione.  Ma ricordatevi di descrivere anche eventuali costi
134*4882a593Smuzhiyunche non sono ovvi.  Solitamente le ottimizzazioni non sono gratuite, ma sono
135*4882a593Smuzhiyunun compromesso fra l'uso di CPU, la memoria e la leggibilità; o, quando si
136*4882a593Smuzhiyunparla di ipotesi euristiche, fra differenti carichi.  Descrivete i lati
137*4882a593Smuzhiyunnegativi che vi aspettate dall'ottimizzazione cosicché i revisori possano
138*4882a593Smuzhiyunvalutare i costi e i benefici.
139*4882a593Smuzhiyun
140*4882a593SmuzhiyunUna volta che il problema è chiaro, descrivete come lo risolvete andando
141*4882a593Smuzhiyunnel dettaglio tecnico.  È molto importante che descriviate la modifica
142*4882a593Smuzhiyunin un inglese semplice cosicché i revisori possano verificare che il codice si
143*4882a593Smuzhiyuncomporti come descritto.
144*4882a593Smuzhiyun
145*4882a593SmuzhiyunI manutentori vi saranno grati se scrivete la descrizione della patch in un
146*4882a593Smuzhiyunformato che sia compatibile con il gestore dei sorgenti usato dal kernel,
147*4882a593Smuzhiyun``git``, come un "commit log".  Leggete :ref:`it_explicit_in_reply_to`.
148*4882a593Smuzhiyun
149*4882a593SmuzhiyunRisolvete solo un problema per patch.  Se la vostra descrizione inizia ad
150*4882a593Smuzhiyunessere lunga, potrebbe essere un segno che la vostra patch necessita d'essere
151*4882a593Smuzhiyundivisa. Leggete :ref:`split_changes`.
152*4882a593Smuzhiyun
153*4882a593SmuzhiyunQuando inviate o rinviate una patch o una serie, includete la descrizione
154*4882a593Smuzhiyuncompleta delle modifiche e la loro giustificazione.  Non limitatevi a dire che
155*4882a593Smuzhiyunquesta è la versione N della patch (o serie).  Non aspettatevi che i
156*4882a593Smuzhiyunmanutentori di un sottosistema vadano a cercare le versioni precedenti per
157*4882a593Smuzhiyuncercare la descrizione da aggiungere.  In pratica, la patch (o serie) e la sua
158*4882a593Smuzhiyundescrizione devono essere un'unica cosa.  Questo aiuta i manutentori e i
159*4882a593Smuzhiyunrevisori.  Probabilmente, alcuni revisori non hanno nemmeno ricevuto o visto
160*4882a593Smuzhiyunle versioni precedenti della patch.
161*4882a593Smuzhiyun
162*4882a593SmuzhiyunDescrivete le vostro modifiche usando l'imperativo, per esempio "make xyzzy
163*4882a593Smuzhiyundo frotz" piuttosto che "[This patch] makes xyzzy do frotz" or "[I] changed
164*4882a593Smuzhiyunxyzzy to do frotz", come se steste dando ordini al codice di cambiare il suo
165*4882a593Smuzhiyuncomportamento.
166*4882a593Smuzhiyun
167*4882a593SmuzhiyunSe la patch corregge un baco conosciuto, fare riferimento a quel baco inserendo
168*4882a593Smuzhiyunil suo numero o il suo URL.  Se la patch è la conseguenza di una discussione
169*4882a593Smuzhiyunsu una lista di discussione, allora fornite l'URL all'archivio di quella
170*4882a593Smuzhiyundiscussione;  usate i collegamenti a https://lkml.kernel.org/ con il
171*4882a593Smuzhiyun``Message-Id``, in questo modo vi assicurerete che il collegamento non diventi
172*4882a593Smuzhiyuninvalido nel tempo.
173*4882a593Smuzhiyun
174*4882a593SmuzhiyunTuttavia, cercate di rendere la vostra spiegazione comprensibile anche senza
175*4882a593Smuzhiyunfar riferimento a fonti esterne.  In aggiunta ai collegamenti a bachi e liste
176*4882a593Smuzhiyundi discussione, riassumente i punti più importanti della discussione che hanno
177*4882a593Smuzhiyunportato alla creazione della patch.
178*4882a593Smuzhiyun
179*4882a593SmuzhiyunSe volete far riferimento a uno specifico commit, non usate solo
180*4882a593Smuzhiyunl'identificativo SHA-1.  Per cortesia, aggiungete anche la breve riga
181*4882a593Smuzhiyunriassuntiva del commit per rendere la chiaro ai revisori l'oggetto.
182*4882a593SmuzhiyunPer esempio::
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun	Commit e21d2170f36602ae2708 ("video: remove unnecessary
185*4882a593Smuzhiyun	platform_set_drvdata()") removed the unnecessary
186*4882a593Smuzhiyun	platform_set_drvdata(), but left the variable "dev" unused,
187*4882a593Smuzhiyun	delete it.
188*4882a593Smuzhiyun
189*4882a593SmuzhiyunDovreste anche assicurarvi di usare almeno i primi 12 caratteri
190*4882a593Smuzhiyundell'identificativo SHA-1.  Il repositorio del kernel ha *molti* oggetti e
191*4882a593Smuzhiyunquesto rende possibile la collisione fra due identificativi con pochi
192*4882a593Smuzhiyuncaratteri.  Tenete ben presente che anche se oggi non ci sono collisioni con il
193*4882a593Smuzhiyunvostro identificativo a 6 caratteri, potrebbero essercene fra 5 anni da oggi.
194*4882a593Smuzhiyun
195*4882a593SmuzhiyunSe la vostra patch corregge un baco in un commit specifico, per esempio avete
196*4882a593Smuzhiyuntrovato un problema usando ``git bisect``, per favore usate l'etichetta
197*4882a593Smuzhiyun'Fixes:' indicando i primi 12 caratteri dell'identificativo SHA-1 seguiti
198*4882a593Smuzhiyundalla riga riassuntiva.  Per esempio::
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun	Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()")
201*4882a593Smuzhiyun
202*4882a593SmuzhiyunLa seguente configurazione di ``git config`` può essere usata per formattare
203*4882a593Smuzhiyuni risultati dei comandi ``git log`` o ``git show`` come nell'esempio
204*4882a593Smuzhiyunprecedente::
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun	[core]
207*4882a593Smuzhiyun		abbrev = 12
208*4882a593Smuzhiyun	[pretty]
209*4882a593Smuzhiyun		fixes = Fixes: %h (\"%s\")
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun.. _it_split_changes:
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun3) Separate le vostre modifiche
214*4882a593Smuzhiyun-------------------------------
215*4882a593Smuzhiyun
216*4882a593SmuzhiyunSeparate ogni **cambiamento logico** in patch distinte.
217*4882a593Smuzhiyun
218*4882a593SmuzhiyunPer esempio, se i vostri cambiamenti per un singolo driver includono
219*4882a593Smuzhiyunsia delle correzioni di bachi che miglioramenti alle prestazioni,
220*4882a593Smuzhiyunallora separateli in due o più patch.  Se i vostri cambiamenti includono
221*4882a593Smuzhiyunun aggiornamento dell'API e un nuovo driver che lo sfrutta, allora separateli
222*4882a593Smuzhiyunin due patch.
223*4882a593Smuzhiyun
224*4882a593SmuzhiyunD'altro canto, se fate una singola modifica su più file, raggruppate tutte
225*4882a593Smuzhiyunqueste modifiche in una singola patch.  Dunque, un singolo cambiamento logico
226*4882a593Smuzhiyunè contenuto in una sola patch.
227*4882a593Smuzhiyun
228*4882a593SmuzhiyunIl punto da ricordare è che ogni modifica dovrebbe fare delle modifiche
229*4882a593Smuzhiyunche siano facilmente comprensibili e che possano essere verificate dai revisori.
230*4882a593SmuzhiyunOgni patch dovrebbe essere giustificabile di per sé.
231*4882a593Smuzhiyun
232*4882a593SmuzhiyunSe al fine di ottenere un cambiamento completo una patch dipende da un'altra,
233*4882a593Smuzhiyunva bene.  Semplicemente scrivete una nota nella descrizione della patch per
234*4882a593Smuzhiyunfarlo presente: **"this patch depends on patch X"**.
235*4882a593Smuzhiyun
236*4882a593SmuzhiyunQuando dividete i vostri cambiamenti in una serie di patch, prestate
237*4882a593Smuzhiyunparticolare attenzione alla verifica di ogni patch della serie; per ognuna
238*4882a593Smuzhiyunil kernel deve compilare ed essere eseguito correttamente.  Gli sviluppatori
239*4882a593Smuzhiyunche usano ``git bisect`` per scovare i problemi potrebbero finire nel mezzo
240*4882a593Smuzhiyundella vostra serie in un punto qualsiasi; non vi saranno grati se nel mezzo
241*4882a593Smuzhiyunavete introdotto dei bachi.
242*4882a593Smuzhiyun
243*4882a593SmuzhiyunSe non potete condensare la vostra serie di patch in una più piccola, allora
244*4882a593Smuzhiyunpubblicatene una quindicina alla volta e aspettate che vengano revisionate
245*4882a593Smuzhiyuned integrate.
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun4) Verificate lo stile delle vostre modifiche
249*4882a593Smuzhiyun---------------------------------------------
250*4882a593Smuzhiyun
251*4882a593SmuzhiyunControllate che la vostra patch non violi lo stile del codice, maggiori
252*4882a593Smuzhiyundettagli sono disponibili in :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`.
253*4882a593SmuzhiyunNon farlo porta semplicemente a una perdita di tempo da parte dei revisori e
254*4882a593Smuzhiyunvoi vedrete la vostra patch rifiutata, probabilmente senza nemmeno essere stata
255*4882a593Smuzhiyunletta.
256*4882a593Smuzhiyun
257*4882a593SmuzhiyunUn'eccezione importante si ha quando del codice viene spostato da un file
258*4882a593Smuzhiyunad un altro -- in questo caso non dovreste modificare il codice spostato
259*4882a593Smuzhiyunper nessun motivo, almeno non nella patch che lo sposta.  Questo separa
260*4882a593Smuzhiyunchiaramente l'azione di spostare il codice e il vostro cambiamento.
261*4882a593SmuzhiyunQuesto aiuta enormemente la revisione delle vere differenze e permette agli
262*4882a593Smuzhiyunstrumenti di tenere meglio la traccia della storia del codice.
263*4882a593Smuzhiyun
264*4882a593SmuzhiyunPrima di inviare una patch, verificatene lo stile usando l'apposito
265*4882a593Smuzhiyunverificatore (scripts/checkpatch.pl).  Da notare, comunque, che il verificator
266*4882a593Smuzhiyundi stile dovrebbe essere visto come una guida, non come un sostituto al
267*4882a593Smuzhiyungiudizio umano.  Se il vostro codice è migliore nonostante una violazione
268*4882a593Smuzhiyundello stile, probabilmente è meglio lasciarlo com'è.
269*4882a593Smuzhiyun
270*4882a593SmuzhiyunIl verificatore ha tre diversi livelli di severità:
271*4882a593Smuzhiyun - ERROR: le cose sono molto probabilmente sbagliate
272*4882a593Smuzhiyun - WARNING: le cose necessitano d'essere revisionate con attenzione
273*4882a593Smuzhiyun - CHECK: le cose necessitano di un pensierino
274*4882a593Smuzhiyun
275*4882a593SmuzhiyunDovreste essere in grado di giustificare tutte le eventuali violazioni rimaste
276*4882a593Smuzhiyunnella vostra patch.
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun5) Selezionate i destinatari della vostra patch
280*4882a593Smuzhiyun-----------------------------------------------
281*4882a593Smuzhiyun
282*4882a593SmuzhiyunDovreste sempre inviare una copia della patch ai manutentori dei sottosistemi
283*4882a593Smuzhiyuninteressati dalle modifiche; date un'occhiata al file MAINTAINERS e alla storia
284*4882a593Smuzhiyundelle revisioni per scoprire chi si occupa del codice.  Lo script
285*4882a593Smuzhiyunscripts/get_maintainer.pl può esservi d'aiuto.  Se non riuscite a trovare un
286*4882a593Smuzhiyunmanutentore per il sottosistema su cui state lavorando, allora Andrew Morton
287*4882a593Smuzhiyun(akpm@linux-foundation.org) sarà la vostra ultima possibilità.
288*4882a593Smuzhiyun
289*4882a593SmuzhiyunNormalmente, dovreste anche scegliere una lista di discussione a cui inviare
290*4882a593Smuzhiyunla vostra serie di patch.  La lista di discussione linux-kernel@vger.kernel.org
291*4882a593Smuzhiyunè proprio l'ultima spiaggia, il volume di email su questa lista fa si che
292*4882a593Smuzhiyundiversi sviluppatori non la seguano.  Guardate nel file MAINTAINERS per trovare
293*4882a593Smuzhiyunla lista di discussione dedicata ad un sottosistema; probabilmente lì la vostra
294*4882a593Smuzhiyunpatch riceverà molta più attenzione.  Tuttavia, per favore, non spammate le
295*4882a593Smuzhiyunliste di discussione che non sono interessate al vostro lavoro.
296*4882a593Smuzhiyun
297*4882a593SmuzhiyunMolte delle liste di discussione relative al kernel vengono ospitate su
298*4882a593Smuzhiyunvger.kernel.org; potete trovare un loro elenco alla pagina
299*4882a593Smuzhiyunhttp://vger.kernel.org/vger-lists.html.  Tuttavia, ci sono altre liste di
300*4882a593Smuzhiyundiscussione ospitate altrove.
301*4882a593Smuzhiyun
302*4882a593SmuzhiyunNon inviate più di 15 patch alla volta sulle liste di discussione vger!!!
303*4882a593Smuzhiyun
304*4882a593SmuzhiyunL'ultimo giudizio sull'integrazione delle modifiche accettate spetta a
305*4882a593SmuzhiyunLinux Torvalds.  Il suo indirizzo e-mail è <torvalds@linux-foundation.org>.
306*4882a593SmuzhiyunRiceve moltissime e-mail, e, a questo punto, solo poche patch passano
307*4882a593Smuzhiyundirettamente attraverso il suo giudizio; quindi, dovreste fare del vostro
308*4882a593Smuzhiyunmeglio per -evitare di- inviargli e-mail.
309*4882a593Smuzhiyun
310*4882a593SmuzhiyunSe avete una patch che corregge un baco di sicurezza che potrebbe essere
311*4882a593Smuzhiyunsfruttato, inviatela a security@kernel.org.  Per bachi importanti, un breve
312*4882a593Smuzhiyunembargo potrebbe essere preso in considerazione per dare il tempo alle
313*4882a593Smuzhiyundistribuzioni di prendere la patch e renderla disponibile ai loro utenti;
314*4882a593Smuzhiyunin questo caso, ovviamente, la patch non dovrebbe essere inviata su alcuna
315*4882a593Smuzhiyunlista di discussione pubblica.
316*4882a593Smuzhiyun
317*4882a593SmuzhiyunPatch che correggono bachi importanti su un kernel già rilasciato, dovrebbero
318*4882a593Smuzhiyunessere inviate ai manutentori dei kernel stabili aggiungendo la seguente riga::
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun  Cc: stable@vger.kernel.org
321*4882a593Smuzhiyun
322*4882a593Smuzhiyunnella vostra patch, nell'area dedicata alle firme (notate, NON come destinatario
323*4882a593Smuzhiyundelle e-mail).  In aggiunta a questo file, dovreste leggere anche
324*4882a593Smuzhiyun:ref:`Documentation/translations/it_IT/process/stable-kernel-rules.rst <it_stable_kernel_rules>`
325*4882a593Smuzhiyun
326*4882a593SmuzhiyunTuttavia, notate, che alcuni manutentori di sottosistema preferiscono avere
327*4882a593Smuzhiyunl'ultima parola su quali patch dovrebbero essere aggiunte ai kernel stabili.
328*4882a593SmuzhiyunLa rete di manutentori, in particolare, non vorrebbe vedere i singoli
329*4882a593Smuzhiyunsviluppatori aggiungere alle loro patch delle righe come quella sopracitata.
330*4882a593Smuzhiyun
331*4882a593SmuzhiyunSe le modifiche hanno effetti sull'interfaccia con lo spazio utente, per favore
332*4882a593Smuzhiyuninviate una patch per le pagine man ai manutentori di suddette pagine (elencati
333*4882a593Smuzhiyunnel file MAINTAINERS), o almeno una notifica circa la vostra modifica,
334*4882a593Smuzhiyuncosicché l'informazione possa trovare la sua strada nel manuale.  Le modifiche
335*4882a593Smuzhiyunall'API dello spazio utente dovrebbero essere inviate in copia anche a
336*4882a593Smuzhiyunlinux-api@vger.kernel.org.
337*4882a593Smuzhiyun
338*4882a593SmuzhiyunPer le piccole patch potreste aggiungere in CC l'indirizzo
339*4882a593Smuzhiyun*Trivial Patch Monkey trivial@kernel.org* che ha lo scopo di raccogliere
340*4882a593Smuzhiyunle patch "banali".  Date uno sguardo al file MAINTAINERS per vedere chi
341*4882a593Smuzhiyunè l'attuale amministratore.
342*4882a593Smuzhiyun
343*4882a593SmuzhiyunLe patch banali devono rientrare in una delle seguenti categorie:
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun- errori grammaticali nella documentazione
346*4882a593Smuzhiyun- errori grammaticali negli errori che potrebbero rompere :manpage:`grep(1)`
347*4882a593Smuzhiyun- correzione di avvisi di compilazione (riempirsi di avvisi inutili è negativo)
348*4882a593Smuzhiyun- correzione di errori di compilazione (solo se correggono qualcosa sul serio)
349*4882a593Smuzhiyun- rimozione di funzioni/macro deprecate
350*4882a593Smuzhiyun- sostituzione di codice non potabile con uno portabile (anche in codice
351*4882a593Smuzhiyun  specifico per un'architettura, dato che le persone copiano, fintanto che
352*4882a593Smuzhiyun  la modifica sia banale)
353*4882a593Smuzhiyun- qualsiasi modifica dell'autore/manutentore di un file (in pratica
354*4882a593Smuzhiyun  "patch monkey" in modalità ritrasmissione)
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun
357*4882a593Smuzhiyun6) Niente: MIME, links, compressione, allegati.  Solo puro testo
358*4882a593Smuzhiyun----------------------------------------------------------------
359*4882a593Smuzhiyun
360*4882a593SmuzhiyunLinus e gli altri sviluppatori del kernel devono poter commentare
361*4882a593Smuzhiyunle modifiche che sottomettete.  Per uno sviluppatore è importante
362*4882a593Smuzhiyunessere in grado di "citare" le vostre modifiche, usando normali
363*4882a593Smuzhiyunprogrammi di posta elettronica, cosicché sia possibile commentare
364*4882a593Smuzhiyununa porzione specifica del vostro codice.
365*4882a593Smuzhiyun
366*4882a593SmuzhiyunPer questa ragione tutte le patch devono essere inviate via e-mail
367*4882a593Smuzhiyuncome testo.
368*4882a593Smuzhiyun
369*4882a593Smuzhiyun.. warning::
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun  Se decidete di copiare ed incollare la patch nel corpo dell'e-mail, state
372*4882a593Smuzhiyun  attenti che il vostro programma non corrompa il contenuto con andate
373*4882a593Smuzhiyun  a capo automatiche.
374*4882a593Smuzhiyun
375*4882a593SmuzhiyunLa patch non deve essere un allegato MIME, compresso o meno.  Molti
376*4882a593Smuzhiyundei più popolari programmi di posta elettronica non trasmettono un allegato
377*4882a593SmuzhiyunMIME come puro testo, e questo rende impossibile commentare il vostro codice.
378*4882a593SmuzhiyunInoltre, un allegato MIME rende l'attività di Linus più laboriosa, diminuendo
379*4882a593Smuzhiyuncosì la possibilità che il vostro allegato-MIME venga accettato.
380*4882a593Smuzhiyun
381*4882a593SmuzhiyunEccezione: se il vostro servizio di posta storpia le patch, allora qualcuno
382*4882a593Smuzhiyunpotrebbe chiedervi di rinviarle come allegato MIME.
383*4882a593Smuzhiyun
384*4882a593SmuzhiyunLeggete :ref:`Documentation/translations/it_IT/process/email-clients.rst <it_email_clients>`
385*4882a593Smuzhiyunper dei suggerimenti sulla configurazione del programmi di posta elettronica
386*4882a593Smuzhiyunper l'invio di patch intatte.
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun7) Dimensione delle e-mail
389*4882a593Smuzhiyun--------------------------
390*4882a593Smuzhiyun
391*4882a593SmuzhiyunLe grosse modifiche non sono adatte ad una lista di discussione, e nemmeno
392*4882a593Smuzhiyunper alcuni manutentori.  Se la vostra patch, non compressa, eccede i 300 kB
393*4882a593Smuzhiyundi spazio, allora caricatela in una spazio accessibile su internet fornendo
394*4882a593Smuzhiyunl'URL (collegamento) ad essa.  Ma notate che se la vostra patch eccede i 300 kB
395*4882a593Smuzhiyunè quasi certo che necessiti comunque di essere spezzettata.
396*4882a593Smuzhiyun
397*4882a593Smuzhiyun8) Rispondere ai commenti di revisione
398*4882a593Smuzhiyun--------------------------------------
399*4882a593Smuzhiyun
400*4882a593SmuzhiyunQuasi certamente i revisori vi invieranno dei commenti su come migliorare
401*4882a593Smuzhiyunla vostra patch.  Dovete rispondere a questi commenti; ignorare i revisori
402*4882a593Smuzhiyunè un ottimo modo per essere ignorati.  Riscontri o domande che non conducono
403*4882a593Smuzhiyunad una modifica del codice quasi certamente dovrebbero portare ad un commento
404*4882a593Smuzhiyunnel changelog cosicché il prossimo revisore potrà meglio comprendere cosa stia
405*4882a593Smuzhiyunaccadendo.
406*4882a593Smuzhiyun
407*4882a593SmuzhiyunAssicuratevi di dire ai revisori quali cambiamenti state facendo e di
408*4882a593Smuzhiyunringraziarli per il loro tempo.  Revisionare codice è un lavoro faticoso e che
409*4882a593Smuzhiyunrichiede molto tempo, e a volte i revisori diventano burberi.  Tuttavia, anche
410*4882a593Smuzhiyunin questo caso, rispondete con educazione e concentratevi sul problema che
411*4882a593Smuzhiyunhanno evidenziato.
412*4882a593Smuzhiyun
413*4882a593Smuzhiyun9) Non scoraggiatevi - o impazientitevi
414*4882a593Smuzhiyun---------------------------------------
415*4882a593Smuzhiyun
416*4882a593SmuzhiyunDopo che avete inviato le vostre modifiche, siate pazienti e aspettate.
417*4882a593SmuzhiyunI revisori sono persone occupate e potrebbero non ricevere la vostra patch
418*4882a593Smuzhiyunimmediatamente.
419*4882a593Smuzhiyun
420*4882a593SmuzhiyunUn tempo, le patch erano solite scomparire nel vuoto senza alcun commento,
421*4882a593Smuzhiyunma ora il processo di sviluppo funziona meglio.  Dovreste ricevere commenti
422*4882a593Smuzhiyunin una settimana o poco più; se questo non dovesse accadere, assicuratevi di
423*4882a593Smuzhiyunaver inviato le patch correttamente.  Aspettate almeno una settimana prima di
424*4882a593Smuzhiyunrinviare le modifiche o sollecitare i revisori - probabilmente anche di più
425*4882a593Smuzhiyundurante la finestra d'integrazione.
426*4882a593Smuzhiyun
427*4882a593Smuzhiyun10) Aggiungete PATCH nell'oggetto
428*4882a593Smuzhiyun---------------------------------
429*4882a593Smuzhiyun
430*4882a593SmuzhiyunDato l'alto volume di e-mail per Linus, e la lista linux-kernel, è prassi
431*4882a593Smuzhiyunprefiggere il vostro oggetto con [PATCH].  Questo permette a Linus e agli
432*4882a593Smuzhiyunaltri sviluppatori del kernel di distinguere facilmente le patch dalle altre
433*4882a593Smuzhiyundiscussioni.
434*4882a593Smuzhiyun
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun11) Firmate il vostro lavoro - Il certificato d'origine dello sviluppatore
437*4882a593Smuzhiyun--------------------------------------------------------------------------
438*4882a593Smuzhiyun
439*4882a593SmuzhiyunPer migliorare la tracciabilità su "chi ha fatto cosa", specialmente per
440*4882a593Smuzhiyunquelle patch che per raggiungere lo stadio finale passano attraverso
441*4882a593Smuzhiyundiversi livelli di manutentori, abbiamo introdotto la procedura di "firma"
442*4882a593Smuzhiyundelle patch che vengono inviate per e-mail.
443*4882a593Smuzhiyun
444*4882a593SmuzhiyunLa firma è una semplice riga alla fine della descrizione della patch che
445*4882a593Smuzhiyuncertifica che l'avete scritta voi o che avete il diritto di pubblicarla
446*4882a593Smuzhiyuncome patch open-source.  Le regole sono abbastanza semplici: se potete
447*4882a593Smuzhiyuncertificare quanto segue:
448*4882a593Smuzhiyun
449*4882a593SmuzhiyunIl certificato d'origine dello sviluppatore 1.1
450*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
451*4882a593Smuzhiyun
452*4882a593SmuzhiyunContribuendo a questo progetto, io certifico che:
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun        (a) Il contributo è stato creato interamente, o in parte, da me e che
455*4882a593Smuzhiyun            ho il diritto di inviarlo in accordo con la licenza open-source
456*4882a593Smuzhiyun            indicata nel file; oppure
457*4882a593Smuzhiyun
458*4882a593Smuzhiyun        (b) Il contributo è basato su un lavoro precedente che, nei limiti
459*4882a593Smuzhiyun            della mia conoscenza, è coperto da un'appropriata licenza
460*4882a593Smuzhiyun            open-source che mi da il diritto di modificarlo e inviarlo,
461*4882a593Smuzhiyun            le cui modifiche sono interamente o in parte mie, in accordo con
462*4882a593Smuzhiyun            la licenza open-source (a meno che non abbia il permesso di usare
463*4882a593Smuzhiyun            un'altra licenza) indicata nel file; oppure
464*4882a593Smuzhiyun
465*4882a593Smuzhiyun        (c) Il contributo mi è stato fornito direttamente da qualcuno che
466*4882a593Smuzhiyun            ha certificato (a), (b) o (c) e non l'ho modificata.
467*4882a593Smuzhiyun
468*4882a593Smuzhiyun        (d) Capisco e concordo col fatto che questo progetto e i suoi
469*4882a593Smuzhiyun            contributi sono pubblici e che un registro dei contributi (incluse
470*4882a593Smuzhiyun            tutte le informazioni personali che invio con essi, inclusa la mia
471*4882a593Smuzhiyun            firma) verrà mantenuto indefinitamente e che possa essere
472*4882a593Smuzhiyun            ridistribuito in accordo con questo progetto o le licenze
473*4882a593Smuzhiyun            open-source coinvolte.
474*4882a593Smuzhiyun
475*4882a593Smuzhiyunpoi dovete solo aggiungere una riga che dice::
476*4882a593Smuzhiyun
477*4882a593Smuzhiyun	Signed-off-by: Random J Developer <random@developer.example.org>
478*4882a593Smuzhiyun
479*4882a593Smuzhiyunusando il vostro vero nome (spiacenti, non si accettano pseudonimi o
480*4882a593Smuzhiyuncontributi anonimi).
481*4882a593Smuzhiyun
482*4882a593SmuzhiyunAlcune persone aggiungono delle etichette alla fine.  Per ora queste verranno
483*4882a593Smuzhiyunignorate, ma potete farlo per meglio identificare procedure aziendali interne o
484*4882a593Smuzhiyunper aggiungere dettagli circa la firma.
485*4882a593Smuzhiyun
486*4882a593SmuzhiyunSe siete un manutentore di un sottosistema o di un ramo, qualche volta dovrete
487*4882a593Smuzhiyunmodificare leggermente le patch che avete ricevuto al fine di poterle
488*4882a593Smuzhiyunintegrare; questo perché il codice non è esattamente lo stesso nei vostri
489*4882a593Smuzhiyunsorgenti e in quelli dei vostri contributori.  Se rispettate rigidamente la
490*4882a593Smuzhiyunregola (c), dovreste chiedere al mittente di rifare la patch, ma questo è
491*4882a593Smuzhiyuncontroproducente e una totale perdita di tempo ed energia.  La regola (b)
492*4882a593Smuzhiyunvi permette di correggere il codice, ma poi diventa davvero maleducato cambiare
493*4882a593Smuzhiyunla patch di qualcuno e addossargli la responsabilità per i vostri bachi.
494*4882a593SmuzhiyunPer risolvere questo problema dovreste aggiungere una riga, fra l'ultimo
495*4882a593SmuzhiyunSigned-off-by e il vostro, che spiega la vostra modifica.  Nonostante non ci
496*4882a593Smuzhiyunsia nulla di obbligatorio, un modo efficace è quello di indicare il vostro
497*4882a593Smuzhiyunnome o indirizzo email fra parentesi quadre, seguito da una breve descrizione;
498*4882a593Smuzhiyunquesto renderà abbastanza visibile chi è responsabile per le modifiche
499*4882a593Smuzhiyundell'ultimo minuto.  Per esempio::
500*4882a593Smuzhiyun
501*4882a593Smuzhiyun	Signed-off-by: Random J Developer <random@developer.example.org>
502*4882a593Smuzhiyun	[lucky@maintainer.example.org: struct foo moved from foo.c to foo.h]
503*4882a593Smuzhiyun	Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org>
504*4882a593Smuzhiyun
505*4882a593SmuzhiyunQuesta pratica è particolarmente utile se siete i manutentori di un ramo
506*4882a593Smuzhiyunstabile ma al contempo volete dare credito agli autori, tracciare e integrare
507*4882a593Smuzhiyunle modifiche, e proteggere i mittenti dalle lamentele.  Notate che in nessuna
508*4882a593Smuzhiyuncircostanza è permessa la modifica dell'identità dell'autore (l'intestazione
509*4882a593SmuzhiyunFrom), dato che è quella che appare nei changelog.
510*4882a593Smuzhiyun
511*4882a593SmuzhiyunUn appunto speciale per chi porta il codice su vecchie versioni.  Sembra che
512*4882a593Smuzhiyunsia comune l'utile pratica di inserire un'indicazione circa l'origine della
513*4882a593Smuzhiyunpatch all'inizio del messaggio di commit (appena dopo la riga dell'oggetto)
514*4882a593Smuzhiyunal fine di migliorare la tracciabilità.  Per esempio, questo è quello che si
515*4882a593Smuzhiyunvede nel rilascio stabile 3.x-stable::
516*4882a593Smuzhiyun
517*4882a593Smuzhiyun  Date:   Tue Oct 7 07:26:38 2014 -0400
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun    libata: Un-break ATA blacklist
520*4882a593Smuzhiyun
521*4882a593Smuzhiyun    commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream.
522*4882a593Smuzhiyun
523*4882a593SmuzhiyunE qui quello che potrebbe vedersi su un kernel più vecchio dove la patch è
524*4882a593Smuzhiyunstata applicata::
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun    Date:   Tue May 13 22:12:27 2008 +0200
527*4882a593Smuzhiyun
528*4882a593Smuzhiyun        wireless, airo: waitbusy() won't delay
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun        [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a]
531*4882a593Smuzhiyun
532*4882a593SmuzhiyunQualunque sia il formato, questa informazione fornisce un importante aiuto
533*4882a593Smuzhiyunalle persone che vogliono seguire i vostri sorgenti, e quelle che cercano
534*4882a593Smuzhiyundei bachi.
535*4882a593Smuzhiyun
536*4882a593Smuzhiyun
537*4882a593Smuzhiyun12) Quando utilizzare Acked-by:, Cc:, e Co-developed-by:
538*4882a593Smuzhiyun--------------------------------------------------------
539*4882a593Smuzhiyun
540*4882a593SmuzhiyunL'etichetta Signed-off-by: indica che il firmatario è stato coinvolto nello
541*4882a593Smuzhiyunsviluppo della patch, o che era nel suo percorso di consegna.
542*4882a593Smuzhiyun
543*4882a593SmuzhiyunSe una persona non è direttamente coinvolta con la preparazione o gestione
544*4882a593Smuzhiyundella patch ma desidera firmare e mettere agli atti la loro approvazione,
545*4882a593Smuzhiyunallora queste persone possono chiedere di aggiungere al changelog della patch
546*4882a593Smuzhiyununa riga Acked-by:.
547*4882a593Smuzhiyun
548*4882a593SmuzhiyunAcked-by: viene spesso utilizzato dai manutentori del sottosistema in oggetto
549*4882a593Smuzhiyunquando quello stesso manutentore non ha contribuito né trasmesso la patch.
550*4882a593Smuzhiyun
551*4882a593SmuzhiyunAcked-by: non è formale come Signed-off-by:.  Questo indica che la persona ha
552*4882a593Smuzhiyunrevisionato la patch e l'ha trovata accettabile.  Per cui, a volte, chi
553*4882a593Smuzhiyunintegra le patch convertirà un "sì, mi sembra che vada bene" in un Acked-by:
554*4882a593Smuzhiyun(ma tenete presente che solitamente è meglio chiedere esplicitamente).
555*4882a593Smuzhiyun
556*4882a593SmuzhiyunAcked-by: non indica l'accettazione di un'intera patch.  Per esempio, quando
557*4882a593Smuzhiyununa patch ha effetti su diversi sottosistemi e ha un Acked-by: da un
558*4882a593Smuzhiyunmanutentore di uno di questi, significa che il manutentore accetta quella
559*4882a593Smuzhiyunparte di codice relativa al sottosistema che mantiene.  Qui dovremmo essere
560*4882a593Smuzhiyungiudiziosi.  Quando si hanno dei dubbi si dovrebbe far riferimento alla
561*4882a593Smuzhiyundiscussione originale negli archivi della lista di discussione.
562*4882a593Smuzhiyun
563*4882a593SmuzhiyunSe una persona ha avuto l'opportunità di commentare la patch, ma non lo ha
564*4882a593Smuzhiyunfatto, potete aggiungere l'etichetta ``Cc:`` alla patch.  Questa è l'unica
565*4882a593Smuzhiyunetichetta che può essere aggiunta senza che la persona in questione faccia
566*4882a593Smuzhiyunalcunché - ma dovrebbe indicare che la persona ha ricevuto una copia della
567*4882a593Smuzhiyunpatch.  Questa etichetta documenta che terzi potenzialmente interessati sono
568*4882a593Smuzhiyunstati inclusi nella discussione.
569*4882a593Smuzhiyun
570*4882a593SmuzhiyunCo-developed-by: indica che la patch è stata cosviluppata da diversi
571*4882a593Smuzhiyunsviluppatori; viene usato per assegnare più autori (in aggiunta a quello
572*4882a593Smuzhiyunassociato all'etichetta From:) quando più persone lavorano ad una patch.  Dato
573*4882a593Smuzhiyunche Co-developed-by: implica la paternità della patch, ogni Co-developed-by:
574*4882a593Smuzhiyundev'essere seguito immediatamente dal Signed-off-by: del corrispondente
575*4882a593Smuzhiyuncoautore. Qui si applica la procedura di base per sign-off, in pratica
576*4882a593Smuzhiyunl'ordine delle etichette Signed-off-by: dovrebbe riflettere il più possibile
577*4882a593Smuzhiyunl'ordine cronologico della storia della patch, indipendentemente dal fatto che
578*4882a593Smuzhiyunla paternità venga assegnata via From: o Co-developed-by:. Da notare che
579*4882a593Smuzhiyunl'ultimo Signed-off-by: dev'essere quello di colui che ha sottomesso la patch.
580*4882a593Smuzhiyun
581*4882a593SmuzhiyunNotate anche che l'etichetta From: è opzionale quando l'autore in From: è
582*4882a593Smuzhiyunanche la persona (e indirizzo email) indicato nel From: dell'intestazione
583*4882a593Smuzhiyundell'email.
584*4882a593Smuzhiyun
585*4882a593SmuzhiyunEsempio di una patch sottomessa dall'autore in From:::
586*4882a593Smuzhiyun
587*4882a593Smuzhiyun	<changelog>
588*4882a593Smuzhiyun
589*4882a593Smuzhiyun	Co-developed-by: First Co-Author <first@coauthor.example.org>
590*4882a593Smuzhiyun	Signed-off-by: First Co-Author <first@coauthor.example.org>
591*4882a593Smuzhiyun	Co-developed-by: Second Co-Author <second@coauthor.example.org>
592*4882a593Smuzhiyun	Signed-off-by: Second Co-Author <second@coauthor.example.org>
593*4882a593Smuzhiyun	Signed-off-by: From Author <from@author.example.org>
594*4882a593Smuzhiyun
595*4882a593SmuzhiyunEsempio di una patch sottomessa dall'autore Co-developed-by:::
596*4882a593Smuzhiyun
597*4882a593Smuzhiyun	From: From Author <from@author.example.org>
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun	<changelog>
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun	Co-developed-by: Random Co-Author <random@coauthor.example.org>
602*4882a593Smuzhiyun	Signed-off-by: Random Co-Author <random@coauthor.example.org>
603*4882a593Smuzhiyun	Signed-off-by: From Author <from@author.example.org>
604*4882a593Smuzhiyun	Co-developed-by: Submitting Co-Author <sub@coauthor.example.org>
605*4882a593Smuzhiyun	Signed-off-by: Submitting Co-Author <sub@coauthor.example.org>
606*4882a593Smuzhiyun
607*4882a593Smuzhiyun13) Utilizzare Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: e Fixes:
608*4882a593Smuzhiyun-----------------------------------------------------------------------------
609*4882a593Smuzhiyun
610*4882a593SmuzhiyunL'etichetta Reported-by da credito alle persone che trovano e riportano i bachi
611*4882a593Smuzhiyune si spera che questo possa ispirarli ad aiutarci nuovamente in futuro.
612*4882a593SmuzhiyunRammentate che se il baco è stato riportato in privato, dovrete chiedere il
613*4882a593Smuzhiyunpermesso prima di poter utilizzare l'etichetta Reported-by.
614*4882a593Smuzhiyun
615*4882a593SmuzhiyunL'etichetta Tested-by: indica che la patch è stata verificata con successo
616*4882a593Smuzhiyun(su un qualche sistema) dalla persona citata.  Questa etichetta informa i
617*4882a593Smuzhiyunmanutentori che qualche verifica è stata fatta, fornisce un mezzo per trovare
618*4882a593Smuzhiyunpersone che possano verificare il codice in futuro, e garantisce che queste
619*4882a593Smuzhiyunstesse persone ricevano credito per il loro lavoro.
620*4882a593Smuzhiyun
621*4882a593SmuzhiyunReviewd-by:, invece, indica che la patch è stata revisionata ed è stata
622*4882a593Smuzhiyunconsiderata accettabile in accordo con la dichiarazione dei revisori:
623*4882a593Smuzhiyun
624*4882a593SmuzhiyunDichiarazione di svista dei revisori
625*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
626*4882a593Smuzhiyun
627*4882a593SmuzhiyunOffrendo la mia etichetta Reviewed-by, dichiaro quanto segue:
628*4882a593Smuzhiyun
629*4882a593Smuzhiyun	 (a) Ho effettuato una revisione tecnica di questa patch per valutarne
630*4882a593Smuzhiyun	     l'adeguatezza ai fini dell'inclusione nel ramo principale del
631*4882a593Smuzhiyun	     kernel.
632*4882a593Smuzhiyun
633*4882a593Smuzhiyun	 (b) Tutti i problemi e le domande riguardanti la patch sono stati
634*4882a593Smuzhiyun	     comunicati al mittente.  Sono soddisfatto dalle risposte
635*4882a593Smuzhiyun	     del mittente.
636*4882a593Smuzhiyun
637*4882a593Smuzhiyun	 (c) Nonostante ci potrebbero essere cose migliorabili in queste
638*4882a593Smuzhiyun	     sottomissione, credo che sia, in questo momento, (1) una modifica
639*4882a593Smuzhiyun	     di interesse per il kernel, e (2) libera da problemi che
640*4882a593Smuzhiyun	     potrebbero metterne in discussione l'integrazione.
641*4882a593Smuzhiyun
642*4882a593Smuzhiyun	 (d) Nonostante abbia revisionato la patch e creda che vada bene,
643*4882a593Smuzhiyun	     non garantisco (se non specificato altrimenti) che questa
644*4882a593Smuzhiyun	     otterrà quello che promette o funzionerà correttamente in tutte
645*4882a593Smuzhiyun	     le possibili situazioni.
646*4882a593Smuzhiyun
647*4882a593SmuzhiyunL'etichetta Reviewed-by è la dichiarazione di un parere sulla bontà di
648*4882a593Smuzhiyununa modifica che si ritiene appropriata e senza alcun problema tecnico
649*4882a593Smuzhiyunimportante.  Qualsiasi revisore interessato (quelli che lo hanno fatto)
650*4882a593Smuzhiyunpossono offrire il proprio Reviewed-by per la patch.  Questa etichetta serve
651*4882a593Smuzhiyuna dare credito ai revisori e a informare i manutentori sul livello di revisione
652*4882a593Smuzhiyunche è stato fatto sulla patch.  L'etichetta Reviewd-by, quando fornita da
653*4882a593Smuzhiyunrevisori conosciuti per la loro conoscenza sulla materia in oggetto e per la
654*4882a593Smuzhiyunloro serietà nella revisione, accrescerà le probabilità che la vostra patch
655*4882a593Smuzhiyunvenga integrate nel kernel.
656*4882a593Smuzhiyun
657*4882a593SmuzhiyunL'etichetta Suggested-by: indica che l'idea della patch è stata suggerita
658*4882a593Smuzhiyundalla persona nominata e le da credito. Tenete a mente che questa etichetta
659*4882a593Smuzhiyunnon dovrebbe essere aggiunta senza un permesso esplicito, specialmente se
660*4882a593Smuzhiyunl'idea non è stata pubblicata in un forum pubblico.  Detto ciò, dando credito
661*4882a593Smuzhiyuna chi ci fornisce delle idee, si spera di poterli ispirare ad aiutarci
662*4882a593Smuzhiyunnuovamente in futuro.
663*4882a593Smuzhiyun
664*4882a593SmuzhiyunL'etichetta Fixes: indica che la patch corregge un problema in un commit
665*4882a593Smuzhiyunprecedente.  Serve a chiarire l'origine di un baco, il che aiuta la revisione
666*4882a593Smuzhiyundel baco stesso.  Questa etichetta è di aiuto anche per i manutentori dei
667*4882a593Smuzhiyunkernel stabili al fine di capire quale kernel deve ricevere la correzione.
668*4882a593SmuzhiyunQuesto è il modo suggerito per indicare che un baco è stato corretto nella
669*4882a593Smuzhiyunpatch. Per maggiori dettagli leggete :ref:`it_describe_changes`
670*4882a593Smuzhiyun
671*4882a593Smuzhiyun
672*4882a593Smuzhiyun14) Il formato canonico delle patch
673*4882a593Smuzhiyun-----------------------------------
674*4882a593Smuzhiyun
675*4882a593SmuzhiyunQuesta sezione descrive il formato che dovrebbe essere usato per le patch.
676*4882a593SmuzhiyunNotate che se state usando un repositorio ``git`` per salvare le vostre patch
677*4882a593Smuzhiyunpotere usare il comando ``git format-patch`` per ottenere patch nel formato
678*4882a593Smuzhiyunappropriato.  Lo strumento non crea il testo necessario, per cui, leggete
679*4882a593Smuzhiyunle seguenti istruzioni.
680*4882a593Smuzhiyun
681*4882a593SmuzhiyunL'oggetto di una patch canonica è la riga::
682*4882a593Smuzhiyun
683*4882a593Smuzhiyun    Subject: [PATCH 001/123] subsystem: summary phrase
684*4882a593Smuzhiyun
685*4882a593SmuzhiyunIl corpo di una patch canonica contiene i seguenti elementi:
686*4882a593Smuzhiyun
687*4882a593Smuzhiyun  - Una riga ``from`` che specifica l'autore della patch, seguita
688*4882a593Smuzhiyun    da una riga vuota (necessaria soltanto se la persona che invia la
689*4882a593Smuzhiyun    patch non ne è l'autore).
690*4882a593Smuzhiyun
691*4882a593Smuzhiyun  - Il corpo della spiegazione, con linee non più lunghe di 75 caratteri,
692*4882a593Smuzhiyun    che verrà copiato permanentemente nel changelog per descrivere la patch.
693*4882a593Smuzhiyun
694*4882a593Smuzhiyun  - Una riga vuota
695*4882a593Smuzhiyun
696*4882a593Smuzhiyun  - Le righe ``Signed-off-by:``, descritte in precedenza, che finiranno
697*4882a593Smuzhiyun    anch'esse nel changelog.
698*4882a593Smuzhiyun
699*4882a593Smuzhiyun  - Una linea di demarcazione contenente semplicemente ``---``.
700*4882a593Smuzhiyun
701*4882a593Smuzhiyun  - Qualsiasi altro commento che non deve finire nel changelog.
702*4882a593Smuzhiyun
703*4882a593Smuzhiyun  - Le effettive modifiche al codice (il prodotto di ``diff``).
704*4882a593Smuzhiyun
705*4882a593SmuzhiyunIl formato usato per l'oggetto permette ai programmi di posta di usarlo
706*4882a593Smuzhiyunper ordinare le patch alfabeticamente - tutti i programmi di posta hanno
707*4882a593Smuzhiyunquesta funzionalità - dato che al numero sequenziale si antepongono degli zeri;
708*4882a593Smuzhiyunin questo modo l'ordine numerico ed alfabetico coincidono.
709*4882a593Smuzhiyun
710*4882a593SmuzhiyunIl ``subsystem`` nell'oggetto dell'email dovrebbe identificare l'area
711*4882a593Smuzhiyuno il sottosistema modificato dalla patch.
712*4882a593Smuzhiyun
713*4882a593SmuzhiyunLa ``summary phrase`` nell'oggetto dell'email dovrebbe descrivere brevemente
714*4882a593Smuzhiyunil contenuto della patch.  La ``summary phrase`` non dovrebbe essere un nome
715*4882a593Smuzhiyundi file. Non utilizzate la stessa ``summary phrase`` per tutte le patch in
716*4882a593Smuzhiyununa serie (dove una ``serie di patch`` è una sequenza ordinata di diverse
717*4882a593Smuzhiyunpatch correlate).
718*4882a593Smuzhiyun
719*4882a593SmuzhiyunRicordatevi che la ``summary phrase`` della vostra email diventerà un
720*4882a593Smuzhiyunidentificatore globale ed unico per quella patch.  Si propaga fino al
721*4882a593Smuzhiyunchangelog ``git``.  La ``summary phrase`` potrà essere usata in futuro
722*4882a593Smuzhiyundagli sviluppatori per riferirsi a quella patch.  Le persone vorranno
723*4882a593Smuzhiyuncercare la ``summary phrase`` su internet per leggere le discussioni che la
724*4882a593Smuzhiyunriguardano.  Potrebbe anche essere l'unica cosa che le persone vedranno
725*4882a593Smuzhiyunquando, in due o tre mesi, riguarderanno centinaia di patch usando strumenti
726*4882a593Smuzhiyuncome ``gitk`` o ``git log --oneline``.
727*4882a593Smuzhiyun
728*4882a593SmuzhiyunPer queste ragioni, dovrebbe essere lunga fra i 70 e i 75 caratteri, e deve
729*4882a593Smuzhiyundescrivere sia cosa viene modificato, sia il perché sia necessario. Essere
730*4882a593Smuzhiyunbrevi e descrittivi è una bella sfida, ma questo è quello che fa un riassunto
731*4882a593Smuzhiyunben scritto.
732*4882a593Smuzhiyun
733*4882a593SmuzhiyunLa ``summary phrase`` può avere un'etichetta (*tag*) di prefisso racchiusa fra
734*4882a593Smuzhiyunle parentesi quadre "Subject: [PATCH <tag>...] <summary phrase>".
735*4882a593SmuzhiyunLe etichette non verranno considerate come parte della frase riassuntiva, ma
736*4882a593Smuzhiyunindicano come la patch dovrebbe essere trattata.  Fra le etichette più comuni
737*4882a593Smuzhiyunci sono quelle di versione che vengono usate quando una patch è stata inviata
738*4882a593Smuzhiyunpiù volte (per esempio, "v1, v2, v3"); oppure "RFC" per indicare che si
739*4882a593Smuzhiyunattendono dei commenti (*Request For Comments*).  Se ci sono quattro patch
740*4882a593Smuzhiyunnella serie, queste dovrebbero essere enumerate così: 1/4, 2/4, 3/4, 4/4.
741*4882a593SmuzhiyunQuesto assicura che gli sviluppatori capiranno l'ordine in cui le patch
742*4882a593Smuzhiyundovrebbero essere applicate, e per tracciare quelle che hanno revisionate o
743*4882a593Smuzhiyunche hanno applicato.
744*4882a593Smuzhiyun
745*4882a593SmuzhiyunUn paio di esempi di oggetti::
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun    Subject: [PATCH 2/5] ext2: improve scalability of bitmap searching
748*4882a593Smuzhiyun    Subject: [PATCH v2 01/27] x86: fix eflags tracking
749*4882a593Smuzhiyun
750*4882a593SmuzhiyunLa riga ``from`` dev'essere la prima nel corpo del messaggio ed è nel
751*4882a593Smuzhiyunformato:
752*4882a593Smuzhiyun
753*4882a593Smuzhiyun        From: Patch Author <author@example.com>
754*4882a593Smuzhiyun
755*4882a593SmuzhiyunLa riga ``from`` indica chi verrà accreditato nel changelog permanente come
756*4882a593Smuzhiyunl'autore della patch.  Se la riga ``from`` è mancante, allora per determinare
757*4882a593Smuzhiyunl'autore da inserire nel changelog verrà usata la riga ``From``
758*4882a593Smuzhiyunnell'intestazione dell'email.
759*4882a593Smuzhiyun
760*4882a593SmuzhiyunIl corpo della spiegazione verrà incluso nel changelog permanente, per cui
761*4882a593Smuzhiyundeve aver senso per un lettore esperto che è ha dimenticato i dettagli della
762*4882a593Smuzhiyundiscussione che hanno portato alla patch.  L'inclusione di informazioni
763*4882a593Smuzhiyunsui problemi oggetto dalla patch (messaggi del kernel, messaggi di oops,
764*4882a593Smuzhiyuneccetera) è particolarmente utile per le persone che potrebbero cercare fra
765*4882a593Smuzhiyuni messaggi di log per la patch che li tratta.  Se la patch corregge un errore
766*4882a593Smuzhiyundi compilazione, non sarà necessario includere proprio _tutto_ quello che
767*4882a593Smuzhiyunè uscito dal compilatore; aggiungete solo quello che è necessario per far si
768*4882a593Smuzhiyunche la vostra patch venga trovata.  Come nella ``summary phrase``, è importante
769*4882a593Smuzhiyunessere sia brevi che descrittivi.
770*4882a593Smuzhiyun
771*4882a593SmuzhiyunLa linea di demarcazione ``---`` serve essenzialmente a segnare dove finisce
772*4882a593Smuzhiyunil messaggio di changelog.
773*4882a593Smuzhiyun
774*4882a593SmuzhiyunAggiungere il ``diffstat`` dopo ``---`` è un buon uso di questo spazio, per
775*4882a593Smuzhiyunmostrare i file che sono cambiati, e il numero di file aggiunto o rimossi.
776*4882a593SmuzhiyunUn ``diffstat`` è particolarmente utile per le patch grandi.  Altri commenti
777*4882a593Smuzhiyunche sono importanti solo per i manutentori, quindi inadatti al changelog
778*4882a593Smuzhiyunpermanente, dovrebbero essere messi qui.  Un buon esempio per questo tipo
779*4882a593Smuzhiyundi commenti potrebbe essere quello di descrivere le differenze fra le versioni
780*4882a593Smuzhiyundella patch.
781*4882a593Smuzhiyun
782*4882a593SmuzhiyunSe includete un ``diffstat`` dopo ``---``, usate le opzioni ``-p 1 -w70``
783*4882a593Smuzhiyuncosicché i nomi dei file elencati non occupino troppo spazio (facilmente
784*4882a593Smuzhiyunrientreranno negli 80 caratteri, magari con qualche indentazione).
785*4882a593Smuzhiyun(``git`` genera di base dei diffstat adatti).
786*4882a593Smuzhiyun
787*4882a593SmuzhiyunMaggiori dettagli sul formato delle patch nei riferimenti qui di seguito.
788*4882a593Smuzhiyun
789*4882a593Smuzhiyun.. _it_explicit_in_reply_to:
790*4882a593Smuzhiyun
791*4882a593Smuzhiyun15) Usare esplicitamente In-Reply-To nell'intestazione
792*4882a593Smuzhiyun------------------------------------------------------
793*4882a593Smuzhiyun
794*4882a593SmuzhiyunAggiungere manualmente In-Reply-To: nell'intestazione dell'e-mail
795*4882a593Smuzhiyunpotrebbe essere d'aiuto per associare una patch ad una discussione
796*4882a593Smuzhiyunprecedente, per esempio per collegare la correzione di un baco con l'e-mail
797*4882a593Smuzhiyunche lo riportava.  Tuttavia, per serie di patch multiple è generalmente
798*4882a593Smuzhiyunsconsigliato l'uso di In-Reply-To: per collegare precedenti versioni.
799*4882a593SmuzhiyunIn questo modo versioni multiple di una patch non diventeranno un'ingestibile
800*4882a593Smuzhiyungiungla di riferimenti all'interno dei programmi di posta.  Se un collegamento
801*4882a593Smuzhiyunè utile, potete usare https://lkml.kernel.org/ per ottenere i collegamenti
802*4882a593Smuzhiyunad una versione precedente di una serie di patch (per esempio, potete usarlo
803*4882a593Smuzhiyunper l'email introduttiva alla serie).
804*4882a593Smuzhiyun
805*4882a593Smuzhiyun16) Inviare richieste ``git pull``
806*4882a593Smuzhiyun----------------------------------
807*4882a593Smuzhiyun
808*4882a593SmuzhiyunSe avete una serie di patch, potrebbe essere più conveniente per un manutentore
809*4882a593Smuzhiyuntirarle dentro al repositorio del sottosistema attraverso l'operazione
810*4882a593Smuzhiyun``git pull``.  Comunque, tenete presente che prendere patch da uno sviluppatore
811*4882a593Smuzhiyunin questo modo richiede un livello di fiducia più alto rispetto a prenderle da
812*4882a593Smuzhiyununa lista di discussione.  Di conseguenza, molti manutentori sono riluttanti
813*4882a593Smuzhiyunad accettare richieste di *pull*, specialmente dagli sviluppatori nuovi e
814*4882a593Smuzhiyunquindi sconosciuti.  Se siete in dubbio, potete fare una richiesta di *pull*
815*4882a593Smuzhiyuncome messaggio introduttivo ad una normale pubblicazione di patch, così
816*4882a593Smuzhiyunil manutentore avrà la possibilità di scegliere come integrarle.
817*4882a593Smuzhiyun
818*4882a593SmuzhiyunUna richiesta di *pull* dovrebbe avere nell'oggetto [GIT] o [PULL].
819*4882a593SmuzhiyunLa richiesta stessa dovrebbe includere il nome del repositorio e quello del
820*4882a593Smuzhiyunramo su una singola riga; dovrebbe essere più o meno così::
821*4882a593Smuzhiyun
822*4882a593Smuzhiyun  Please pull from
823*4882a593Smuzhiyun
824*4882a593Smuzhiyun      git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus
825*4882a593Smuzhiyun
826*4882a593Smuzhiyun  to get these changes:
827*4882a593Smuzhiyun
828*4882a593SmuzhiyunUna richiesta di *pull* dovrebbe includere anche un messaggio generico
829*4882a593Smuzhiyunche dica cos'è incluso, una lista delle patch usando ``git shortlog``, e una
830*4882a593Smuzhiyunpanoramica sugli effetti della serie di patch con ``diffstat``.  Il modo più
831*4882a593Smuzhiyunsemplice per ottenere tutte queste informazioni è, ovviamente, quello di
832*4882a593Smuzhiyunlasciar fare tutto a ``git`` con il comando ``git request-pull``.
833*4882a593Smuzhiyun
834*4882a593SmuzhiyunAlcuni manutentori (incluso Linus) vogliono vedere le richieste di *pull*
835*4882a593Smuzhiyunda commit firmati con GPG; questo fornisce una maggiore garanzia sul fatto
836*4882a593Smuzhiyunche siate stati proprio voi a fare la richiesta.  In assenza di tale etichetta
837*4882a593Smuzhiyunfirmata Linus, in particolare, non prenderà alcuna patch da siti pubblici come
838*4882a593SmuzhiyunGitHub.
839*4882a593Smuzhiyun
840*4882a593SmuzhiyunIl primo passo verso la creazione di questa etichetta firmata è quello di
841*4882a593Smuzhiyuncreare una chiave GNUPG ed averla fatta firmare da uno o più sviluppatori
842*4882a593Smuzhiyunprincipali del kernel.  Questo potrebbe essere difficile per i nuovi
843*4882a593Smuzhiyunsviluppatori, ma non ci sono altre vie.  Andare alle conferenze potrebbe
844*4882a593Smuzhiyunessere un buon modo per trovare sviluppatori che possano firmare la vostra
845*4882a593Smuzhiyunchiave.
846*4882a593Smuzhiyun
847*4882a593SmuzhiyunUna volta che avete preparato la vostra serie di patch in ``git``, e volete che
848*4882a593Smuzhiyunqualcuno le prenda, create una etichetta firmata col comando ``git tag -s``.
849*4882a593SmuzhiyunQuesto creerà una nuova etichetta che identifica l'ultimo commit della serie
850*4882a593Smuzhiyuncontenente una firma creata con la vostra chiave privata.  Avrete anche
851*4882a593Smuzhiyunl'opportunità di aggiungere un messaggio di changelog all'etichetta; questo è
852*4882a593Smuzhiyunil posto ideale per descrivere gli effetti della richiesta di *pull*.
853*4882a593Smuzhiyun
854*4882a593SmuzhiyunSe i sorgenti da cui il manutentore prenderà le patch non sono gli stessi del
855*4882a593Smuzhiyunrepositorio su cui state lavorando, allora non dimenticatevi di caricare
856*4882a593Smuzhiyunl'etichetta firmata anche sui sorgenti pubblici.
857*4882a593Smuzhiyun
858*4882a593SmuzhiyunQuando generate una richiesta di *pull*, usate l'etichetta firmata come
859*4882a593Smuzhiyunobiettivo.  Un comando come il seguente farà il suo dovere::
860*4882a593Smuzhiyun
861*4882a593Smuzhiyun  git request-pull master git://my.public.tree/linux.git my-signed-tag
862*4882a593Smuzhiyun
863*4882a593Smuzhiyun
864*4882a593SmuzhiyunRiferimenti
865*4882a593Smuzhiyun-----------
866*4882a593Smuzhiyun
867*4882a593SmuzhiyunAndrew Morton, "La patch perfetta" (tpp).
868*4882a593Smuzhiyun  <http://www.ozlabs.org/~akpm/stuff/tpp.txt>
869*4882a593Smuzhiyun
870*4882a593SmuzhiyunJeff Garzik, "Formato per la sottomissione di patch per il kernel Linux"
871*4882a593Smuzhiyun  <https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html>
872*4882a593Smuzhiyun
873*4882a593SmuzhiyunGreg Kroah-Hartman, "Come scocciare un manutentore di un sottosistema"
874*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer.html>
875*4882a593Smuzhiyun
876*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer-02.html>
877*4882a593Smuzhiyun
878*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer-03.html>
879*4882a593Smuzhiyun
880*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer-04.html>
881*4882a593Smuzhiyun
882*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer-05.html>
883*4882a593Smuzhiyun
884*4882a593Smuzhiyun  <http://www.kroah.com/log/linux/maintainer-06.html>
885*4882a593Smuzhiyun
886*4882a593SmuzhiyunNo!!!! Basta gigantesche bombe patch alle persone sulla lista linux-kernel@vger.kernel.org!
887*4882a593Smuzhiyun  <https://lkml.org/lkml/2005/7/11/336>
888*4882a593Smuzhiyun
889*4882a593SmuzhiyunKernel Documentation/translations/it_IT/process/coding-style.rst:
890*4882a593Smuzhiyun  :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`
891*4882a593Smuzhiyun
892*4882a593SmuzhiyunE-mail di Linus Torvalds sul formato canonico di una patch:
893*4882a593Smuzhiyun  <http://lkml.org/lkml/2005/4/7/183>
894*4882a593Smuzhiyun
895*4882a593SmuzhiyunAndi Kleen, "Su come sottomettere patch del kernel"
896*4882a593Smuzhiyun  Alcune strategie su come sottomettere modifiche toste o controverse.
897*4882a593Smuzhiyun
898*4882a593Smuzhiyun  http://halobates.de/on-submitting-patches.pdf
899