18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci:Original: :ref:`Documentation/process/6.Followthrough.rst <development_followthrough>`
48c2ecf20Sopenharmony_ci:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it>
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci.. _it_development_followthrough:
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci=============
98c2ecf20Sopenharmony_ciCompletamento
108c2ecf20Sopenharmony_ci=============
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciA questo punto, avete seguito le linee guida fino a questo punto e, con
138c2ecf20Sopenharmony_cil'aggiunta delle vostre capacità ingegneristiche, avete pubblicato una serie
148c2ecf20Sopenharmony_ciperfetta di patch.  Uno dei più grandi errori che possono essere commessi
158c2ecf20Sopenharmony_cipersino da sviluppatori kernel esperti è quello di concludere che il
168c2ecf20Sopenharmony_cilavoro sia ormai finito.  In verità, la pubblicazione delle patch
178c2ecf20Sopenharmony_cisimboleggia una transizione alla fase successiva del processo, con,
188c2ecf20Sopenharmony_ciprobabilmente, ancora un po' di lavoro da fare.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciÈ raro che una modifica sia così bella alla sua prima pubblicazione che non
218c2ecf20Sopenharmony_cici sia alcuno spazio di miglioramento.  Il programma di sviluppo del kernel
228c2ecf20Sopenharmony_ciriconosce questo fatto e quindi, è fortemente orientato al miglioramento
238c2ecf20Sopenharmony_cidel codice pubblicato.  Voi, in qualità di autori del codice, dovrete
248c2ecf20Sopenharmony_cilavorare con la comunità del kernel per assicurare che il vostro codice
258c2ecf20Sopenharmony_cimantenga gli standard qualitativi richiesti.  Un fallimento in questo
268c2ecf20Sopenharmony_ciprocesso è quasi come impedire l'inclusione delle vostre patch nel
278c2ecf20Sopenharmony_ciramo principale.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciLavorare con i revisori
308c2ecf20Sopenharmony_ci=======================
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciUna patch che abbia una certa rilevanza avrà ricevuto numerosi commenti
338c2ecf20Sopenharmony_cida parte di altri sviluppatori dato che avranno revisionato il codice.
348c2ecf20Sopenharmony_ciLavorare con i revisori può rivelarsi, per molti sviluppatori, la parte
358c2ecf20Sopenharmony_cipiù intimidatoria del processo di sviluppo del kernel.  La vita può esservi
368c2ecf20Sopenharmony_ciresa molto più facile se tenete presente alcuni dettagli:
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci - Se avete descritto la vostra modifica correttamente, i revisori ne
398c2ecf20Sopenharmony_ci   comprenderanno il valore e il perché vi siete presi il disturbo di
408c2ecf20Sopenharmony_ci   scriverla.  Ma tale valore non li tratterrà dal porvi una domanda
418c2ecf20Sopenharmony_ci   fondamentale: come verrà mantenuto questo codice nel kernel nei prossimi
428c2ecf20Sopenharmony_ci   cinque o dieci anni?  Molti dei cambiamenti che potrebbero esservi
438c2ecf20Sopenharmony_ci   richiesti - da piccoli problemi di stile a sostanziali ristesure -
448c2ecf20Sopenharmony_ci   vengono dalla consapevolezza che Linux resterà in circolazione e in
458c2ecf20Sopenharmony_ci   continuo sviluppo ancora per diverse decadi.
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci - La revisione del codice è un duro lavoro, ed è un mestiere poco
488c2ecf20Sopenharmony_ci   riconosciuto; le persone ricordano chi ha scritto il codice, ma meno
498c2ecf20Sopenharmony_ci   fama è attribuita a chi lo ha revisionato.  Quindi i revisori potrebbero
508c2ecf20Sopenharmony_ci   divenire burberi, specialmente quando vendono i medesimi errori venire
518c2ecf20Sopenharmony_ci   fatti ancora e ancora.  Se ricevete una revisione che vi sembra abbia
528c2ecf20Sopenharmony_ci   un tono arrabbiato, insultante o addirittura offensivo, resistente alla
538c2ecf20Sopenharmony_ci   tentazione di rispondere a tono.  La revisione riguarda il codice e non
548c2ecf20Sopenharmony_ci   la persona, e i revisori non vi stanno attaccando personalmente.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci - Similarmente, i revisori del codice non stanno cercando di promuovere
578c2ecf20Sopenharmony_ci   i loro interessi a vostre spese.  Gli sviluppatori del kernel spesso si
588c2ecf20Sopenharmony_ci   aspettano di lavorare sul kernel per anni, ma sanno che il loro datore
598c2ecf20Sopenharmony_ci   di lavoro può cambiare.  Davvero, senza praticamente eccezioni, loro
608c2ecf20Sopenharmony_ci   stanno lavorando per la creazione del miglior kernel possibile; non
618c2ecf20Sopenharmony_ci   stanno cercando di creare un disagio ad aziende concorrenti.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciQuello che si sta cercando di dire è che, quando i revisori vi inviano degli
648c2ecf20Sopenharmony_ciappunti dovete fare attenzione alle osservazioni tecniche che vi stanno
658c2ecf20Sopenharmony_cifacendo.  Non lasciate che il loro modo di esprimersi o il vostro orgoglio
668c2ecf20Sopenharmony_ciimpediscano che ciò accada.  Quando avete dei suggerimenti sulla revisione,
678c2ecf20Sopenharmony_ciprendetevi il tempo per comprendere cosa il revisore stia cercando di
688c2ecf20Sopenharmony_cicomunicarvi.  Se possibile, sistemate le cose che il revisore vi chiede di
698c2ecf20Sopenharmony_cimodificare.  E rispondete al revisore ringraziandolo e spiegando come
708c2ecf20Sopenharmony_ciintendete fare.
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ciNotate che non dovete per forza essere d'accordo con ogni singola modifica
738c2ecf20Sopenharmony_cisuggerita dai revisori.  Se credete che il revisore non abbia compreso
748c2ecf20Sopenharmony_ciil vostro codice, spiegateglielo.  Se avete un'obiezione tecnica da fargli
758c2ecf20Sopenharmony_cisu di una modifica suggerita, spiegatela inserendo anche la vostra soluzione
768c2ecf20Sopenharmony_cial problema.  Se la vostra spiegazione ha senso, il revisore la accetterà.
778c2ecf20Sopenharmony_ciTuttavia, la vostra motivazione potrebbe non essere del tutto persuasiva,
788c2ecf20Sopenharmony_cispecialmente se altri iniziano ad essere d'accordo con il revisore.
798c2ecf20Sopenharmony_ciPrendetevi quindi un po' di tempo per pensare ancora alla cosa. Può risultare
808c2ecf20Sopenharmony_cifacile essere accecati dalla propria soluzione al punto che non realizzate che
818c2ecf20Sopenharmony_cic'è qualcosa di fondamentalmente sbagliato o, magari, non state nemmeno
828c2ecf20Sopenharmony_cirisolvendo il problema giusto.
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ciAndrew Morton suggerisce che ogni suggerimento di revisione che non è
858c2ecf20Sopenharmony_cipresente nella modifica del codice dovrebbe essere inserito in un commento
868c2ecf20Sopenharmony_ciaggiuntivo; ciò può essere d'aiuto ai futuri revisori nell'evitare domande
878c2ecf20Sopenharmony_ciche sorgono al primo sguardo.
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciUn errore fatale è quello di ignorare i commenti di revisione nella speranza
908c2ecf20Sopenharmony_ciche se ne andranno.  Non andranno via.  Se pubblicherete nuovamente il
918c2ecf20Sopenharmony_cicodice senza aver risposto ai commenti ricevuti, probabilmente le vostre
928c2ecf20Sopenharmony_cimodifiche non andranno da nessuna parte.
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ciParlando di ripubblicazione del codice: per favore tenete a mente che i
958c2ecf20Sopenharmony_cirevisori non ricorderanno tutti i dettagli del codice che avete pubblicato
968c2ecf20Sopenharmony_cil'ultima volta. Quindi è sempre una buona idea quella di ricordare ai
978c2ecf20Sopenharmony_cirevisori le questioni sollevate precedetemene e come le avete risolte.
988c2ecf20Sopenharmony_ciI revisori non dovrebbero star lì a cercare all'interno degli archivi per
998c2ecf20Sopenharmony_cifamigliarizzare con ciò che è stato detto l'ultima volta; se li aiutate
1008c2ecf20Sopenharmony_ciin questo senso, saranno di umore migliore quando riguarderanno il vostro
1018c2ecf20Sopenharmony_cicodice.
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ciSe invece avete cercato di far tutto correttamente ma le cose continuano
1048c2ecf20Sopenharmony_cia non andar bene?  Molti disaccordi di natura tecnica possono essere risolti
1058c2ecf20Sopenharmony_ciattraverso la discussione, ma ci sono volte dove qualcuno deve prendere
1068c2ecf20Sopenharmony_ciuna decisione.  Se credete veramente che tale decisione andrà contro di voi
1078c2ecf20Sopenharmony_ciingiustamente, potete sempre tentare di rivolgervi a qualcuno più
1088c2ecf20Sopenharmony_ciin alto di voi.  Per cose di questo genere la persona con più potere è
1098c2ecf20Sopenharmony_ciAndrew Morton.  Andrew è una figura molto rispettata all'interno della
1108c2ecf20Sopenharmony_cicomunità di sviluppo del kernel; lui può spesso sbrogliare situazioni che
1118c2ecf20Sopenharmony_cisembrano irrimediabilmente bloccate.  Rivolgersi ad Andrew non deve essere
1128c2ecf20Sopenharmony_cifatto alla leggera, e non deve essere fatto prima di aver esplorato tutte
1138c2ecf20Sopenharmony_cile altre alternative.  E tenete a mente, ovviamente, che nemmeno lui
1148c2ecf20Sopenharmony_cipotrebbe non essere d'accordo con voi.
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ciCosa accade poi
1178c2ecf20Sopenharmony_ci===============
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ciSe la modifica è ritenuta un elemento valido da essere aggiunta al kernel,
1208c2ecf20Sopenharmony_cie una volta che la maggior parte degli appunti dei revisori sono stati
1218c2ecf20Sopenharmony_cisistemati, il passo successivo solitamente è quello di entrare in un
1228c2ecf20Sopenharmony_cisottosistema gestito da un manutentore.  Come ciò avviene dipende dal
1238c2ecf20Sopenharmony_cisottosistema medesimo; ogni manutentore ha il proprio modo di fare le cose.
1248c2ecf20Sopenharmony_ciIn particolare, ci potrebbero essere diversi sorgenti - uno, magari, dedicato
1258c2ecf20Sopenharmony_cialle modifiche pianificate per la finestra di fusione successiva, e un altro
1268c2ecf20Sopenharmony_ciper il lavoro di lungo periodo.
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ciPer le modifiche proposte in aree per le quali non esiste un sottosistema
1298c2ecf20Sopenharmony_cipreciso (modifiche di gestione della memoria, per esempio), i sorgenti di
1308c2ecf20Sopenharmony_ciripiego finiscono per essere -mm.  Ed anche le modifiche che riguardano
1318c2ecf20Sopenharmony_cipiù sottosistemi possono finire in quest'ultimo.
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciL'inclusione nei sorgenti di un sottosistema può comportare per una patch,
1348c2ecf20Sopenharmony_ciun alto livello di visibilità.  Ora altri sviluppatori che stanno lavorando
1358c2ecf20Sopenharmony_ciin quei medesimi sorgenti avranno le vostre modifiche.  I sottosistemi
1368c2ecf20Sopenharmony_cisolitamente riforniscono anche Linux-next, rendendo i propri contenuti
1378c2ecf20Sopenharmony_civisibili all'intera comunità di sviluppo.  A questo punto, ci sono buone
1388c2ecf20Sopenharmony_cipossibilità per voi di ricevere ulteriori commenti da un nuovo gruppo di
1398c2ecf20Sopenharmony_cirevisori; anche a questi commenti dovrete rispondere come avete già fatto per
1408c2ecf20Sopenharmony_cigli altri.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ciCiò che potrebbe accadere a questo punto, in base alla natura della vostra
1438c2ecf20Sopenharmony_cimodifica, riguarda eventuali conflitti con il lavoro svolto da altri.
1448c2ecf20Sopenharmony_ciNella peggiore delle situazioni, i conflitti più pesanti tra modifiche possono
1458c2ecf20Sopenharmony_ciconcludersi con la messa a lato di alcuni dei lavori svolti cosicché le
1468c2ecf20Sopenharmony_cimodifiche restanti possano funzionare ed essere integrate.  Altre volte, la
1478c2ecf20Sopenharmony_cirisoluzione dei conflitti richiederà del lavoro con altri sviluppatori e,
1488c2ecf20Sopenharmony_cipossibilmente, lo spostamento di alcune patch da dei sorgenti a degli altri
1498c2ecf20Sopenharmony_ciin modo da assicurare che tutto sia applicato in modo pulito.  Questo lavoro
1508c2ecf20Sopenharmony_cipuò rivelarsi una spina nel fianco, ma consideratevi fortunati: prima
1518c2ecf20Sopenharmony_cidell'avvento dei sorgenti linux-next, questi conflitti spesso emergevano solo
1528c2ecf20Sopenharmony_cidurante l'apertura della finestra di integrazione e dovevano essere smaltiti
1538c2ecf20Sopenharmony_ciin fretta.  Ora essi possono essere risolti comodamente, prima dell'apertura
1548c2ecf20Sopenharmony_cidella finestra.
1558c2ecf20Sopenharmony_ci
1568c2ecf20Sopenharmony_ciUn giorno, se tutto va bene, vi collegherete e vedrete che la vostra patch
1578c2ecf20Sopenharmony_ciè stata inserita nel ramo principale de kernel. Congratulazioni!  Terminati
1588c2ecf20Sopenharmony_cii festeggiamenti (nel frattempo avrete inserito il vostro nome nel file
1598c2ecf20Sopenharmony_ciMAINTAINERS) vale la pena ricordare una piccola cosa, ma importante: il
1608c2ecf20Sopenharmony_cilavoro non è ancora finito.  L'inserimento nel ramo principale porta con se
1618c2ecf20Sopenharmony_cinuove sfide.
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_ciCominciamo con il dire che ora la visibilità della vostra modifica è
1648c2ecf20Sopenharmony_ciulteriormente cresciuta.  Ci potrebbe portare ad una nuova fase di
1658c2ecf20Sopenharmony_cicommenti dagli sviluppatori che non erano ancora a conoscenza della vostra
1668c2ecf20Sopenharmony_cipatch.  Ignorarli potrebbe essere allettante dato che non ci sono più
1678c2ecf20Sopenharmony_cidubbi sull'integrazione della modifica.  Resistete a tale tentazione, dovete
1688c2ecf20Sopenharmony_cimantenervi disponibili agli sviluppatori che hanno domande o suggerimenti
1698c2ecf20Sopenharmony_ciper voi.
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciAncora più importante: l'inclusione nel ramo principale mette il vostro
1728c2ecf20Sopenharmony_cicodice nelle mani di un gruppo di *tester* molto più esteso.  Anche se avete
1738c2ecf20Sopenharmony_cicontribuito ad un driver per un hardware che non è ancora disponibile, sarete
1748c2ecf20Sopenharmony_cisorpresi da quante persone inseriranno il vostro codice nei loro kernel.
1758c2ecf20Sopenharmony_ciE, ovviamente, dove ci sono *tester*, ci saranno anche dei rapporti su
1768c2ecf20Sopenharmony_cieventuali bachi.
1778c2ecf20Sopenharmony_ci
1788c2ecf20Sopenharmony_ciLa peggior specie di rapporti sono quelli che indicano delle regressioni.
1798c2ecf20Sopenharmony_ciSe la vostra modifica causa una regressione, avrete un gran numero di
1808c2ecf20Sopenharmony_ciocchi puntati su di voi; la regressione deve essere sistemata il prima
1818c2ecf20Sopenharmony_cipossibile.  Se non vorrete o non sarete capaci di sistemarla (e nessuno
1828c2ecf20Sopenharmony_cilo farà per voi), la vostra modifica sarà quasi certamente rimossa durante
1838c2ecf20Sopenharmony_cila fase di stabilizzazione.  Oltre alla perdita di tutto il lavoro svolto
1848c2ecf20Sopenharmony_ciper far si che la vostra modifica fosse inserita nel ramo principale,
1858c2ecf20Sopenharmony_cil'avere una modifica rimossa a causa del fallimento nel sistemare una
1868c2ecf20Sopenharmony_ciregressione, potrebbe rendere più difficile per voi far accettare
1878c2ecf20Sopenharmony_ciil vostro lavoro in futuro.
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ciDopo che ogni regressione è stata affrontata, ci potrebbero essere altri
1908c2ecf20Sopenharmony_cibachi ordinari da "sconfiggere".  Il periodo di stabilizzazione è la
1918c2ecf20Sopenharmony_civostra migliore opportunità per sistemare questi bachi e assicurarvi che
1928c2ecf20Sopenharmony_ciil debutto del vostro codice nel ramo principale del kernel sia il più solido
1938c2ecf20Sopenharmony_cipossibile.  Quindi, per favore, rispondete ai rapporti sui bachi e ponete
1948c2ecf20Sopenharmony_cirimedio, se possibile, a tutti i problemi.  È a questo che serve il periodo
1958c2ecf20Sopenharmony_cidi stabilizzazione; potete iniziare creando nuove fantastiche modifiche
1968c2ecf20Sopenharmony_ciuna volta che ogni problema con le vecchie sia stato risolto.
1978c2ecf20Sopenharmony_ci
1988c2ecf20Sopenharmony_ciNon dimenticate che esistono altre pietre miliari che possono generare
1998c2ecf20Sopenharmony_cirapporti sui bachi: il successivo rilascio stabile, quando una distribuzione
2008c2ecf20Sopenharmony_ciimportante usa una versione del kernel nel quale è presente la vostra
2018c2ecf20Sopenharmony_cimodifica, eccetera.  Il continuare a rispondere a questi rapporti è fonte di
2028c2ecf20Sopenharmony_ciorgoglio per il vostro lavoro.  Se questa non è una sufficiente motivazione,
2038c2ecf20Sopenharmony_ciallora, è anche consigliabile considera che la comunità di sviluppo ricorda
2048c2ecf20Sopenharmony_cigli sviluppatori che hanno perso interesse per il loro codice una volta
2058c2ecf20Sopenharmony_ciintegrato.  La prossima volta che pubblicherete una patch, la comunità
2068c2ecf20Sopenharmony_cila valuterà anche sulla base del fatto che non sarete disponibili a
2078c2ecf20Sopenharmony_ciprendervene cura anche nel futuro.
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_ci
2108c2ecf20Sopenharmony_ciAltre cose che posso accadere
2118c2ecf20Sopenharmony_ci=============================
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ciUn giorno, potreste aprire la vostra email e vedere che qualcuno vi ha
2148c2ecf20Sopenharmony_ciinviato una patch per il vostro codice.  Questo, dopo tutto, è uno dei
2158c2ecf20Sopenharmony_civantaggi di avere il vostro codice "là fuori".  Se siete d'accordo con
2168c2ecf20Sopenharmony_cila modifica, potrete anche inoltrarla ad un manutentore di sottosistema
2178c2ecf20Sopenharmony_ci(assicuratevi di includere la riga "From:" cosicché l'attribuzione sia
2188c2ecf20Sopenharmony_cicorretta, e aggiungete una vostra firma "Signed-off-by"), oppure inviate
2198c2ecf20Sopenharmony_ciun "Acked-by:" e lasciate che l'autore originale la invii.
2208c2ecf20Sopenharmony_ci
2218c2ecf20Sopenharmony_ciSe non siete d'accordo con la patch, inviate una risposta educata
2228c2ecf20Sopenharmony_cispiegando il perché.  Se possibile, dite all'autore quali cambiamenti
2238c2ecf20Sopenharmony_ciservirebbero per rendere la patch accettabile da voi.  C'è una certa
2248c2ecf20Sopenharmony_ciriluttanza nell'inserire modifiche con un conflitto fra autore
2258c2ecf20Sopenharmony_cie manutentore del codice, ma solo fino ad un certo punto.  Se siete visti
2268c2ecf20Sopenharmony_cicome qualcuno che blocca un buon lavoro senza motivo, quelle patch vi
2278c2ecf20Sopenharmony_cipasseranno oltre e andranno nel ramo principale in ogni caso. Nel kernel
2288c2ecf20Sopenharmony_ciLinux, nessuno ha potere di veto assoluto su alcun codice.  Eccezione
2298c2ecf20Sopenharmony_cifatta per Linus, forse.
2308c2ecf20Sopenharmony_ci
2318c2ecf20Sopenharmony_ciIn rarissime occasioni, potreste vedere qualcosa di completamente diverso:
2328c2ecf20Sopenharmony_ciun altro sviluppatore che pubblica una soluzione differente al vostro
2338c2ecf20Sopenharmony_ciproblema.  A questo punto, c'è una buona probabilità che una delle due
2348c2ecf20Sopenharmony_cimodifiche non verrà integrata, e il "c'ero prima io" non è considerato
2358c2ecf20Sopenharmony_ciun argomento tecnico rilevante.  Se la modifica di qualcun'altro rimpiazza
2368c2ecf20Sopenharmony_cila vostra ed entra nel ramo principale, esiste un unico modo di reagire:
2378c2ecf20Sopenharmony_cisiate contenti che il vostro problema sia stato risolto e andate avanti con
2388c2ecf20Sopenharmony_ciil vostro lavoro.  L'avere un vostro lavoro spintonato da parte in questo
2398c2ecf20Sopenharmony_cimodo può essere avvilente e scoraggiante, ma la comunità ricorderà come
2408c2ecf20Sopenharmony_ciavrete reagito anche dopo che avrà dimenticato quale fu la modifica accettata.
241