1.. include:: ../disclaimer-ita.rst 2 3:Original: :ref:`Documentation/process/6.Followthrough.rst <development_followthrough>` 4:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it> 5 6.. _it_development_followthrough: 7 8============= 9Completamento 10============= 11 12A questo punto, avete seguito le linee guida fino a questo punto e, con 13l'aggiunta delle vostre capacit�� ingegneristiche, avete pubblicato una serie 14perfetta di patch. Uno dei pi�� grandi errori che possono essere commessi 15persino da sviluppatori kernel esperti �� quello di concludere che il 16lavoro sia ormai finito. In verit��, la pubblicazione delle patch 17simboleggia una transizione alla fase successiva del processo, con, 18probabilmente, ancora un po' di lavoro da fare. 19 20�� raro che una modifica sia cos�� bella alla sua prima pubblicazione che non 21ci sia alcuno spazio di miglioramento. Il programma di sviluppo del kernel 22riconosce questo fatto e quindi, �� fortemente orientato al miglioramento 23del codice pubblicato. Voi, in qualit�� di autori del codice, dovrete 24lavorare con la comunit�� del kernel per assicurare che il vostro codice 25mantenga gli standard qualitativi richiesti. Un fallimento in questo 26processo �� quasi come impedire l'inclusione delle vostre patch nel 27ramo principale. 28 29Lavorare con i revisori 30======================= 31 32Una patch che abbia una certa rilevanza avr�� ricevuto numerosi commenti 33da parte di altri sviluppatori dato che avranno revisionato il codice. 34Lavorare con i revisori pu�� rivelarsi, per molti sviluppatori, la parte 35pi�� intimidatoria del processo di sviluppo del kernel. La vita pu�� esservi 36resa molto pi�� facile se tenete presente alcuni dettagli: 37 38 - Se avete descritto la vostra modifica correttamente, i revisori ne 39 comprenderanno il valore e il perch�� vi siete presi il disturbo di 40 scriverla. Ma tale valore non li tratterr�� dal porvi una domanda 41 fondamentale: come verr�� mantenuto questo codice nel kernel nei prossimi 42 cinque o dieci anni? Molti dei cambiamenti che potrebbero esservi 43 richiesti - da piccoli problemi di stile a sostanziali ristesure - 44 vengono dalla consapevolezza che Linux rester�� in circolazione e in 45 continuo sviluppo ancora per diverse decadi. 46 47 - La revisione del codice �� un duro lavoro, ed �� un mestiere poco 48 riconosciuto; le persone ricordano chi ha scritto il codice, ma meno 49 fama �� attribuita a chi lo ha revisionato. Quindi i revisori potrebbero 50 divenire burberi, specialmente quando vendono i medesimi errori venire 51 fatti ancora e ancora. Se ricevete una revisione che vi sembra abbia 52 un tono arrabbiato, insultante o addirittura offensivo, resistente alla 53 tentazione di rispondere a tono. La revisione riguarda il codice e non 54 la persona, e i revisori non vi stanno attaccando personalmente. 55 56 - Similarmente, i revisori del codice non stanno cercando di promuovere 57 i loro interessi a vostre spese. Gli sviluppatori del kernel spesso si 58 aspettano di lavorare sul kernel per anni, ma sanno che il loro datore 59 di lavoro pu�� cambiare. Davvero, senza praticamente eccezioni, loro 60 stanno lavorando per la creazione del miglior kernel possibile; non 61 stanno cercando di creare un disagio ad aziende concorrenti. 62 63Quello che si sta cercando di dire �� che, quando i revisori vi inviano degli 64appunti dovete fare attenzione alle osservazioni tecniche che vi stanno 65facendo. Non lasciate che il loro modo di esprimersi o il vostro orgoglio 66impediscano che ci�� accada. Quando avete dei suggerimenti sulla revisione, 67prendetevi il tempo per comprendere cosa il revisore stia cercando di 68comunicarvi. Se possibile, sistemate le cose che il revisore vi chiede di 69modificare. E rispondete al revisore ringraziandolo e spiegando come 70intendete fare. 71 72Notate che non dovete per forza essere d'accordo con ogni singola modifica 73suggerita dai revisori. Se credete che il revisore non abbia compreso 74il vostro codice, spiegateglielo. Se avete un'obiezione tecnica da fargli 75su di una modifica suggerita, spiegatela inserendo anche la vostra soluzione 76al problema. Se la vostra spiegazione ha senso, il revisore la accetter��. 77Tuttavia, la vostra motivazione potrebbe non essere del tutto persuasiva, 78specialmente se altri iniziano ad essere d'accordo con il revisore. 79Prendetevi quindi un po' di tempo per pensare ancora alla cosa. Pu�� risultare 80facile essere accecati dalla propria soluzione al punto che non realizzate che 81c'�� qualcosa di fondamentalmente sbagliato o, magari, non state nemmeno 82risolvendo il problema giusto. 83 84Andrew Morton suggerisce che ogni suggerimento di revisione che non �� 85presente nella modifica del codice dovrebbe essere inserito in un commento 86aggiuntivo; ci�� pu�� essere d'aiuto ai futuri revisori nell'evitare domande 87che sorgono al primo sguardo. 88 89Un errore fatale �� quello di ignorare i commenti di revisione nella speranza 90che se ne andranno. Non andranno via. Se pubblicherete nuovamente il 91codice senza aver risposto ai commenti ricevuti, probabilmente le vostre 92modifiche non andranno da nessuna parte. 93 94Parlando di ripubblicazione del codice: per favore tenete a mente che i 95revisori non ricorderanno tutti i dettagli del codice che avete pubblicato 96l'ultima volta. Quindi �� sempre una buona idea quella di ricordare ai 97revisori le questioni sollevate precedetemene e come le avete risolte. 98I revisori non dovrebbero star l�� a cercare all'interno degli archivi per 99famigliarizzare con ci�� che �� stato detto l'ultima volta; se li aiutate 100in questo senso, saranno di umore migliore quando riguarderanno il vostro 101codice. 102 103Se invece avete cercato di far tutto correttamente ma le cose continuano 104a non andar bene? Molti disaccordi di natura tecnica possono essere risolti 105attraverso la discussione, ma ci sono volte dove qualcuno deve prendere 106una decisione. Se credete veramente che tale decisione andr�� contro di voi 107ingiustamente, potete sempre tentare di rivolgervi a qualcuno pi�� 108in alto di voi. Per cose di questo genere la persona con pi�� potere �� 109Andrew Morton. Andrew �� una figura molto rispettata all'interno della 110comunit�� di sviluppo del kernel; lui pu�� spesso sbrogliare situazioni che 111sembrano irrimediabilmente bloccate. Rivolgersi ad Andrew non deve essere 112fatto alla leggera, e non deve essere fatto prima di aver esplorato tutte 113le altre alternative. E tenete a mente, ovviamente, che nemmeno lui 114potrebbe non essere d'accordo con voi. 115 116Cosa accade poi 117=============== 118 119Se la modifica �� ritenuta un elemento valido da essere aggiunta al kernel, 120e una volta che la maggior parte degli appunti dei revisori sono stati 121sistemati, il passo successivo solitamente �� quello di entrare in un 122sottosistema gestito da un manutentore. Come ci�� avviene dipende dal 123sottosistema medesimo; ogni manutentore ha il proprio modo di fare le cose. 124In particolare, ci potrebbero essere diversi sorgenti - uno, magari, dedicato 125alle modifiche pianificate per la finestra di fusione successiva, e un altro 126per il lavoro di lungo periodo. 127 128Per le modifiche proposte in aree per le quali non esiste un sottosistema 129preciso (modifiche di gestione della memoria, per esempio), i sorgenti di 130ripiego finiscono per essere -mm. Ed anche le modifiche che riguardano 131pi�� sottosistemi possono finire in quest'ultimo. 132 133L'inclusione nei sorgenti di un sottosistema pu�� comportare per una patch, 134un alto livello di visibilit��. Ora altri sviluppatori che stanno lavorando 135in quei medesimi sorgenti avranno le vostre modifiche. I sottosistemi 136solitamente riforniscono anche Linux-next, rendendo i propri contenuti 137visibili all'intera comunit�� di sviluppo. A questo punto, ci sono buone 138possibilit�� per voi di ricevere ulteriori commenti da un nuovo gruppo di 139revisori; anche a questi commenti dovrete rispondere come avete gi�� fatto per 140gli altri. 141 142Ci�� che potrebbe accadere a questo punto, in base alla natura della vostra 143modifica, riguarda eventuali conflitti con il lavoro svolto da altri. 144Nella peggiore delle situazioni, i conflitti pi�� pesanti tra modifiche possono 145concludersi con la messa a lato di alcuni dei lavori svolti cosicch�� le 146modifiche restanti possano funzionare ed essere integrate. Altre volte, la 147risoluzione dei conflitti richieder�� del lavoro con altri sviluppatori e, 148possibilmente, lo spostamento di alcune patch da dei sorgenti a degli altri 149in modo da assicurare che tutto sia applicato in modo pulito. Questo lavoro 150pu�� rivelarsi una spina nel fianco, ma consideratevi fortunati: prima 151dell'avvento dei sorgenti linux-next, questi conflitti spesso emergevano solo 152durante l'apertura della finestra di integrazione e dovevano essere smaltiti 153in fretta. Ora essi possono essere risolti comodamente, prima dell'apertura 154della finestra. 155 156Un giorno, se tutto va bene, vi collegherete e vedrete che la vostra patch 157�� stata inserita nel ramo principale de kernel. Congratulazioni! Terminati 158i festeggiamenti (nel frattempo avrete inserito il vostro nome nel file 159MAINTAINERS) vale la pena ricordare una piccola cosa, ma importante: il 160lavoro non �� ancora finito. L'inserimento nel ramo principale porta con se 161nuove sfide. 162 163Cominciamo con il dire che ora la visibilit�� della vostra modifica �� 164ulteriormente cresciuta. Ci potrebbe portare ad una nuova fase di 165commenti dagli sviluppatori che non erano ancora a conoscenza della vostra 166patch. Ignorarli potrebbe essere allettante dato che non ci sono pi�� 167dubbi sull'integrazione della modifica. Resistete a tale tentazione, dovete 168mantenervi disponibili agli sviluppatori che hanno domande o suggerimenti 169per voi. 170 171Ancora pi�� importante: l'inclusione nel ramo principale mette il vostro 172codice nelle mani di un gruppo di *tester* molto pi�� esteso. Anche se avete 173contribuito ad un driver per un hardware che non �� ancora disponibile, sarete 174sorpresi da quante persone inseriranno il vostro codice nei loro kernel. 175E, ovviamente, dove ci sono *tester*, ci saranno anche dei rapporti su 176eventuali bachi. 177 178La peggior specie di rapporti sono quelli che indicano delle regressioni. 179Se la vostra modifica causa una regressione, avrete un gran numero di 180occhi puntati su di voi; la regressione deve essere sistemata il prima 181possibile. Se non vorrete o non sarete capaci di sistemarla (e nessuno 182lo far�� per voi), la vostra modifica sar�� quasi certamente rimossa durante 183la fase di stabilizzazione. Oltre alla perdita di tutto il lavoro svolto 184per far si che la vostra modifica fosse inserita nel ramo principale, 185l'avere una modifica rimossa a causa del fallimento nel sistemare una 186regressione, potrebbe rendere pi�� difficile per voi far accettare 187il vostro lavoro in futuro. 188 189Dopo che ogni regressione �� stata affrontata, ci potrebbero essere altri 190bachi ordinari da "sconfiggere". Il periodo di stabilizzazione �� la 191vostra migliore opportunit�� per sistemare questi bachi e assicurarvi che 192il debutto del vostro codice nel ramo principale del kernel sia il pi�� solido 193possibile. Quindi, per favore, rispondete ai rapporti sui bachi e ponete 194rimedio, se possibile, a tutti i problemi. �� a questo che serve il periodo 195di stabilizzazione; potete iniziare creando nuove fantastiche modifiche 196una volta che ogni problema con le vecchie sia stato risolto. 197 198Non dimenticate che esistono altre pietre miliari che possono generare 199rapporti sui bachi: il successivo rilascio stabile, quando una distribuzione 200importante usa una versione del kernel nel quale �� presente la vostra 201modifica, eccetera. Il continuare a rispondere a questi rapporti �� fonte di 202orgoglio per il vostro lavoro. Se questa non �� una sufficiente motivazione, 203allora, �� anche consigliabile considera che la comunit�� di sviluppo ricorda 204gli sviluppatori che hanno perso interesse per il loro codice una volta 205integrato. La prossima volta che pubblicherete una patch, la comunit�� 206la valuter�� anche sulla base del fatto che non sarete disponibili a 207prendervene cura anche nel futuro. 208 209 210Altre cose che posso accadere 211============================= 212 213Un giorno, potreste aprire la vostra email e vedere che qualcuno vi ha 214inviato una patch per il vostro codice. Questo, dopo tutto, �� uno dei 215vantaggi di avere il vostro codice "l�� fuori". Se siete d'accordo con 216la modifica, potrete anche inoltrarla ad un manutentore di sottosistema 217(assicuratevi di includere la riga "From:" cosicch�� l'attribuzione sia 218corretta, e aggiungete una vostra firma "Signed-off-by"), oppure inviate 219un "Acked-by:" e lasciate che l'autore originale la invii. 220 221Se non siete d'accordo con la patch, inviate una risposta educata 222spiegando il perch��. Se possibile, dite all'autore quali cambiamenti 223servirebbero per rendere la patch accettabile da voi. C'�� una certa 224riluttanza nell'inserire modifiche con un conflitto fra autore 225e manutentore del codice, ma solo fino ad un certo punto. Se siete visti 226come qualcuno che blocca un buon lavoro senza motivo, quelle patch vi 227passeranno oltre e andranno nel ramo principale in ogni caso. Nel kernel 228Linux, nessuno ha potere di veto assoluto su alcun codice. Eccezione 229fatta per Linus, forse. 230 231In rarissime occasioni, potreste vedere qualcosa di completamente diverso: 232un altro sviluppatore che pubblica una soluzione differente al vostro 233problema. A questo punto, c'�� una buona probabilit�� che una delle due 234modifiche non verr�� integrata, e il "c'ero prima io" non �� considerato 235un argomento tecnico rilevante. Se la modifica di qualcun'altro rimpiazza 236la vostra ed entra nel ramo principale, esiste un unico modo di reagire: 237siate contenti che il vostro problema sia stato risolto e andate avanti con 238il vostro lavoro. L'avere un vostro lavoro spintonato da parte in questo 239modo pu�� essere avvilente e scoraggiante, ma la comunit�� ricorder�� come 240avrete reagito anche dopo che avr�� dimenticato quale fu la modifica accettata. 241