xref: /openbmc/linux/Documentation/translations/it_IT/process/2.Process.rst (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1edba5eecSFederico Vaga.. include:: ../disclaimer-ita.rst
2edba5eecSFederico Vaga
3edba5eecSFederico Vaga:Original: :ref:`Documentation/process/2.Process.rst <development_process>`
4fdf0345eSFederico Vaga:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it>
5edba5eecSFederico Vaga
6edba5eecSFederico Vaga.. _it_development_process:
7edba5eecSFederico Vaga
8edba5eecSFederico VagaCome funziona il processo di sviluppo
9edba5eecSFederico Vaga=====================================
10edba5eecSFederico Vaga
11fdf0345eSFederico VagaLo sviluppo del Kernel agli inizi degli anno '90 era abbastanza libero, con
12fdf0345eSFederico Vagaun numero di utenti e sviluppatori relativamente basso.  Con una base
13fdf0345eSFederico Vagadi milioni di utenti e con 2000 sviluppatori coinvolti nel giro di un anno,
14fdf0345eSFederico Vagail kernel da allora ha messo in atto un certo numero di procedure per rendere
15fdf0345eSFederico Vagalo sviluppo più agevole.  È richiesta una solida conoscenza di come tale
16fdf0345eSFederico Vagaprocesso si svolge per poter esserne parte attiva.
17edba5eecSFederico Vaga
18fdf0345eSFederico VagaIl quadro d'insieme
19fdf0345eSFederico Vaga-------------------
20fdf0345eSFederico Vaga
21fdf0345eSFederico VagaGli sviluppatori kernel utilizzano un calendario di rilascio generico, dove
22fdf0345eSFederico Vagaogni due o tre mesi viene effettuata un rilascio importante del kernel.
23fdf0345eSFederico VagaI rilasci più recenti sono stati:
24fdf0345eSFederico Vaga
25fdf0345eSFederico Vaga	======  =================
26b67aa4efSFederico Vaga	5.0     3 marzo, 2019
27b67aa4efSFederico Vaga	5.1     5 maggio, 2019
28b67aa4efSFederico Vaga	5.2     7 luglio, 2019
29b67aa4efSFederico Vaga	5.3     15 settembre, 2019
30b67aa4efSFederico Vaga	5.4     24 novembre, 2019
31b67aa4efSFederico Vaga	5.5     6 gennaio, 2020
32fdf0345eSFederico Vaga	======  =================
33fdf0345eSFederico Vaga
34b67aa4efSFederico VagaCiascun rilascio 5.x è un importante rilascio del kernel con nuove
35fdf0345eSFederico Vagafunzionalità, modifiche interne dell'API, e molto altro.  Un tipico
36b67aa4efSFederico Vagarilascio contiene quasi 13,000 gruppi di modifiche con ulteriori
37b67aa4efSFederico Vagamodifiche a parecchie migliaia di linee di codice.  La 5.x. è pertanto la
38fdf0345eSFederico Vagalinea di confine nello sviluppo del kernel Linux; il kernel utilizza un sistema
39fdf0345eSFederico Vagadi sviluppo continuo che integra costantemente nuove importanti modifiche.
40fdf0345eSFederico Vaga
41fdf0345eSFederico VagaViene seguita una disciplina abbastanza lineare per l'inclusione delle
42fdf0345eSFederico Vagapatch di ogni rilascio. All'inizio di ogni ciclo di sviluppo, la
43fdf0345eSFederico Vaga"finestra di inclusione" viene dichiarata aperta.  In quel momento il codice
44fdf0345eSFederico Vagaritenuto sufficientemente stabile(e che è accettato dalla comunità di sviluppo)
45fdf0345eSFederico Vagaviene incluso nel ramo principale del kernel.  La maggior parte delle
46fdf0345eSFederico Vagapatch per un nuovo ciclo di sviluppo (e tutte le più importanti modifiche)
47fdf0345eSFederico Vagasaranno inserite durante questo periodo, ad un ritmo che si attesta sulle
48fdf0345eSFederico Vaga1000 modifiche ("patch" o "gruppo di modifiche") al giorno.
49fdf0345eSFederico Vaga
50fdf0345eSFederico Vaga(per inciso, vale la pena notare che i cambiamenti integrati durante la
51fdf0345eSFederico Vaga"finestra di inclusione" non escono dal nulla; questi infatti, sono stati
52fdf0345eSFederico Vagaraccolti e, verificati in anticipo.  Il funzionamento di tale procedimento
53fdf0345eSFederico Vagaverrà descritto dettagliatamente più avanti).
54fdf0345eSFederico Vaga
55fdf0345eSFederico VagaLa finestra di inclusione resta attiva approssimativamente per due settimane.
56fdf0345eSFederico VagaAl termine di questo periodo, Linus Torvald dichiarerà che la finestra è
57fdf0345eSFederico Vagachiusa e rilascerà il primo degli "rc" del kernel.
58b67aa4efSFederico VagaPer il kernel che è destinato ad essere 5.6, per esempio, il rilascio
59b67aa4efSFederico Vagache emerge al termine della finestra d'inclusione si chiamerà 5.6-rc1.
60fdf0345eSFederico VagaQuesto rilascio indica che il momento di aggiungere nuovi componenti è
61fdf0345eSFederico Vagapassato, e che è iniziato il periodo di stabilizzazione del prossimo kernel.
62fdf0345eSFederico Vaga
63fdf0345eSFederico VagaNelle successive sei/dieci settimane, potranno essere sottoposte solo modifiche
64fdf0345eSFederico Vagache vanno a risolvere delle problematiche.  Occasionalmente potrà essere
65fdf0345eSFederico Vagaconsentita una modifica più consistente, ma tali occasioni sono rare.
66fdf0345eSFederico VagaGli sviluppatori che tenteranno di aggiungere nuovi elementi al di fuori della
67fdf0345eSFederico Vagafinestra di inclusione, tendenzialmente, riceveranno un accoglienza poco
68fdf0345eSFederico Vagaamichevole. Come regola generale: se vi perdete la finestra di inclusione per
69fdf0345eSFederico Vagaun dato componente, la cosa migliore da fare è aspettare il ciclo di sviluppo
70fdf0345eSFederico Vagasuccessivo (un'eccezione può essere fatta per i driver per hardware non
71fdf0345eSFederico Vagasupportati in precedenza; se toccano codice non facente parte di quello
72fdf0345eSFederico Vagaattuale, che non causino regressioni e che potrebbero essere aggiunti in
73fdf0345eSFederico Vagasicurezza in un qualsiasi momento)
74fdf0345eSFederico Vaga
75fdf0345eSFederico VagaMentre le correzioni si aprono la loro strada all'interno del ramo principale,
76fdf0345eSFederico Vagail ritmo delle modifiche rallenta col tempo.  Linus rilascia un nuovo
77fdf0345eSFederico Vagakernel -rc circa una volta alla settimana; e ne usciranno circa 6 o 9 prima
78fdf0345eSFederico Vagache il kernel venga considerato sufficientemente stabile e che il rilascio
79b67aa4efSFederico Vagafinale venga fatto.  A quel punto tutto il processo ricomincerà.
80fdf0345eSFederico Vaga
81b67aa4efSFederico VagaEsempio: ecco com'è andato il ciclo di sviluppo della versione 5.4
82fdf0345eSFederico Vaga(tutte le date si collocano nel 2018)
83fdf0345eSFederico Vaga
84fdf0345eSFederico Vaga
85fdf0345eSFederico Vaga	==============  =======================================
86b67aa4efSFederico Vaga	15 settembre	5.3 rilascio stabile
87b67aa4efSFederico Vaga	30 settembre	5.4-rc1, finestra di inclusione chiusa
88b67aa4efSFederico Vaga	6 ottobre	5.4-rc2
89b67aa4efSFederico Vaga	13 ottobre	5.4-rc3
90b67aa4efSFederico Vaga	20 ottobre	5.4-rc4
91b67aa4efSFederico Vaga	27 ottobre	5.4-rc5
92b67aa4efSFederico Vaga	3 novembre	5.4-rc6
93b67aa4efSFederico Vaga	10 novembre	5.4-rc7
94b67aa4efSFederico Vaga	17 novembre	5.4-rc8
95b67aa4efSFederico Vaga	24 novembre	5.4 rilascio stabile
96fdf0345eSFederico Vaga	==============  =======================================
97fdf0345eSFederico Vaga
98fdf0345eSFederico VagaIn che modo gli sviluppatori decidono quando chiudere il ciclo di sviluppo e
99fdf0345eSFederico Vagacreare quindi una rilascio stabile? Un metro valido è il numero di regressioni
100fdf0345eSFederico Vagarilevate nel precedente rilascio.  Nessun baco è il benvenuto, ma quelli che
101fdf0345eSFederico Vagaprocurano problemi su sistemi che hanno funzionato in passato sono considerati
102fdf0345eSFederico Vagaparticolarmente seri.  Per questa ragione, le modifiche che portano ad una
103fdf0345eSFederico Vagaregressione sono viste sfavorevolmente e verranno quasi sicuramente annullate
104fdf0345eSFederico Vagadurante il periodo di stabilizzazione.
105fdf0345eSFederico Vaga
106fdf0345eSFederico VagaL'obiettivo degli sviluppatori è quello di aggiustare tutte le regressioni
107fdf0345eSFederico Vagaconosciute prima che avvenga il rilascio stabile.  Nel mondo reale, questo
108fdf0345eSFederico Vagatipo di perfezione difficilmente viene raggiunta; esistono troppe variabili
109fdf0345eSFederico Vagain un progetto di questa portata.  Arriva un punto dove ritardare il rilascio
110fdf0345eSFederico Vagafinale peggiora la situazione; la quantità di modifiche in attesa della
111fdf0345eSFederico Vagaprossima finestra di inclusione crescerà enormemente, creando ancor più
112b67aa4efSFederico Vagaregressioni al giro successivo.  Quindi molti kernel 5.x escono con una
113fdf0345eSFederico Vagamanciata di regressioni delle quali, si spera, nessuna è grave.
114fdf0345eSFederico Vaga
115fdf0345eSFederico VagaUna volta che un rilascio stabile è fatto, il suo costante mantenimento è
116fdf0345eSFederico Vagaaffidato al "squadra stabilità", attualmente composta da Greg Kroah-Hartman.
117fdf0345eSFederico VagaQuesta squadra rilascia occasionalmente degli aggiornamenti relativi al
118b67aa4efSFederico Vagarilascio stabile usando la numerazione 5.x.y.  Per essere presa in
119fdf0345eSFederico Vagaconsiderazione per un rilascio d'aggiornamento, una modifica deve:
120fdf0345eSFederico Vaga(1) correggere un baco importante (2) essere già inserita nel ramo principale
121fdf0345eSFederico Vagaper il prossimo sviluppo del kernel.  Solitamente, passato il loro rilascio
122fdf0345eSFederico Vagainiziale, i kernel ricevono aggiornamenti per più di un ciclo di sviluppo.
123b67aa4efSFederico VagaQuindi, per esempio, la storia del kernel 5.2 appare così (anno 2019):
124fdf0345eSFederico Vaga
125fdf0345eSFederico Vaga	==============  ===============================
126ac771142SFederico Vaga	 7 luglio	5.2 rilascio stabile
127b67aa4efSFederico Vaga	14 luglio	5.2.1
128b67aa4efSFederico Vaga	21 luglio	5.2.2
129b67aa4efSFederico Vaga	26 luglio	5.2.3
130b67aa4efSFederico Vaga	28 luglio	5.2.4
131b67aa4efSFederico Vaga	31 luglio	5.2.5
132fdf0345eSFederico Vaga	...		...
133b67aa4efSFederico Vaga	11 ottobre	5.2.21
134fdf0345eSFederico Vaga	==============  ===============================
135fdf0345eSFederico Vaga
136b67aa4efSFederico VagaLa 5.2.21 fu l'aggiornamento finale per la versione 5.2.
137fdf0345eSFederico Vaga
138fdf0345eSFederico VagaAlcuni kernel sono destinati ad essere kernel a "lungo termine"; questi
139*3760fe20SFederico Vagariceveranno assistenza per un lungo periodo di tempo. Consultate il seguente
140*3760fe20SFederico Vagacollegamento per avere la lista delle versioni attualmente supportate e i
141*3760fe20SFederico Vagarelativi manutentori:
142fdf0345eSFederico Vaga
143*3760fe20SFederico Vaga       https://www.kernel.org/category/releases.html
144fdf0345eSFederico Vaga
145fdf0345eSFederico VagaQuesta selezione di kernel di lungo periodo sono puramente dovuti ai loro
146fdf0345eSFederico Vagamanutentori, alla loro necessità e al tempo per tenere aggiornate proprio
147fdf0345eSFederico Vagaquelle versioni.  Non ci sono altri kernel a lungo termine in programma per
148fdf0345eSFederico Vagaalcun rilascio in arrivo.
149fdf0345eSFederico Vaga
150fdf0345eSFederico VagaIl ciclo di vita di una patch
151fdf0345eSFederico Vaga-----------------------------
152fdf0345eSFederico Vaga
153fdf0345eSFederico VagaLe patch non passano direttamente dalla tastiera dello sviluppatori
154fdf0345eSFederico Vagaal ramo principale del kernel. Esiste, invece, una procedura disegnata
155fdf0345eSFederico Vagaper assicurare che ogni patch sia di buona qualità e desiderata nel
156fdf0345eSFederico Vagaramo principale.  Questo processo avviene velocemente per le correzioni
157fdf0345eSFederico Vagameno importanti, o, nel caso di patch ampie e controverse, va avanti per anni.
158fdf0345eSFederico VagaPer uno sviluppatore la maggior frustrazione viene dalla mancanza di
159fdf0345eSFederico Vagacomprensione di questo processo o dai tentativi di aggirarlo.
160fdf0345eSFederico Vaga
161fdf0345eSFederico VagaNella speranza di ridurre questa frustrazione, questo documento spiegherà
162fdf0345eSFederico Vagacome una patch viene inserita nel kernel.  Ciò che segue è un'introduzione
163fdf0345eSFederico Vagache descrive il processo ideale.  Approfondimenti verranno invece trattati
164fdf0345eSFederico Vagapiù avanti.
165fdf0345eSFederico Vaga
166fdf0345eSFederico VagaUna patch attraversa, generalmente, le seguenti fasi:
167fdf0345eSFederico Vaga
168fdf0345eSFederico Vaga - Progetto. In questa fase sono stabilite quelli che sono i requisiti
169fdf0345eSFederico Vaga   della modifica - e come verranno soddisfatti.  Il lavoro di progettazione
170fdf0345eSFederico Vaga   viene spesso svolto senza coinvolgere la comunità, ma è meglio renderlo
171fdf0345eSFederico Vaga   il più aperto possibile; questo può far risparmiare molto tempo evitando
172fdf0345eSFederico Vaga   eventuali riprogettazioni successive.
173fdf0345eSFederico Vaga
174fdf0345eSFederico Vaga - Prima revisione. Le patch vengono pubblicate sulle liste di discussione
175fdf0345eSFederico Vaga   interessate, e gli sviluppatori in quella lista risponderanno coi loro
176fdf0345eSFederico Vaga   commenti.  Se si svolge correttamente, questo procedimento potrebbe far
177fdf0345eSFederico Vaga   emergere problemi rilevanti in una patch.
178fdf0345eSFederico Vaga
179fdf0345eSFederico Vaga - Revisione più ampia. Quando la patch è quasi pronta per essere inserita
180fdf0345eSFederico Vaga   nel ramo principale, un manutentore importante del sottosistema dovrebbe
181fdf0345eSFederico Vaga   accettarla - anche se, questa accettazione non è una garanzia che la
182fdf0345eSFederico Vaga   patch arriverà nel ramo principale. La patch sarà visibile nei sorgenti
183fdf0345eSFederico Vaga   del sottosistema in questione e nei sorgenti -next (descritti sotto).
184fdf0345eSFederico Vaga   Quando il processo va a buon fine, questo passo porta ad una revisione
185fdf0345eSFederico Vaga   più estesa della patch e alla scoperta di problemi d'integrazione
186fdf0345eSFederico Vaga   con il lavoro altrui.
187fdf0345eSFederico Vaga
188fdf0345eSFederico Vaga-  Per favore, tenete da conto che la maggior parte dei manutentori ha
189fdf0345eSFederico Vaga   anche un lavoro quotidiano, quindi integrare le vostre patch potrebbe
190fdf0345eSFederico Vaga   non essere la loro priorità più alta.  Se una vostra patch riceve
191fdf0345eSFederico Vaga   dei suggerimenti su dei cambiamenti necessari, dovreste applicare
192fdf0345eSFederico Vaga   quei cambiamenti o giustificare perché non sono necessari.  Se la vostra
193fdf0345eSFederico Vaga   patch non riceve alcuna critica ma non è stata integrata dal
194fdf0345eSFederico Vaga   manutentore del driver o sottosistema, allora dovreste continuare con
195fdf0345eSFederico Vaga   i necessari aggiornamenti per mantenere la patch aggiornata al kernel
196fdf0345eSFederico Vaga   più recente cosicché questa possa integrarsi senza problemi; continuate
197fdf0345eSFederico Vaga   ad inviare gli aggiornamenti per essere revisionati e integrati.
198fdf0345eSFederico Vaga
199fdf0345eSFederico Vaga - Inclusione nel ramo principale. Eventualmente, una buona patch verrà
200fdf0345eSFederico Vaga   inserita all'interno nel repositorio principale, gestito da
201fdf0345eSFederico Vaga   Linus Torvalds.  In questa fase potrebbero emergere nuovi problemi e/o
202fdf0345eSFederico Vaga   commenti; è importante che lo sviluppatore sia collaborativo e che sistemi
203fdf0345eSFederico Vaga   ogni questione che possa emergere.
204fdf0345eSFederico Vaga
205fdf0345eSFederico Vaga - Rilascio stabile. Ora, il numero di utilizzatori che sono potenzialmente
206fdf0345eSFederico Vaga   toccati dalla patch è aumentato, quindi, ancora una volta, potrebbero
207fdf0345eSFederico Vaga   emergere nuovi problemi.
208fdf0345eSFederico Vaga
209fdf0345eSFederico Vaga - Manutenzione di lungo periodo. Nonostante sia possibile che uno sviluppatore
210fdf0345eSFederico Vaga   si dimentichi del codice dopo la sua integrazione, questo comportamento
211fdf0345eSFederico Vaga   lascia una brutta impressione nella comunità di sviluppo.  Integrare il
212fdf0345eSFederico Vaga   codice elimina alcuni degli oneri facenti parte della manutenzione, in
213fdf0345eSFederico Vaga   particolare, sistemerà le problematiche causate dalle modifiche all'API.
214fdf0345eSFederico Vaga   Ma lo sviluppatore originario dovrebbe continuare ad assumersi la
215fdf0345eSFederico Vaga   responsabilità per il codice se quest'ultimo continua ad essere utile
216fdf0345eSFederico Vaga   nel lungo periodo.
217fdf0345eSFederico Vaga
218fdf0345eSFederico VagaUno dei più grandi errori fatti dagli sviluppatori kernel (o dai loro datori
219fdf0345eSFederico Vagadi lavoro) è quello di cercare di ridurre tutta la procedura ad una singola
220fdf0345eSFederico Vaga"integrazione nel remo principale".  Questo approccio inevitabilmente conduce
221fdf0345eSFederico Vagaa una condizione di frustrazione per tutti coloro che sono coinvolti.
222fdf0345eSFederico Vaga
223fdf0345eSFederico VagaCome le modifiche finiscono nel Kernel
224fdf0345eSFederico Vaga--------------------------------------
225fdf0345eSFederico Vaga
226fdf0345eSFederico VagaEsiste una sola persona che può inserire le patch nel repositorio principale
227b67aa4efSFederico Vagadel kernel: Linus Torvalds.  Ma, per esempio, di tutte le 9500 patch
228b67aa4efSFederico Vagache entrarono nella versione 2.6.38 del kernel, solo 112 (circa
229b67aa4efSFederico Vagal'1,3%) furono scelte direttamente da Linus in persona.  Il progetto
230b67aa4efSFederico Vagadel kernel è cresciuto fino a raggiungere una dimensione tale per cui
231b67aa4efSFederico Vagaun singolo sviluppatore non può controllare e selezionare
232b67aa4efSFederico Vagaindipendentemente ogni modifica senza essere supportato.  La via
233b67aa4efSFederico Vagascelta dagli sviluppatori per indirizzare tale crescita è stata quella
234fdf0345eSFederico Vagadi utilizzare un sistema di "sottotenenti" basato sulla fiducia.
235fdf0345eSFederico Vaga
236fdf0345eSFederico VagaIl codice base del kernel è spezzato in una serie si sottosistemi: rete,
237fdf0345eSFederico Vagasupporto per specifiche architetture, gestione della memoria, video e
238fdf0345eSFederico Vagastrumenti, etc.  Molti sottosistemi hanno un manutentore designato: ovvero uno
239fdf0345eSFederico Vagasviluppatore che ha piena responsabilità di tutto il codice presente in quel
240fdf0345eSFederico Vagasottosistema.  Tali manutentori di sottosistema sono i guardiani
241fdf0345eSFederico Vaga(in un certo senso) della parte di kernel che gestiscono; sono coloro che
242fdf0345eSFederico Vaga(solitamente) accetteranno una patch per l'inclusione nel ramo principale
243fdf0345eSFederico Vagadel kernel.
244fdf0345eSFederico Vaga
245fdf0345eSFederico VagaI manutentori di sottosistema gestiscono ciascuno la propria parte dei sorgenti
246fdf0345eSFederico Vagadel kernel, utilizzando abitualmente (ma certamente non sempre) git.
247fdf0345eSFederico VagaStrumenti come git (e affini come quilt o mercurial) permettono ai manutentori
248fdf0345eSFederico Vagadi stilare una lista delle patch, includendo informazioni sull'autore ed
249fdf0345eSFederico Vagaaltri metadati.  In ogni momento, il manutentore può individuare quale patch
250fdf0345eSFederico Vaganel sua repositorio non si trova nel ramo principale.
251fdf0345eSFederico Vaga
252fdf0345eSFederico VagaQuando la "finestra di integrazione" si apre, i manutentori di alto livello
253fdf0345eSFederico Vagachiederanno a Linus di "prendere" dai loro repositori le modifiche che hanno
254fdf0345eSFederico Vagaselezionato per l'inclusione.  Se Linus acconsente, il flusso di patch si
255fdf0345eSFederico Vagaconvoglierà nel repositorio di quest ultimo, divenendo così parte del ramo
256fdf0345eSFederico Vagaprincipale del kernel.  La quantità d'attenzione che Linus presta alle
257fdf0345eSFederico Vagasingole patch ricevute durante l'operazione di integrazione varia.
258fdf0345eSFederico VagaÈ chiaro che, qualche volta, guardi più attentamente.  Ma, come regola
259fdf0345eSFederico Vagagenerale, Linus confida nel fatto che i manutentori di sottosistema non
260fdf0345eSFederico Vagaselezionino pessime patch.
261fdf0345eSFederico Vaga
262fdf0345eSFederico VagaI manutentori di sottosistemi, a turno, possono "prendere" patch
263fdf0345eSFederico Vagaprovenienti da altri manutentori.  Per esempio, i sorgenti per la rete rete
264fdf0345eSFederico Vagasono costruiti da modifiche che si sono accumulate inizialmente nei sorgenti
265fdf0345eSFederico Vagadedicati ai driver per dispositivi di rete, rete senza fili, ecc.  Tale
266fdf0345eSFederico Vagacatena di repositori può essere più o meno lunga, benché raramente ecceda
267fdf0345eSFederico Vagai due o tre collegamenti.  Questo processo è conosciuto come
268fdf0345eSFederico Vaga"la catena della fiducia", perché ogni manutentore all'interno della
269fdf0345eSFederico Vagacatena si fida di coloro che gestiscono i livelli più bassi.
270fdf0345eSFederico Vaga
271fdf0345eSFederico VagaChiaramente, in un sistema come questo, l'inserimento delle patch all'interno
272fdf0345eSFederico Vagadel kernel si basa sul trovare il manutentore giusto.  Di norma, inviare
273fdf0345eSFederico Vagapatch direttamente a Linus non è la via giusta.
274fdf0345eSFederico Vaga
275fdf0345eSFederico Vaga
276fdf0345eSFederico VagaSorgenti -next
277fdf0345eSFederico Vaga--------------
278fdf0345eSFederico Vaga
279fdf0345eSFederico VagaLa catena di sottosistemi guida il flusso di patch all'interno del kernel,
280fdf0345eSFederico Vagama solleva anche un interessante quesito: se qualcuno volesse vedere tutte le
281fdf0345eSFederico Vagapatch pronte per la prossima finestra di integrazione?
282fdf0345eSFederico VagaGli sviluppatori si interesseranno alle patch in sospeso per verificare
283fdf0345eSFederico Vagache non ci siano altri conflitti di cui preoccuparsi; una modifica che, per
284fdf0345eSFederico Vagaesempio, cambia il prototipo di una funzione fondamentale del kernel andrà in
285fdf0345eSFederico Vagaconflitto con qualsiasi altra modifica che utilizzi la vecchia versione di
286fdf0345eSFederico Vagaquella funzione.  Revisori e tester vogliono invece avere accesso alle
287fdf0345eSFederico Vagamodifiche nella loro totalità prima che approdino nel ramo principale del
288fdf0345eSFederico Vagakernel.  Uno potrebbe prendere le patch provenienti da tutti i sottosistemi
289fdf0345eSFederico Vagad'interesse, ma questo sarebbe un lavoro enorme e fallace.
290fdf0345eSFederico Vaga
291fdf0345eSFederico VagaLa risposta ci viene sotto forma di sorgenti -next, dove i sottosistemi sono
292fdf0345eSFederico Vagaraccolti per essere testati e controllati.  Il più vecchio di questi sorgenti,
293fdf0345eSFederico Vagagestito da Andrew Morton, è chiamato "-mm" (memory management, che è l'inizio
294fdf0345eSFederico Vagadi tutto).  L'-mm integra patch proveniente da una lunga lista di sottosistemi;
295fdf0345eSFederico Vagae ha, inoltre, alcune patch destinate al supporto del debugging.
296fdf0345eSFederico Vaga
297fdf0345eSFederico VagaOltre a questo, -mm contiene una raccolta significativa di patch che sono
298fdf0345eSFederico Vagastate selezionate da Andrew direttamente.  Queste patch potrebbero essere
299fdf0345eSFederico Vagastate inviate in una lista di discussione, o possono essere applicate ad una
300fdf0345eSFederico Vagaparte del kernel per la quale non esiste un sottosistema dedicato.
301fdf0345eSFederico VagaDi conseguenza, -mm opera come una specie di sottosistema "ultima spiaggia";
302fdf0345eSFederico Vagase per una patch non esiste una via chiara per entrare nel ramo principale,
303fdf0345eSFederico Vagaallora è probabile che finirà in -mm.  Le patch passate per -mm
304fdf0345eSFederico Vagaeventualmente finiranno nel sottosistema più appropriato o saranno inviate
305fdf0345eSFederico Vagadirettamente a Linus.  In un tipico ciclo di sviluppo, circa il 5-10% delle
306fdf0345eSFederico Vagapatch andrà nel ramo principale attraverso -mm.
307fdf0345eSFederico Vaga
308fdf0345eSFederico VagaLa patch -mm correnti sono disponibili nella cartella "mmotm" (-mm of
309fdf0345eSFederico Vagathe moment) all'indirizzo:
310fdf0345eSFederico Vaga
311fdf0345eSFederico Vaga      http://www.ozlabs.org/~akpm/mmotm/
312fdf0345eSFederico Vaga
313fdf0345eSFederico VagaÈ molto probabile che l'uso dei sorgenti MMOTM diventi un'esperienza
314fdf0345eSFederico Vagafrustrante; ci sono buone probabilità che non compili nemmeno.
315fdf0345eSFederico Vaga
316fdf0345eSFederico VagaI sorgenti principali per il prossimo ciclo d'integrazione delle patch
317fdf0345eSFederico Vagaè linux-next, gestito da Stephen Rothwell.  I sorgenti linux-next sono, per
318fdf0345eSFederico Vagadefinizione, un'istantanea di come dovrà apparire il ramo principale dopo che
319fdf0345eSFederico Vagala prossima finestra di inclusione si chiuderà.  I linux-next sono annunciati
320fdf0345eSFederico Vagasulla lista di discussione linux-kernel e linux-next nel momento in cui
321fdf0345eSFederico Vagavengono assemblati; e possono essere scaricate da:
322fdf0345eSFederico Vaga
323fdf0345eSFederico Vaga	http://www.kernel.org/pub/linux/kernel/next/
324fdf0345eSFederico Vaga
325fdf0345eSFederico VagaLinux-next è divenuto parte integrante del processo di sviluppo del kernel;
326fdf0345eSFederico Vagatutte le patch incorporate durante una finestra di integrazione dovrebbero
327fdf0345eSFederico Vagaaver trovato la propria strada in linux-next, a volte anche prima dell'apertura
328fdf0345eSFederico Vagadella finestra di integrazione.
329fdf0345eSFederico Vaga
330fdf0345eSFederico Vaga
331fdf0345eSFederico VagaSorgenti in preparazione
332fdf0345eSFederico Vaga------------------------
333fdf0345eSFederico Vaga
334fdf0345eSFederico VagaNei sorgenti del kernel esiste la cartella drivers/staging/, dove risiedono
335fdf0345eSFederico Vagamolte sotto-cartelle per i driver o i filesystem che stanno per essere aggiunti
336fdf0345eSFederico Vagaal kernel.  Questi restano nella cartella drivers/staging fintanto che avranno
337fdf0345eSFederico Vagabisogno di maggior lavoro; una volta completato, possono essere spostate
338fdf0345eSFederico Vagaall'interno del kernel nel posto più appropriato.  Questo è il modo di tener
339fdf0345eSFederico Vagatraccia dei driver che non sono ancora in linea con gli standard di codifica
340fdf0345eSFederico Vagao qualità, ma che le persone potrebbero voler usare ugualmente e tracciarne
341fdf0345eSFederico Vagalo sviluppo.
342fdf0345eSFederico Vaga
343fdf0345eSFederico VagaGreg Kroah-Hartman attualmente gestisce i sorgenti in preparazione. I driver
344fdf0345eSFederico Vagache non sono completamente pronti vengono inviati a lui, e ciascun driver avrà
345fdf0345eSFederico Vagala propria sotto-cartella in drivers/staging/.  Assieme ai file sorgenti
346fdf0345eSFederico Vagadei driver, dovrebbe essere presente nella stessa cartella anche un file TODO.
347fdf0345eSFederico VagaIl file TODO elenca il lavoro ancora da fare su questi driver per poter essere
348fdf0345eSFederico Vagaaccettati nel kernel, e indica anche la lista di persone da inserire in copia
349fdf0345eSFederico Vagaconoscenza per ogni modifica fatta.  Le regole attuali richiedono che i
350fdf0345eSFederico Vagadriver debbano, come minimo, compilare adeguatamente.
351fdf0345eSFederico Vaga
352fdf0345eSFederico VagaLa *preparazione* può essere una via relativamente facile per inserire nuovi
353fdf0345eSFederico Vagadriver all'interno del ramo principale, dove, con un po' di fortuna, saranno
354fdf0345eSFederico Vaganotati da altri sviluppatori e migliorati velocemente.  Entrare nella fase
355fdf0345eSFederico Vagadi preparazione non è però la fine della storia, infatti, il codice che si
356fdf0345eSFederico Vagatrova nella cartella staging che non mostra regolari progressi potrebbe
357fdf0345eSFederico Vagaessere rimosso.  Le distribuzioni, inoltre, tendono a dimostrarsi relativamente
358fdf0345eSFederico Vagariluttanti nell'attivare driver in preparazione. Quindi lo preparazione è,
359fdf0345eSFederico Vaganel migliore dei casi, una tappa sulla strada verso il divenire un driver
360fdf0345eSFederico Vagadel ramo principale.
361fdf0345eSFederico Vaga
362fdf0345eSFederico Vaga
363fdf0345eSFederico VagaStrumenti
364fdf0345eSFederico Vaga---------
365fdf0345eSFederico Vaga
366fdf0345eSFederico VagaCome è possibile notare dal testo sopra, il processo di sviluppo del kernel
367fdf0345eSFederico Vagadipende pesantemente dalla capacità di guidare la raccolta di patch in
368fdf0345eSFederico Vagadiverse direzioni.  L'intera cosa non funzionerebbe se non venisse svolta
369fdf0345eSFederico Vagacon l'uso di strumenti appropriati e potenti.  Spiegare l'uso di tali
370fdf0345eSFederico Vagastrumenti non è lo scopo di questo documento, ma c'è spazio per alcuni
371fdf0345eSFederico Vagaconsigli.
372fdf0345eSFederico Vaga
373fdf0345eSFederico VagaIn assoluto, nella comunità del kernel, predomina l'uso di git come sistema
374fdf0345eSFederico Vagadi gestione dei sorgenti. Git è una delle diverse tipologie di sistemi
375fdf0345eSFederico Vagadistribuiti di controllo versione che sono stati sviluppati nella comunità
376fdf0345eSFederico Vagadel software libero.  Esso è calibrato per lo sviluppo del kernel, e si
377fdf0345eSFederico Vagacomporta abbastanza bene quando ha a che fare con repositori grandi e con un
378fdf0345eSFederico Vagavasto numero di patch.  Git ha inoltre la reputazione di essere difficile
379fdf0345eSFederico Vagada imparare e utilizzare, benché stia migliorando.  Agli sviluppatori
380fdf0345eSFederico Vagadel kernel viene richiesta un po' di familiarità con git; anche se non lo
381fdf0345eSFederico Vagautilizzano per il proprio lavoro, hanno bisogno di git per tenersi al passo
382fdf0345eSFederico Vagacon il lavoro degli altri sviluppatori (e con il ramo principale).
383fdf0345eSFederico Vaga
384fdf0345eSFederico VagaGit è ora compreso in quasi tutte le distribuzioni Linux. Esiste una sito che
385fdf0345eSFederico Vagapotete consultare:
386fdf0345eSFederico Vaga
387fdf0345eSFederico Vaga	http://git-scm.com/
388fdf0345eSFederico Vaga
389fdf0345eSFederico VagaQui troverete i riferimenti alla documentazione e alle guide passo-passo.
390fdf0345eSFederico Vaga
391fdf0345eSFederico VagaTra gli sviluppatori Kernel che non usano git, la scelta alternativa più
392fdf0345eSFederico Vagapopolare è quasi sicuramente Mercurial:
393fdf0345eSFederico Vaga
394fdf0345eSFederico Vaga	http://www.selenic.com/mercurial/
395fdf0345eSFederico Vaga
396fdf0345eSFederico VagaMercurial condivide diverse caratteristiche con git, ma fornisce
397fdf0345eSFederico Vagaun'interfaccia che potrebbe risultare più semplice da utilizzare.
398fdf0345eSFederico Vaga
399fdf0345eSFederico VagaL'altro strumento che vale la pena conoscere è Quilt:
400fdf0345eSFederico Vaga
401fdf0345eSFederico Vaga	http://savannah.nongnu.org/projects/quilt/
402fdf0345eSFederico Vaga
403fdf0345eSFederico Vaga
404fdf0345eSFederico VagaQuilt è un sistema di gestione delle patch, piuttosto che un sistema
405fdf0345eSFederico Vagadi gestione dei sorgenti.  Non mantiene uno storico degli eventi; ma piuttosto
406fdf0345eSFederico Vagaè orientato verso il tracciamento di uno specifico insieme di modifiche
407fdf0345eSFederico Vagarispetto ad un codice in evoluzione.  Molti dei più grandi manutentori di
408fdf0345eSFederico Vagasottosistema utilizzano quilt per gestire le patch che dovrebbero essere
409fdf0345eSFederico Vagaintegrate.  Per la gestione di certe tipologie di sorgenti (-mm, per esempio),
410fdf0345eSFederico Vagaquilt è il miglior strumento per svolgere il lavoro.
411fdf0345eSFederico Vaga
412fdf0345eSFederico Vaga
413fdf0345eSFederico VagaListe di discussione
414fdf0345eSFederico Vaga--------------------
415fdf0345eSFederico Vaga
416fdf0345eSFederico VagaUna grossa parte del lavoro di sviluppo del Kernel Linux viene svolto tramite
417fdf0345eSFederico Vagale liste di discussione.  È difficile essere un membro della comunità
418fdf0345eSFederico Vagapienamente coinvolto se non si partecipa almeno ad una lista da qualche
419fdf0345eSFederico Vagaparte.  Ma, le liste di discussione di Linux rappresentano un potenziale
420fdf0345eSFederico Vagaproblema per gli sviluppatori, che rischiano di venir sepolti da un mare di
421fdf0345eSFederico Vagaemail, restare incagliati nelle convenzioni in vigore nelle liste Linux,
422fdf0345eSFederico Vagao entrambi.
423fdf0345eSFederico Vaga
424fdf0345eSFederico VagaMolte delle liste di discussione del Kernel girano su vger.kernel.org;
425fdf0345eSFederico Vagal'elenco principale lo si trova sul sito:
426fdf0345eSFederico Vaga
427fdf0345eSFederico Vaga	http://vger.kernel.org/vger-lists.html
428fdf0345eSFederico Vaga
429fdf0345eSFederico VagaEsistono liste gestite altrove; un certo numero di queste sono in
430ac771142SFederico Vagaredhat.com/mailman/listinfo.
431fdf0345eSFederico Vaga
432fdf0345eSFederico VagaLa lista di discussione principale per lo sviluppo del kernel è, ovviamente,
433fdf0345eSFederico Vagalinux-kernel.  Questa lista è un luogo ostile dove trovarsi; i volumi possono
434fdf0345eSFederico Vagaraggiungere i 500 messaggi al giorno, la quantità di "rumore" è elevata,
435fdf0345eSFederico Vagala conversazione può essere strettamente tecnica e i partecipanti non sono
436fdf0345eSFederico Vagasempre preoccupati di mostrare un alto livello di educazione.  Ma non esiste
437fdf0345eSFederico Vagaaltro luogo dove la comunità di sviluppo del kernel si unisce per intero;
438fdf0345eSFederico Vagagli sviluppatori che evitano tale lista si perderanno informazioni importanti.
439fdf0345eSFederico Vaga
440fdf0345eSFederico VagaCi sono alcuni consigli che possono essere utili per sopravvivere a
441fdf0345eSFederico Vagalinux-kernel:
442fdf0345eSFederico Vaga
443fdf0345eSFederico Vaga- Tenete la lista in una cartella separata, piuttosto che inserirla nella
444fdf0345eSFederico Vaga  casella di posta principale.  Così da essere in grado di ignorare il flusso
445fdf0345eSFederico Vaga  di mail per un certo periodo di tempo.
446fdf0345eSFederico Vaga
447fdf0345eSFederico Vaga- Non cercate di seguire ogni conversazione - nessuno lo fa.  È importante
448fdf0345eSFederico Vaga  filtrare solo gli argomenti d'interesse (sebbene va notato che le
449fdf0345eSFederico Vaga  conversazioni di lungo periodo possono deviare dall'argomento originario
450fdf0345eSFederico Vaga  senza cambiare il titolo della mail) e le persone che stanno partecipando.
451fdf0345eSFederico Vaga
452fdf0345eSFederico Vaga- Non alimentate i troll. Se qualcuno cerca di creare nervosismo, ignoratelo.
453fdf0345eSFederico Vaga
454fdf0345eSFederico Vaga- Quando rispondete ad una mail linux-kernel (o ad altre liste) mantenete
455fdf0345eSFederico Vaga  tutti i Cc:.  In assenza di importanti motivazioni (come una richiesta
456fdf0345eSFederico Vaga  esplicita), non dovreste mai togliere destinatari.  Assicuratevi sempre che
457fdf0345eSFederico Vaga  la persona alla quale state rispondendo sia presente nella lista Cc. Questa
458fdf0345eSFederico Vaga  usanza fa si che divenga inutile chiedere esplicitamente di essere inseriti
459fdf0345eSFederico Vaga  in copia nel rispondere al vostro messaggio.
460fdf0345eSFederico Vaga
461fdf0345eSFederico Vaga- Cercate nell'archivio della lista (e nella rete nella sua totalità) prima
462fdf0345eSFederico Vaga  di far domande.  Molti sviluppatori possono divenire impazienti con le
463fdf0345eSFederico Vaga  persone che chiaramente non hanno svolto i propri compiti a casa.
464fdf0345eSFederico Vaga
465fdf0345eSFederico Vaga- Evitate il *top-posting* (cioè la pratica di mettere la vostra risposta sopra
466fdf0345eSFederico Vaga  alla frase alla quale state rispondendo).  Ciò renderebbe la vostra risposta
467fdf0345eSFederico Vaga  difficile da leggere e genera scarsa impressione.
468fdf0345eSFederico Vaga
469fdf0345eSFederico Vaga- Chiedete nella lista di discussione corretta.  Linux-kernel può essere un
470fdf0345eSFederico Vaga  punto di incontro generale, ma non è il miglior posto dove trovare
471fdf0345eSFederico Vaga  sviluppatori da tutti i sottosistemi.
472fdf0345eSFederico Vaga
473fdf0345eSFederico VagaInfine, la ricerca della corretta lista di discussione è uno degli errori più
474fdf0345eSFederico Vagacomuni per gli sviluppatori principianti.  Qualcuno che pone una domanda
475fdf0345eSFederico Vagarelativa alla rete su linux-kernel riceverà quasi certamente il suggerimento
476fdf0345eSFederico Vagadi chiedere sulla lista netdev, che è la lista frequentata dagli sviluppatori
477fdf0345eSFederico Vagadi rete.  Ci sono poi altre liste per i sottosistemi SCSI, video4linux, IDE,
478fdf0345eSFederico Vagafilesystem, etc.  Il miglior posto dove cercare una lista di discussione è il
479fdf0345eSFederico Vagafile MAINTAINERS che si trova nei sorgenti del kernel.
480fdf0345eSFederico Vaga
481fdf0345eSFederico VagaIniziare con lo sviluppo del Kernel
482fdf0345eSFederico Vaga-----------------------------------
483fdf0345eSFederico Vaga
484fdf0345eSFederico VagaSono comuni le domande sul come iniziare con lo sviluppo del kernel - sia da
485fdf0345eSFederico Vagasingole persone che da aziende.  Altrettanto comuni sono i passi falsi che
486fdf0345eSFederico Vagarendono l'inizio di tale relazione più difficile di quello che dovrebbe essere.
487fdf0345eSFederico Vaga
488fdf0345eSFederico VagaLe aziende spesso cercano di assumere sviluppatori noti per creare un gruppo
489fdf0345eSFederico Vagadi sviluppo iniziale.  Questo, in effetti, può essere una tecnica efficace.
490fdf0345eSFederico VagaMa risulta anche essere dispendiosa e non va ad accrescere il bacino di
491fdf0345eSFederico Vagasviluppatori kernel con esperienza.  È possibile anche "portare a casa"
492fdf0345eSFederico Vagasviluppatori per accelerare lo sviluppo del kernel, dando comunque
493fdf0345eSFederico Vagaall'investimento un po' di tempo.  Prendersi questo tempo può fornire
494fdf0345eSFederico Vagaal datore di lavoro un gruppo di sviluppatori che comprendono sia il kernel
495fdf0345eSFederico Vagache l'azienda stessa, e che possono supportare la formazione di altre persone.
496fdf0345eSFederico VagaNel medio periodo, questa è spesso uno delle soluzioni più proficue.
497fdf0345eSFederico Vaga
498fdf0345eSFederico VagaI singoli sviluppatori sono spesso, comprensibilmente, una perdita come punto
499fdf0345eSFederico Vagadi partenza.  Iniziare con un grande progetto può rivelarsi intimidatorio;
500fdf0345eSFederico Vagaspesso all'inizio si vuole solo verificare il terreno con qualcosa di piccolo.
501fdf0345eSFederico VagaQuesta è una delle motivazioni per le quali molti sviluppatori saltano alla
502fdf0345eSFederico Vagacreazione di patch che vanno a sistemare errori di battitura o
503fdf0345eSFederico Vagaproblematiche minori legate allo stile del codice.  Sfortunatamente, tali
504fdf0345eSFederico Vagapatch creano un certo livello di rumore che distrae l'intera comunità di
505fdf0345eSFederico Vagasviluppo, quindi, sempre di più, esse vengono degradate.  I nuovi sviluppatori
506fdf0345eSFederico Vagache desiderano presentarsi alla comunità non riceveranno l'accoglienza
507fdf0345eSFederico Vagache vorrebbero con questi mezzi.
508fdf0345eSFederico Vaga
509fdf0345eSFederico VagaAndrew Morton da questo consiglio agli aspiranti sviluppatori kernel
510fdf0345eSFederico Vaga
511fdf0345eSFederico Vaga::
512fdf0345eSFederico Vaga
513fdf0345eSFederico Vaga     Il primo progetto per un neofita del kernel dovrebbe essere
514fdf0345eSFederico Vaga     sicuramente quello di "assicurarsi che il kernel funzioni alla
515fdf0345eSFederico Vaga     perfezione sempre e su tutte le macchine sulle quali potete stendere
516fdf0345eSFederico Vaga     la vostra mano".  Solitamente il modo per fare ciò è quello di
517fdf0345eSFederico Vaga     collaborare con gli altri nel sistemare le cose (questo richiede
518fdf0345eSFederico Vaga     persistenza!) ma va bene - è parte dello sviluppo kernel.
519fdf0345eSFederico Vaga
520fdf0345eSFederico Vaga(http://lwn.net/Articles/283982/).
521fdf0345eSFederico Vaga
522fdf0345eSFederico VagaIn assenza di problemi ovvi da risolvere, si consiglia agli sviluppatori
523fdf0345eSFederico Vagadi consultare, in generale, la lista di regressioni e di bachi aperti.
524fdf0345eSFederico VagaNon c'è mai carenza di problematiche bisognose di essere sistemate;
525fdf0345eSFederico Vagaaccollandosi tali questioni gli sviluppatori accumuleranno esperienza con
526fdf0345eSFederico Vagala procedura, ed allo stesso tempo, aumenteranno la loro rispettabilità
527fdf0345eSFederico Vagaall'interno della comunità di sviluppo.
528