1*4882a593Smuzhiyun.. include:: ../disclaimer-ita.rst 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun:Original: :ref:`Documentation/process/5.Posting.rst <development_posting>` 4*4882a593Smuzhiyun:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun.. _it_development_posting: 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunPubblicare modifiche 9*4882a593Smuzhiyun==================== 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunPrima o poi arriva il momento in cui il vostro lavoro è pronto per essere 12*4882a593Smuzhiyunpresentato alla comunità per una revisione ed eventualmente per la sua 13*4882a593Smuzhiyuninclusione nel ramo principale del kernel. Com'era prevedibile, 14*4882a593Smuzhiyunla comunità di sviluppo del kernel ha elaborato un insieme di convenzioni 15*4882a593Smuzhiyune di procedure per la pubblicazione delle patch; seguirle renderà la vita 16*4882a593Smuzhiyunpiù facile a tutti quanti. Questo documento cercherà di coprire questi 17*4882a593Smuzhiyunargomenti con un ragionevole livello di dettaglio; più informazioni possono 18*4882a593Smuzhiyunessere trovare nella cartella 'Documentation', nei file 19*4882a593Smuzhiyun:ref:`translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`, 20*4882a593Smuzhiyun:ref:`translations/it_IT/process/submitting-drivers.rst <it_submittingdrivers>`, e 21*4882a593Smuzhiyun:ref:`translations/it_IT/process/submit-checklist.rst <it_submitchecklist>`. 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunQuando pubblicarle 25*4882a593Smuzhiyun------------------ 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunC'è sempre una certa resistenza nel pubblicare patch finché non sono 28*4882a593Smuzhiyunveramente "pronte". Per semplici patch questo non è un problema. 29*4882a593SmuzhiyunMa quando il lavoro è di una certa complessità, c'è molto da guadagnare 30*4882a593Smuzhiyundai riscontri che la comunità può darvi prima che completiate il lavoro. 31*4882a593SmuzhiyunDovreste considerare l'idea di pubblicare un lavoro incompleto, o anche 32*4882a593Smuzhiyunpreparare un ramo git disponibile agli sviluppatori interessati, cosicché 33*4882a593Smuzhiyunpossano stare al passo col vostro lavoro in qualunque momento. 34*4882a593Smuzhiyun 35*4882a593SmuzhiyunQuando pubblicate del codice che non è considerato pronto per l'inclusione, 36*4882a593Smuzhiyunè bene che lo diciate al momento della pubblicazione. Inoltre, aggiungete 37*4882a593Smuzhiyuninformazioni sulle cose ancora da sviluppare e sui problemi conosciuti. 38*4882a593SmuzhiyunPoche persone guarderanno delle patch che si sa essere fatte a metà, 39*4882a593Smuzhiyunma quelli che lo faranno penseranno di potervi aiutare a condurre il vostro 40*4882a593Smuzhiyunsviluppo nella giusta direzione. 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunPrima di creare patch 44*4882a593Smuzhiyun--------------------- 45*4882a593Smuzhiyun 46*4882a593SmuzhiyunCi sono un certo numero di cose che dovreste fare prima di considerare 47*4882a593Smuzhiyunl'invio delle patch alla comunità di sviluppo. Queste cose includono: 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun - Verificare il codice fino al massimo che vi è consentito. Usate gli 50*4882a593Smuzhiyun strumenti di debug del kernel, assicuratevi che il kernel compili con 51*4882a593Smuzhiyun tutte le più ragionevoli combinazioni d'opzioni, usate cross-compilatori 52*4882a593Smuzhiyun per compilare il codice per differenti architetture, eccetera. 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun - Assicuratevi che il vostro codice sia conforme alla linee guida del 55*4882a593Smuzhiyun kernel sullo stile del codice. 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun - La vostra patch ha delle conseguenze in termini di prestazioni? 58*4882a593Smuzhiyun Se è così, dovreste eseguire dei *benchmark* che mostrino il loro 59*4882a593Smuzhiyun impatto (anche positivo); un riassunto dei risultati dovrebbe essere 60*4882a593Smuzhiyun incluso nella patch. 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun - Siate certi d'avere i diritti per pubblicare il codice. Se questo 63*4882a593Smuzhiyun lavoro è stato fatto per un datore di lavoro, egli avrà dei diritti su 64*4882a593Smuzhiyun questo lavoro e dovrà quindi essere d'accordo alla sua pubblicazione 65*4882a593Smuzhiyun con una licenza GPL 66*4882a593Smuzhiyun 67*4882a593SmuzhiyunCome regola generale, pensarci un po' di più prima di inviare il codice 68*4882a593Smuzhiyunripaga quasi sempre lo sforzo. 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun 71*4882a593SmuzhiyunPreparazione di una patch 72*4882a593Smuzhiyun------------------------- 73*4882a593Smuzhiyun 74*4882a593SmuzhiyunLa preparazione delle patch per la pubblicazione può richiedere una quantità 75*4882a593Smuzhiyundi lavoro significativa, ma, ripetiamolo ancora, generalmente sconsigliamo 76*4882a593Smuzhiyundi risparmiare tempo in questa fase, anche sul breve periodo. 77*4882a593Smuzhiyun 78*4882a593SmuzhiyunLe patch devono essere preparate per una specifica versione del kernel. 79*4882a593SmuzhiyunCome regola generale, una patch dovrebbe basarsi sul ramo principale attuale 80*4882a593Smuzhiyuncosì come lo si trova nei sorgenti git di Linus. Quando vi basate sul ramo 81*4882a593Smuzhiyunprincipale, cominciate da un punto di rilascio ben noto - uno stabile o 82*4882a593Smuzhiyunun -rc - piuttosto che creare il vostro ramo da quello principale in un punto 83*4882a593Smuzhiyuna caso. 84*4882a593Smuzhiyun 85*4882a593SmuzhiyunPer facilitare una revisione e una verifica più estesa, potrebbe diventare 86*4882a593Smuzhiyunnecessaria la produzione di versioni per -mm, linux-next o i sorgenti di un 87*4882a593Smuzhiyunsottosistema. Basare questa patch sui suddetti sorgenti potrebbe richiedere 88*4882a593Smuzhiyunun lavoro significativo nella risoluzione dei conflitti e nella correzione dei 89*4882a593Smuzhiyuncambiamenti di API; questo potrebbe variare a seconda dell'area d'interesse 90*4882a593Smuzhiyundella vostra patch e da quello che succede altrove nel kernel. 91*4882a593Smuzhiyun 92*4882a593SmuzhiyunSolo le modifiche più semplici dovrebbero essere preparate come una singola 93*4882a593Smuzhiyunpatch; tutto il resto dovrebbe essere preparato come una serie logica di 94*4882a593Smuzhiyunmodifiche. Spezzettare le patch è un po' un'arte; alcuni sviluppatori 95*4882a593Smuzhiyunpassano molto tempo nel capire come farlo in modo che piaccia alla comunità. 96*4882a593SmuzhiyunCi sono alcune regole spannometriche, che comunque possono aiutare 97*4882a593Smuzhiyunconsiderevolmente: 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun - La serie di patch che pubblicherete, quasi sicuramente, non sarà 100*4882a593Smuzhiyun come quella che trovate nel vostro sistema di controllo di versione. 101*4882a593Smuzhiyun Invece, le vostre modifiche dovranno essere considerate nella loro forma 102*4882a593Smuzhiyun finale, e quindi separate in parti che abbiano un senso. Gli sviluppatori 103*4882a593Smuzhiyun sono interessati in modifiche che siano discrete e indipendenti, non 104*4882a593Smuzhiyun alla strada che avete percorso per ottenerle. 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun - Ogni modifica logicamente indipendente dovrebbe essere preparata come una 107*4882a593Smuzhiyun patch separata. Queste modifiche possono essere piccole ("aggiunto un 108*4882a593Smuzhiyun campo in questa struttura") o grandi (l'aggiunta di un driver nuovo, 109*4882a593Smuzhiyun per esempio), ma dovrebbero essere concettualmente piccole da permettere 110*4882a593Smuzhiyun una descrizione in una sola riga. Ogni patch dovrebbe fare modifiche 111*4882a593Smuzhiyun specifiche che si possano revisionare indipendentemente e di cui si possa 112*4882a593Smuzhiyun verificare la veridicità. 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun - Giusto per riaffermare quando detto sopra: non mischiate diversi tipi di 115*4882a593Smuzhiyun modifiche nella stessa patch. Se una modifica corregge un baco critico 116*4882a593Smuzhiyun per la sicurezza, riorganizza alcune strutture, e riformatta il codice, 117*4882a593Smuzhiyun ci sono buone probabilità che venga ignorata e che la correzione importante 118*4882a593Smuzhiyun venga persa. 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun - Ogni modifica dovrebbe portare ad un kernel che compila e funziona 121*4882a593Smuzhiyun correttamente; se la vostra serie di patch si interrompe a metà il 122*4882a593Smuzhiyun risultato dovrebbe essere comunque un kernel funzionante. L'applicazione 123*4882a593Smuzhiyun parziale di una serie di patch è uno scenario comune nel quale il 124*4882a593Smuzhiyun comando "git bisect" viene usato per trovare delle regressioni; se il 125*4882a593Smuzhiyun risultato è un kernel guasto, renderete la vita degli sviluppatori più 126*4882a593Smuzhiyun difficile così come quella di chi s'impegna nel nobile lavoro di 127*4882a593Smuzhiyun scovare i problemi. 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun - Però, non strafate. Una volta uno sviluppatore pubblicò una serie di 500 130*4882a593Smuzhiyun patch che modificavano un unico file - un atto che non lo rese la persona 131*4882a593Smuzhiyun più popolare sulla lista di discussione del kernel. Una singola patch 132*4882a593Smuzhiyun può essere ragionevolmente grande fintanto che contenga un singolo 133*4882a593Smuzhiyun cambiamento *logico*. 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun - Potrebbe essere allettante l'idea di aggiungere una nuova infrastruttura 136*4882a593Smuzhiyun come una serie di patch, ma di lasciare questa infrastruttura inutilizzata 137*4882a593Smuzhiyun finché l'ultima patch della serie non abilita tutto quanto. Quando è 138*4882a593Smuzhiyun possibile, questo dovrebbe essere evitato; se questa serie aggiunge delle 139*4882a593Smuzhiyun regressioni, "bisect" indicherà quest'ultima patch come causa del 140*4882a593Smuzhiyun problema anche se il baco si trova altrove. Possibilmente, quando una 141*4882a593Smuzhiyun patch aggiunge del nuovo codice dovrebbe renderlo attivo immediatamente. 142*4882a593Smuzhiyun 143*4882a593SmuzhiyunLavorare per creare la serie di patch perfetta potrebbe essere frustrante 144*4882a593Smuzhiyunperché richiede un certo tempo e soprattutto dopo che il "vero lavoro" è 145*4882a593Smuzhiyungià stato fatto. Quando ben fatto, comunque, è tempo ben speso. 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun 148*4882a593SmuzhiyunFormattazione delle patch e i changelog 149*4882a593Smuzhiyun--------------------------------------- 150*4882a593Smuzhiyun 151*4882a593SmuzhiyunQuindi adesso avete una serie perfetta di patch pronte per la pubblicazione, 152*4882a593Smuzhiyunma il lavoro non è davvero finito. Ogni patch deve essere preparata con 153*4882a593Smuzhiyunun messaggio che spieghi al resto del mondo, in modo chiaro e veloce, 154*4882a593Smuzhiyunil suo scopo. Per ottenerlo, ogni patch sarà composta dai seguenti elementi: 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun - Un campo opzionale "From" col nome dell'autore della patch. Questa riga 157*4882a593Smuzhiyun è necessaria solo se state passando la patch di qualcun altro via email, 158*4882a593Smuzhiyun ma nel dubbio non fa di certo male aggiungerlo. 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun - Una descrizione di una riga che spieghi cosa fa la patch. Questo 161*4882a593Smuzhiyun messaggio dovrebbe essere sufficiente per far comprendere al lettore lo 162*4882a593Smuzhiyun scopo della patch senza altre informazioni. Questo messaggio, 163*4882a593Smuzhiyun solitamente, presenta in testa il nome del sottosistema a cui si riferisce, 164*4882a593Smuzhiyun seguito dallo scopo della patch. Per esempio: 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun :: 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun gpio: fix build on CONFIG_GPIO_SYSFS=n 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun - Una riga bianca seguita da una descrizione dettagliata della patch. 171*4882a593Smuzhiyun Questa descrizione può essere lunga tanto quanto serve; dovrebbe spiegare 172*4882a593Smuzhiyun cosa fa e perché dovrebbe essere aggiunta al kernel. 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun - Una o più righe etichette, con, minimo, una riga *Signed-off-by:* 175*4882a593Smuzhiyun col nome dall'autore della patch. Queste etichette verranno descritte 176*4882a593Smuzhiyun meglio più avanti. 177*4882a593Smuzhiyun 178*4882a593SmuzhiyunGli elementi qui sopra, assieme, formano il changelog di una patch. 179*4882a593SmuzhiyunScrivere un buon changelog è cruciale ma è spesso un'arte trascurata; 180*4882a593Smuzhiyunvale la pena spendere qualche parola in più al riguardo. Quando scrivete 181*4882a593Smuzhiyunun changelog dovreste tenere ben presente che molte persone leggeranno 182*4882a593Smuzhiyunle vostre parole. Queste includono i manutentori di un sotto-sistema, e i 183*4882a593Smuzhiyunrevisori che devono decidere se la patch debba essere inclusa o no, 184*4882a593Smuzhiyunle distribuzioni e altri manutentori che cercano di valutare se la patch 185*4882a593Smuzhiyundebba essere applicata su kernel più vecchi, i cacciatori di bachi che si 186*4882a593Smuzhiyunchiederanno se la patch è la causa di un problema che stanno cercando, 187*4882a593Smuzhiyungli utenti che vogliono sapere com'è cambiato il kernel, e molti altri. 188*4882a593SmuzhiyunUn buon changelog fornisce le informazioni necessarie a tutte queste 189*4882a593Smuzhiyunpersone nel modo più diretto e conciso possibile. 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunA questo scopo, la riga riassuntiva dovrebbe descrivere gli effetti della 192*4882a593Smuzhiyunmodifica e la motivazione della patch nel modo migliore possibile nonostante 193*4882a593Smuzhiyunil limite di una sola riga. La descrizione dettagliata può spiegare meglio 194*4882a593Smuzhiyuni temi e fornire maggiori informazioni. Se una patch corregge un baco, 195*4882a593Smuzhiyuncitate, se possibile, il commit che lo introdusse (e per favore, quando 196*4882a593Smuzhiyuncitate un commit aggiungete sia il suo identificativo che il titolo), 197*4882a593SmuzhiyunSe il problema è associabile ad un file di log o all' output del compilatore, 198*4882a593Smuzhiyunincludeteli al fine d'aiutare gli altri a trovare soluzioni per lo stesso 199*4882a593Smuzhiyunproblema. Se la modifica ha lo scopo di essere di supporto a sviluppi 200*4882a593Smuzhiyunsuccessivi, ditelo. Se le API interne vengono cambiate, dettagliate queste 201*4882a593Smuzhiyunmodifiche e come gli altri dovrebbero agire per applicarle. In generale, 202*4882a593Smuzhiyunpiù riuscirete ad entrare nei panni di tutti quelli che leggeranno il 203*4882a593Smuzhiyunvostro changelog, meglio sarà il changelog (e il kernel nel suo insieme). 204*4882a593Smuzhiyun 205*4882a593SmuzhiyunNon serve dirlo, un changelog dovrebbe essere il testo usato nel messaggio 206*4882a593Smuzhiyundi commit in un sistema di controllo di versione. Sarà seguito da: 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun - La patch stessa, nel formato unificato per patch ("-u"). Usare 209*4882a593Smuzhiyun l'opzione "-p" assocerà alla modifica il nome della funzione alla quale 210*4882a593Smuzhiyun si riferisce, rendendo il risultato più facile da leggere per gli altri. 211*4882a593Smuzhiyun 212*4882a593SmuzhiyunDovreste evitare di includere nelle patch delle modifiche per file 213*4882a593Smuzhiyunirrilevanti (quelli generati dal processo di generazione, per esempio, o i file 214*4882a593Smuzhiyundi backup del vostro editor). Il file "dontdiff" nella cartella Documentation 215*4882a593Smuzhiyunpotrà esservi d'aiuto su questo punto; passatelo a diff con l'opzione "-X". 216*4882a593Smuzhiyun 217*4882a593SmuzhiyunLe etichette sopra menzionante sono usate per descrivere come i vari 218*4882a593Smuzhiyunsviluppatori sono stati associati allo sviluppo di una patch. Sono descritte 219*4882a593Smuzhiyunin dettaglio nel documento :ref:`translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`; 220*4882a593Smuzhiyunquello che segue è un breve riassunto. Ognuna di queste righe ha il seguente 221*4882a593Smuzhiyunformato: 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun:: 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun tag: Full Name <email address> optional-other-stuff 226*4882a593Smuzhiyun 227*4882a593SmuzhiyunLe etichette in uso più comuni sono: 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun - Signed-off-by: questa è la certificazione che lo sviluppatore ha il diritto 230*4882a593Smuzhiyun di sottomettere la patch per l'integrazione nel kernel. Questo rappresenta 231*4882a593Smuzhiyun il consenso verso il certificato d'origine degli sviluppatori, il testo 232*4882a593Smuzhiyun completo potrà essere trovato in 233*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 234*4882a593Smuzhiyun Codice che non presenta una firma appropriata non potrà essere integrato. 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun - Co-developed-by: indica che la patch è stata cosviluppata da diversi 237*4882a593Smuzhiyun sviluppatori; viene usato per assegnare più autori (in aggiunta a quello 238*4882a593Smuzhiyun associato all'etichetta From:) quando più persone lavorano ad una patch. 239*4882a593Smuzhiyun Ogni Co-developed-by: dev'essere seguito immediatamente da un Signed-off-by: 240*4882a593Smuzhiyun del corrispondente coautore. Maggiori dettagli ed esempi sono disponibili 241*4882a593Smuzhiyun in :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun - Acked-by: indica il consenso di un altro sviluppatore (spesso il manutentore 244*4882a593Smuzhiyun del codice in oggetto) all'integrazione della patch nel kernel. 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun - Tested-by: menziona la persona che ha verificato la patch e l'ha trovata 247*4882a593Smuzhiyun funzionante. 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun - Reviwed-by: menziona lo sviluppatore che ha revisionato la patch; per 250*4882a593Smuzhiyun maggiori dettagli leggete la dichiarazione dei revisori in 251*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun - Reported-by: menziona l'utente che ha riportato il problema corretto da 254*4882a593Smuzhiyun questa patch; quest'etichetta viene usata per dare credito alle persone 255*4882a593Smuzhiyun che hanno verificato il codice e ci hanno fatto sapere quando le cose non 256*4882a593Smuzhiyun funzionavano correttamente. 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun - Cc: la persona menzionata ha ricevuto una copia della patch ed ha avuto 259*4882a593Smuzhiyun l'opportunità di commentarla. 260*4882a593Smuzhiyun 261*4882a593SmuzhiyunState attenti ad aggiungere queste etichette alla vostra patch: solo 262*4882a593Smuzhiyun"Cc:" può essere aggiunta senza il permesso esplicito della persona menzionata. 263*4882a593Smuzhiyun 264*4882a593SmuzhiyunInviare la modifica 265*4882a593Smuzhiyun------------------- 266*4882a593Smuzhiyun 267*4882a593SmuzhiyunPrima di inviare la vostra patch, ci sarebbero ancora un paio di cose di cui 268*4882a593Smuzhiyundovreste aver cura: 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun - Siete sicuri che il vostro programma di posta non corromperà le patch? 271*4882a593Smuzhiyun Le patch che hanno spazi bianchi in libertà o andate a capo aggiunti 272*4882a593Smuzhiyun dai programmi di posta non funzioneranno per chi le riceve, e spesso 273*4882a593Smuzhiyun non verranno nemmeno esaminate in dettaglio. Se avete un qualsiasi dubbio, 274*4882a593Smuzhiyun inviate la patch a voi stessi e verificate che sia integra. 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/email-clients.rst <it_email_clients>` 277*4882a593Smuzhiyun contiene alcuni suggerimenti utili sulla configurazione dei programmi 278*4882a593Smuzhiyun di posta al fine di inviare patch. 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun - Siete sicuri che la vostra patch non contenga sciocchi errori? Dovreste 281*4882a593Smuzhiyun sempre processare le patch con scripts/checkpatch.pl e correggere eventuali 282*4882a593Smuzhiyun problemi riportati. Per favore tenete ben presente che checkpatch.pl non è 283*4882a593Smuzhiyun più intelligente di voi, nonostante sia il risultato di un certa quantità di 284*4882a593Smuzhiyun ragionamenti su come debba essere una patch per il kernel. Se seguire 285*4882a593Smuzhiyun i suggerimenti di checkpatch.pl rende il codice peggiore, allora non fatelo. 286*4882a593Smuzhiyun 287*4882a593SmuzhiyunLe patch dovrebbero essere sempre inviate come testo puro. Per favore non 288*4882a593Smuzhiyuninviatele come allegati; questo rende molto più difficile, per i revisori, 289*4882a593Smuzhiyuncitare parti della patch che si vogliono commentare. Invece, mettete la vostra 290*4882a593Smuzhiyunpatch direttamente nel messaggio. 291*4882a593Smuzhiyun 292*4882a593SmuzhiyunQuando inviate le patch, è importante inviarne una copia a tutte le persone che 293*4882a593Smuzhiyunpotrebbero esserne interessate. Al contrario di altri progetti, il kernel 294*4882a593Smuzhiyunincoraggia le persone a peccare nell'invio di tante copie; non presumente che 295*4882a593Smuzhiyunle persone interessate vedano i vostri messaggi sulla lista di discussione. 296*4882a593SmuzhiyunIn particolare le copie dovrebbero essere inviate a: 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun - I manutentori dei sottosistemi affetti della modifica. Come descritto 299*4882a593Smuzhiyun in precedenza, il file MAINTAINERS è il primo luogo dove cercare i nomi 300*4882a593Smuzhiyun di queste persone. 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun - Altri sviluppatori che hanno lavorato nello stesso ambiente - specialmente 303*4882a593Smuzhiyun quelli che potrebbero lavorarci proprio ora. Usate git potrebbe essere 304*4882a593Smuzhiyun utile per vedere chi altri ha modificato i file su cui state lavorando. 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun - Se state rispondendo a un rapporto su un baco, o a una richiesta di 307*4882a593Smuzhiyun funzionalità, includete anche gli autori di quei rapporti/richieste. 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun - Inviate una copia alle liste di discussione interessate, o, se nient'altro 310*4882a593Smuzhiyun è adatto, alla lista linux-kernel 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun - Se state correggendo un baco, pensate se la patch dovrebbe essere inclusa 313*4882a593Smuzhiyun nel prossimo rilascio stabile. Se è così, la lista di discussione 314*4882a593Smuzhiyun stable@vger.kernel.org dovrebbe riceverne una copia. Aggiungete anche 315*4882a593Smuzhiyun l'etichetta "Cc: stable@vger.kernel.org" nella patch stessa; questo 316*4882a593Smuzhiyun permetterà alla squadra *stable* di ricevere una notifica quando questa 317*4882a593Smuzhiyun correzione viene integrata nel ramo principale. 318*4882a593Smuzhiyun 319*4882a593SmuzhiyunQuando scegliete i destinatari della patch, è bene avere un'idea di chi 320*4882a593Smuzhiyunpensiate che sia colui che, eventualmente, accetterà la vostra patch e 321*4882a593Smuzhiyunla integrerà. Nonostante sia possibile inviare patch direttamente a 322*4882a593SmuzhiyunLinus Torvalds, e lasciare che sia lui ad integrarle,solitamente non è la 323*4882a593Smuzhiyunstrada migliore da seguire. Linus è occupato, e ci sono dei manutentori di 324*4882a593Smuzhiyunsotto-sistema che controllano una parte specifica del kernel. Solitamente, 325*4882a593Smuzhiyunvorreste che siano questi manutentori ad integrare le vostre patch. Se non 326*4882a593Smuzhiyunc'è un chiaro manutentore, l'ultima spiaggia è spesso Andrew Morton. 327*4882a593Smuzhiyun 328*4882a593SmuzhiyunLe patch devono avere anche un buon oggetto. Il tipico formato per l'oggetto 329*4882a593Smuzhiyundi una patch assomiglia a questo: 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun:: 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun [PATCH nn/mm] subsys: one-line description of the patch 334*4882a593Smuzhiyun 335*4882a593Smuzhiyundove "nn" è il numero ordinale della patch, "mm" è il numero totale delle patch 336*4882a593Smuzhiyunnella serie, e "subsys" è il nome del sottosistema interessato. Chiaramente, 337*4882a593Smuzhiyunnn/mm può essere omesso per una serie composta da una singola patch. 338*4882a593Smuzhiyun 339*4882a593SmuzhiyunSe avete una significative serie di patch, è prassi inviare una descrizione 340*4882a593Smuzhiyunintroduttiva come parte zero. Tuttavia questa convenzione non è universalmente 341*4882a593Smuzhiyunseguita; se la usate, ricordate che le informazioni nell'introduzione non 342*4882a593Smuzhiyunfaranno parte del changelog del kernel. Quindi per favore, assicuratevi che 343*4882a593Smuzhiyunogni patch abbia un changelog completo. 344*4882a593Smuzhiyun 345*4882a593SmuzhiyunIn generale, la seconda parte e quelle successive di una patch "composta" 346*4882a593Smuzhiyundovrebbero essere inviate come risposta alla prima, cosicché vengano viste 347*4882a593Smuzhiyuncome un unico *thread*. Strumenti come git e quilt hanno comandi per inviare 348*4882a593Smuzhiyungruppi di patch con la struttura appropriata. Se avete una serie lunga 349*4882a593Smuzhiyune state usando git, per favore state alla larga dall'opzione --chain-reply-to 350*4882a593Smuzhiyunper evitare di creare un annidamento eccessivo. 351