PageRenderTime 23ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/Documentation/translations/it_IT/process/6.Followthrough.rst

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