162306a36Sopenharmony_ci.. include:: ../disclaimer-ita.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/5.Posting.rst <development_posting>` 462306a36Sopenharmony_ci:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci.. _it_development_posting: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciPubblicare modifiche 962306a36Sopenharmony_ci==================== 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciPrima o poi arriva il momento in cui il vostro lavoro è pronto per essere 1262306a36Sopenharmony_cipresentato alla comunità per una revisione ed eventualmente per la sua 1362306a36Sopenharmony_ciinclusione nel ramo principale del kernel. Com'era prevedibile, 1462306a36Sopenharmony_cila comunità di sviluppo del kernel ha elaborato un insieme di convenzioni 1562306a36Sopenharmony_cie di procedure per la pubblicazione delle patch; seguirle renderà la vita 1662306a36Sopenharmony_cipiù facile a tutti quanti. Questo documento cercherà di coprire questi 1762306a36Sopenharmony_ciargomenti con un ragionevole livello di dettaglio; più informazioni possono 1862306a36Sopenharmony_ciessere trovare nella cartella 'Documentation', nei file 1962306a36Sopenharmony_ci:ref:`translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` 2062306a36Sopenharmony_cie :ref:`translations/it_IT/process/submit-checklist.rst <it_submitchecklist>`. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciQuando pubblicarle 2462306a36Sopenharmony_ci------------------ 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciC'è sempre una certa resistenza nel pubblicare patch finché non sono 2762306a36Sopenharmony_civeramente "pronte". Per semplici patch questo non è un problema. 2862306a36Sopenharmony_ciMa quando il lavoro è di una certa complessità, c'è molto da guadagnare 2962306a36Sopenharmony_cidai riscontri che la comunità può darvi prima che completiate il lavoro. 3062306a36Sopenharmony_ciDovreste considerare l'idea di pubblicare un lavoro incompleto, o anche 3162306a36Sopenharmony_cipreparare un ramo git disponibile agli sviluppatori interessati, cosicché 3262306a36Sopenharmony_cipossano stare al passo col vostro lavoro in qualunque momento. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciQuando pubblicate del codice che non è considerato pronto per l'inclusione, 3562306a36Sopenharmony_ciè bene che lo diciate al momento della pubblicazione. Inoltre, aggiungete 3662306a36Sopenharmony_ciinformazioni sulle cose ancora da sviluppare e sui problemi conosciuti. 3762306a36Sopenharmony_ciPoche persone guarderanno delle patch che si sa essere fatte a metà, 3862306a36Sopenharmony_cima quelli che lo faranno penseranno di potervi aiutare a condurre il vostro 3962306a36Sopenharmony_cisviluppo nella giusta direzione. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciPrima di creare patch 4362306a36Sopenharmony_ci--------------------- 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciCi sono un certo numero di cose che dovreste fare prima di considerare 4662306a36Sopenharmony_cil'invio delle patch alla comunità di sviluppo. Queste cose includono: 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci - Verificare il codice fino al massimo che vi è consentito. Usate gli 4962306a36Sopenharmony_ci strumenti di debug del kernel, assicuratevi che il kernel compili con 5062306a36Sopenharmony_ci tutte le più ragionevoli combinazioni d'opzioni, usate cross-compilatori 5162306a36Sopenharmony_ci per compilare il codice per differenti architetture, eccetera. 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci - Assicuratevi che il vostro codice sia conforme alla linee guida del 5462306a36Sopenharmony_ci kernel sullo stile del codice. 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci - La vostra patch ha delle conseguenze in termini di prestazioni? 5762306a36Sopenharmony_ci Se è così, dovreste eseguire dei *benchmark* che mostrino il loro 5862306a36Sopenharmony_ci impatto (anche positivo); un riassunto dei risultati dovrebbe essere 5962306a36Sopenharmony_ci incluso nella patch. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci - Siate certi d'avere i diritti per pubblicare il codice. Se questo 6262306a36Sopenharmony_ci lavoro è stato fatto per un datore di lavoro, egli avrà dei diritti su 6362306a36Sopenharmony_ci questo lavoro e dovrà quindi essere d'accordo alla sua pubblicazione 6462306a36Sopenharmony_ci con una licenza GPL 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ciCome regola generale, pensarci un po' di più prima di inviare il codice 6762306a36Sopenharmony_ciripaga quasi sempre lo sforzo. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciPreparazione di una patch 7162306a36Sopenharmony_ci------------------------- 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciLa preparazione delle patch per la pubblicazione può richiedere una quantità 7462306a36Sopenharmony_cidi lavoro significativa, ma, ripetiamolo ancora, generalmente sconsigliamo 7562306a36Sopenharmony_cidi risparmiare tempo in questa fase, anche sul breve periodo. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciLe patch devono essere preparate per una specifica versione del kernel. 7862306a36Sopenharmony_ciCome regola generale, una patch dovrebbe basarsi sul ramo principale attuale 7962306a36Sopenharmony_cicosì come lo si trova nei sorgenti git di Linus. Quando vi basate sul ramo 8062306a36Sopenharmony_ciprincipale, cominciate da un punto di rilascio ben noto - uno stabile o 8162306a36Sopenharmony_ciun -rc - piuttosto che creare il vostro ramo da quello principale in un punto 8262306a36Sopenharmony_cia caso. 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ciPer facilitare una revisione e una verifica più estesa, potrebbe diventare 8562306a36Sopenharmony_cinecessaria la produzione di versioni per -mm, linux-next o i sorgenti di un 8662306a36Sopenharmony_cisottosistema. Basare questa patch sui suddetti sorgenti potrebbe richiedere 8762306a36Sopenharmony_ciun lavoro significativo nella risoluzione dei conflitti e nella correzione dei 8862306a36Sopenharmony_cicambiamenti di API; questo potrebbe variare a seconda dell'area d'interesse 8962306a36Sopenharmony_cidella vostra patch e da quello che succede altrove nel kernel. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciSolo le modifiche più semplici dovrebbero essere preparate come una singola 9262306a36Sopenharmony_cipatch; tutto il resto dovrebbe essere preparato come una serie logica di 9362306a36Sopenharmony_cimodifiche. Spezzettare le patch è un po' un'arte; alcuni sviluppatori 9462306a36Sopenharmony_cipassano molto tempo nel capire come farlo in modo che piaccia alla comunità. 9562306a36Sopenharmony_ciCi sono alcune regole spannometriche, che comunque possono aiutare 9662306a36Sopenharmony_ciconsiderevolmente: 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci - La serie di patch che pubblicherete, quasi sicuramente, non sarà 9962306a36Sopenharmony_ci come quella che trovate nel vostro sistema di controllo di versione. 10062306a36Sopenharmony_ci Invece, le vostre modifiche dovranno essere considerate nella loro forma 10162306a36Sopenharmony_ci finale, e quindi separate in parti che abbiano un senso. Gli sviluppatori 10262306a36Sopenharmony_ci sono interessati in modifiche che siano discrete e indipendenti, non 10362306a36Sopenharmony_ci alla strada che avete percorso per ottenerle. 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci - Ogni modifica logicamente indipendente dovrebbe essere preparata come una 10662306a36Sopenharmony_ci patch separata. Queste modifiche possono essere piccole ("aggiunto un 10762306a36Sopenharmony_ci campo in questa struttura") o grandi (l'aggiunta di un driver nuovo, 10862306a36Sopenharmony_ci per esempio), ma dovrebbero essere concettualmente piccole da permettere 10962306a36Sopenharmony_ci una descrizione in una sola riga. Ogni patch dovrebbe fare modifiche 11062306a36Sopenharmony_ci specifiche che si possano revisionare indipendentemente e di cui si possa 11162306a36Sopenharmony_ci verificare la veridicità. 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci - Giusto per riaffermare quando detto sopra: non mischiate diversi tipi di 11462306a36Sopenharmony_ci modifiche nella stessa patch. Se una modifica corregge un baco critico 11562306a36Sopenharmony_ci per la sicurezza, riorganizza alcune strutture, e riformatta il codice, 11662306a36Sopenharmony_ci ci sono buone probabilità che venga ignorata e che la correzione importante 11762306a36Sopenharmony_ci venga persa. 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci - Ogni modifica dovrebbe portare ad un kernel che compila e funziona 12062306a36Sopenharmony_ci correttamente; se la vostra serie di patch si interrompe a metà il 12162306a36Sopenharmony_ci risultato dovrebbe essere comunque un kernel funzionante. L'applicazione 12262306a36Sopenharmony_ci parziale di una serie di patch è uno scenario comune nel quale il 12362306a36Sopenharmony_ci comando "git bisect" viene usato per trovare delle regressioni; se il 12462306a36Sopenharmony_ci risultato è un kernel guasto, renderete la vita degli sviluppatori più 12562306a36Sopenharmony_ci difficile così come quella di chi s'impegna nel nobile lavoro di 12662306a36Sopenharmony_ci scovare i problemi. 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci - Però, non strafate. Una volta uno sviluppatore pubblicò una serie di 500 12962306a36Sopenharmony_ci patch che modificavano un unico file - un atto che non lo rese la persona 13062306a36Sopenharmony_ci più popolare sulla lista di discussione del kernel. Una singola patch 13162306a36Sopenharmony_ci può essere ragionevolmente grande fintanto che contenga un singolo 13262306a36Sopenharmony_ci cambiamento *logico*. 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci - Potrebbe essere allettante l'idea di aggiungere una nuova infrastruttura 13562306a36Sopenharmony_ci come una serie di patch, ma di lasciare questa infrastruttura inutilizzata 13662306a36Sopenharmony_ci finché l'ultima patch della serie non abilita tutto quanto. Quando è 13762306a36Sopenharmony_ci possibile, questo dovrebbe essere evitato; se questa serie aggiunge delle 13862306a36Sopenharmony_ci regressioni, "bisect" indicherà quest'ultima patch come causa del 13962306a36Sopenharmony_ci problema anche se il baco si trova altrove. Possibilmente, quando una 14062306a36Sopenharmony_ci patch aggiunge del nuovo codice dovrebbe renderlo attivo immediatamente. 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ciLavorare per creare la serie di patch perfetta potrebbe essere frustrante 14362306a36Sopenharmony_ciperché richiede un certo tempo e soprattutto dopo che il "vero lavoro" è 14462306a36Sopenharmony_cigià stato fatto. Quando ben fatto, comunque, è tempo ben speso. 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ciFormattazione delle patch e i changelog 14862306a36Sopenharmony_ci--------------------------------------- 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ciQuindi adesso avete una serie perfetta di patch pronte per la pubblicazione, 15162306a36Sopenharmony_cima il lavoro non è davvero finito. Ogni patch deve essere preparata con 15262306a36Sopenharmony_ciun messaggio che spieghi al resto del mondo, in modo chiaro e veloce, 15362306a36Sopenharmony_ciil suo scopo. Per ottenerlo, ogni patch sarà composta dai seguenti elementi: 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci - Un campo opzionale "From" col nome dell'autore della patch. Questa riga 15662306a36Sopenharmony_ci è necessaria solo se state passando la patch di qualcun altro via email, 15762306a36Sopenharmony_ci ma nel dubbio non fa di certo male aggiungerlo. 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci - Una descrizione di una riga che spieghi cosa fa la patch. Questo 16062306a36Sopenharmony_ci messaggio dovrebbe essere sufficiente per far comprendere al lettore lo 16162306a36Sopenharmony_ci scopo della patch senza altre informazioni. Questo messaggio, 16262306a36Sopenharmony_ci solitamente, presenta in testa il nome del sottosistema a cui si riferisce, 16362306a36Sopenharmony_ci seguito dallo scopo della patch. Per esempio: 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci :: 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci gpio: fix build on CONFIG_GPIO_SYSFS=n 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci - Una riga bianca seguita da una descrizione dettagliata della patch. 17062306a36Sopenharmony_ci Questa descrizione può essere lunga tanto quanto serve; dovrebbe spiegare 17162306a36Sopenharmony_ci cosa fa e perché dovrebbe essere aggiunta al kernel. 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci - Una o più righe etichette, con, minimo, una riga *Signed-off-by:* 17462306a36Sopenharmony_ci col nome dall'autore della patch. Queste etichette verranno descritte 17562306a36Sopenharmony_ci meglio più avanti. 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ciGli elementi qui sopra, assieme, formano il changelog di una patch. 17862306a36Sopenharmony_ciScrivere un buon changelog è cruciale ma è spesso un'arte trascurata; 17962306a36Sopenharmony_civale la pena spendere qualche parola in più al riguardo. Quando scrivete 18062306a36Sopenharmony_ciun changelog dovreste tenere ben presente che molte persone leggeranno 18162306a36Sopenharmony_cile vostre parole. Queste includono i manutentori di un sotto-sistema, e i 18262306a36Sopenharmony_cirevisori che devono decidere se la patch debba essere inclusa o no, 18362306a36Sopenharmony_cile distribuzioni e altri manutentori che cercano di valutare se la patch 18462306a36Sopenharmony_cidebba essere applicata su kernel più vecchi, i cacciatori di bachi che si 18562306a36Sopenharmony_cichiederanno se la patch è la causa di un problema che stanno cercando, 18662306a36Sopenharmony_cigli utenti che vogliono sapere com'è cambiato il kernel, e molti altri. 18762306a36Sopenharmony_ciUn buon changelog fornisce le informazioni necessarie a tutte queste 18862306a36Sopenharmony_cipersone nel modo più diretto e conciso possibile. 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ciA questo scopo, la riga riassuntiva dovrebbe descrivere gli effetti della 19162306a36Sopenharmony_cimodifica e la motivazione della patch nel modo migliore possibile nonostante 19262306a36Sopenharmony_ciil limite di una sola riga. La descrizione dettagliata può spiegare meglio 19362306a36Sopenharmony_cii temi e fornire maggiori informazioni. Se una patch corregge un baco, 19462306a36Sopenharmony_cicitate, se possibile, il commit che lo introdusse (e per favore, quando 19562306a36Sopenharmony_cicitate un commit aggiungete sia il suo identificativo che il titolo), 19662306a36Sopenharmony_ciSe il problema è associabile ad un file di log o all' output del compilatore, 19762306a36Sopenharmony_ciincludeteli al fine d'aiutare gli altri a trovare soluzioni per lo stesso 19862306a36Sopenharmony_ciproblema. Se la modifica ha lo scopo di essere di supporto a sviluppi 19962306a36Sopenharmony_cisuccessivi, ditelo. Se le API interne vengono cambiate, dettagliate queste 20062306a36Sopenharmony_cimodifiche e come gli altri dovrebbero agire per applicarle. In generale, 20162306a36Sopenharmony_cipiù riuscirete ad entrare nei panni di tutti quelli che leggeranno il 20262306a36Sopenharmony_civostro changelog, meglio sarà il changelog (e il kernel nel suo insieme). 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciNon serve dirlo, un changelog dovrebbe essere il testo usato nel messaggio 20562306a36Sopenharmony_cidi commit in un sistema di controllo di versione. Sarà seguito da: 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci - La patch stessa, nel formato unificato per patch ("-u"). Usare 20862306a36Sopenharmony_ci l'opzione "-p" assocerà alla modifica il nome della funzione alla quale 20962306a36Sopenharmony_ci si riferisce, rendendo il risultato più facile da leggere per gli altri. 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ciDovreste evitare di includere nelle patch delle modifiche per file 21262306a36Sopenharmony_ciirrilevanti (quelli generati dal processo di generazione, per esempio, o i file 21362306a36Sopenharmony_cidi backup del vostro editor). Il file "dontdiff" nella cartella Documentation 21462306a36Sopenharmony_cipotrà esservi d'aiuto su questo punto; passatelo a diff con l'opzione "-X". 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ciLe etichette sopracitate danno un'idea di come una patch prende vita e sono 21762306a36Sopenharmony_cidescritte nel dettaglio nel documento 21862306a36Sopenharmony_ci:ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 21962306a36Sopenharmony_ciQui di seguito un breve riassunto. 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ciUn'etichetta ci può dire quale commit ha introdotto il problema che viene corretto nella patch:: 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci Fixes: 1f2e3d4c5b6a ("The first line of the commit specified by the first 12 characters of its SHA-1 ID") 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ciUn'altra etichetta viene usata per fornire collegamenti a pagine web contenenti 22662306a36Sopenharmony_cimaggiori informazioni, per esempio un rapporto circa il baco risolto dalla 22762306a36Sopenharmony_cipatch, oppure un documento con le specifiche implementate dalla patch:: 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ci Link: https://example.com/somewhere.html optional-other-stuff 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ciAlcuni manutentori aggiungono quest'etichetta alla patch per fare riferimento 23262306a36Sopenharmony_cialla più recente discussione pubblica. A volte questo è fatto automaticamente da 23362306a36Sopenharmony_cialcuni strumenti come b4 or un *hook* git come quello descritto qui 23462306a36Sopenharmony_ci'Documentation/translations/it_IT/maintainer/configure-git.rst' 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ciUn terzo tipo di etichetta viene usato per indicare chi ha contribuito allo 23762306a36Sopenharmony_cisviluppo della patch. Tutte queste etichette seguono il formato:: 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci tag: Full Name <email address> optional-other-stuff 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ciLe etichette in uso più comuni sono: 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci - Signed-off-by: questa è la certificazione che lo sviluppatore ha il diritto 24462306a36Sopenharmony_ci di sottomettere la patch per l'integrazione nel kernel. Questo rappresenta 24562306a36Sopenharmony_ci il consenso verso il certificato d'origine degli sviluppatori, il testo 24662306a36Sopenharmony_ci completo potrà essere trovato in 24762306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 24862306a36Sopenharmony_ci Codice che non presenta una firma appropriata non potrà essere integrato. 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci - Co-developed-by: indica che la patch è stata cosviluppata da diversi 25162306a36Sopenharmony_ci sviluppatori; viene usato per assegnare più autori (in aggiunta a quello 25262306a36Sopenharmony_ci associato all'etichetta From:) quando più persone lavorano ad una patch. 25362306a36Sopenharmony_ci Ogni Co-developed-by: dev'essere seguito immediatamente da un Signed-off-by: 25462306a36Sopenharmony_ci del corrispondente coautore. Maggiori dettagli ed esempi sono disponibili 25562306a36Sopenharmony_ci in :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci - Acked-by: indica il consenso di un altro sviluppatore (spesso il manutentore 25862306a36Sopenharmony_ci del codice in oggetto) all'integrazione della patch nel kernel. 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci - Tested-by: menziona la persona che ha verificato la patch e l'ha trovata 26162306a36Sopenharmony_ci funzionante. 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci - Reviwed-by: menziona lo sviluppatore che ha revisionato la patch; per 26462306a36Sopenharmony_ci maggiori dettagli leggete la dichiarazione dei revisori in 26562306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci - Reported-by: menziona l'utente che ha riportato il problema corretto da 26862306a36Sopenharmony_ci questa patch; quest'etichetta viene usata per dare credito alle persone che 26962306a36Sopenharmony_ci hanno verificato il codice e ci hanno fatto sapere quando le cose non 27062306a36Sopenharmony_ci funzionavano correttamente. Se esiste un rapporto disponibile sul web, allora 27162306a36Sopenharmony_ci L'etichetta dovrebbe essere seguita da un collegamento al suddetto rapporto. 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci - Cc: la persona menzionata ha ricevuto una copia della patch ed ha avuto 27462306a36Sopenharmony_ci l'opportunità di commentarla. 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ciState attenti ad aggiungere queste etichette alla vostra patch: solo "Cc:" può 27762306a36Sopenharmony_ciessere aggiunta senza il permesso esplicito della persona menzionata. Il più 27862306a36Sopenharmony_cidelle volte anche Reported-by: va bene, ma è sempre meglio chiedere specialmente 27962306a36Sopenharmony_cise il baco è stato riportato in una comunicazione privata. 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ciInviare la modifica 28262306a36Sopenharmony_ci------------------- 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ciPrima di inviare la vostra patch, ci sarebbero ancora un paio di cose di cui 28562306a36Sopenharmony_cidovreste aver cura: 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci - Siete sicuri che il vostro programma di posta non corromperà le patch? 28862306a36Sopenharmony_ci Le patch che hanno spazi bianchi in libertà o andate a capo aggiunti 28962306a36Sopenharmony_ci dai programmi di posta non funzioneranno per chi le riceve, e spesso 29062306a36Sopenharmony_ci non verranno nemmeno esaminate in dettaglio. Se avete un qualsiasi dubbio, 29162306a36Sopenharmony_ci inviate la patch a voi stessi e verificate che sia integra. 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/email-clients.rst <it_email_clients>` 29462306a36Sopenharmony_ci contiene alcuni suggerimenti utili sulla configurazione dei programmi 29562306a36Sopenharmony_ci di posta al fine di inviare patch. 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci - Siete sicuri che la vostra patch non contenga sciocchi errori? Dovreste 29862306a36Sopenharmony_ci sempre processare le patch con scripts/checkpatch.pl e correggere eventuali 29962306a36Sopenharmony_ci problemi riportati. Per favore tenete ben presente che checkpatch.pl non è 30062306a36Sopenharmony_ci più intelligente di voi, nonostante sia il risultato di un certa quantità di 30162306a36Sopenharmony_ci ragionamenti su come debba essere una patch per il kernel. Se seguire 30262306a36Sopenharmony_ci i suggerimenti di checkpatch.pl rende il codice peggiore, allora non fatelo. 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ciLe patch dovrebbero essere sempre inviate come testo puro. Per favore non 30562306a36Sopenharmony_ciinviatele come allegati; questo rende molto più difficile, per i revisori, 30662306a36Sopenharmony_cicitare parti della patch che si vogliono commentare. Invece, mettete la vostra 30762306a36Sopenharmony_cipatch direttamente nel messaggio. 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ciQuando inviate le patch, è importante inviarne una copia a tutte le persone che 31062306a36Sopenharmony_cipotrebbero esserne interessate. Al contrario di altri progetti, il kernel 31162306a36Sopenharmony_ciincoraggia le persone a peccare nell'invio di tante copie; non presumente che 31262306a36Sopenharmony_cile persone interessate vedano i vostri messaggi sulla lista di discussione. 31362306a36Sopenharmony_ciIn particolare le copie dovrebbero essere inviate a: 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci - I manutentori dei sottosistemi affetti della modifica. Come descritto 31662306a36Sopenharmony_ci in precedenza, il file MAINTAINERS è il primo luogo dove cercare i nomi 31762306a36Sopenharmony_ci di queste persone. 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci - Altri sviluppatori che hanno lavorato nello stesso ambiente - specialmente 32062306a36Sopenharmony_ci quelli che potrebbero lavorarci proprio ora. Usate git potrebbe essere 32162306a36Sopenharmony_ci utile per vedere chi altri ha modificato i file su cui state lavorando. 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci - Se state rispondendo a un rapporto su un baco, o a una richiesta di 32462306a36Sopenharmony_ci funzionalità, includete anche gli autori di quei rapporti/richieste. 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci - Inviate una copia alle liste di discussione interessate, o, se nient'altro 32762306a36Sopenharmony_ci è adatto, alla lista linux-kernel 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci - Se state correggendo un baco, pensate se la patch dovrebbe essere inclusa 33062306a36Sopenharmony_ci nel prossimo rilascio stabile. Se è così, la lista di discussione 33162306a36Sopenharmony_ci stable@vger.kernel.org dovrebbe riceverne una copia. Aggiungete anche 33262306a36Sopenharmony_ci l'etichetta "Cc: stable@vger.kernel.org" nella patch stessa; questo 33362306a36Sopenharmony_ci permetterà alla squadra *stable* di ricevere una notifica quando questa 33462306a36Sopenharmony_ci correzione viene integrata nel ramo principale. 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ciQuando scegliete i destinatari della patch, è bene avere un'idea di chi 33762306a36Sopenharmony_cipensiate che sia colui che, eventualmente, accetterà la vostra patch e 33862306a36Sopenharmony_cila integrerà. Nonostante sia possibile inviare patch direttamente a 33962306a36Sopenharmony_ciLinus Torvalds, e lasciare che sia lui ad integrarle,solitamente non è la 34062306a36Sopenharmony_cistrada migliore da seguire. Linus è occupato, e ci sono dei manutentori di 34162306a36Sopenharmony_cisotto-sistema che controllano una parte specifica del kernel. Solitamente, 34262306a36Sopenharmony_civorreste che siano questi manutentori ad integrare le vostre patch. Se non 34362306a36Sopenharmony_cic'è un chiaro manutentore, l'ultima spiaggia è spesso Andrew Morton. 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ciLe patch devono avere anche un buon oggetto. Il tipico formato per l'oggetto 34662306a36Sopenharmony_cidi una patch assomiglia a questo: 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ci:: 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci [PATCH nn/mm] subsys: one-line description of the patch 35162306a36Sopenharmony_ci 35262306a36Sopenharmony_cidove "nn" è il numero ordinale della patch, "mm" è il numero totale delle patch 35362306a36Sopenharmony_cinella serie, e "subsys" è il nome del sottosistema interessato. Chiaramente, 35462306a36Sopenharmony_cinn/mm può essere omesso per una serie composta da una singola patch. 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ciSe avete una significative serie di patch, è prassi inviare una descrizione 35762306a36Sopenharmony_ciintroduttiva come parte zero. Tuttavia questa convenzione non è universalmente 35862306a36Sopenharmony_ciseguita; se la usate, ricordate che le informazioni nell'introduzione non 35962306a36Sopenharmony_cifaranno parte del changelog del kernel. Quindi per favore, assicuratevi che 36062306a36Sopenharmony_ciogni patch abbia un changelog completo. 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ciIn generale, la seconda parte e quelle successive di una patch "composta" 36362306a36Sopenharmony_cidovrebbero essere inviate come risposta alla prima, cosicché vengano viste 36462306a36Sopenharmony_cicome un unico *thread*. Strumenti come git e quilt hanno comandi per inviare 36562306a36Sopenharmony_cigruppi di patch con la struttura appropriata. Se avete una serie lunga 36662306a36Sopenharmony_cie state usando git, per favore state alla larga dall'opzione --chain-reply-to 36762306a36Sopenharmony_ciper evitare di creare un annidamento eccessivo. 368