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