18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci:Original: :ref:`Documentation/process/2.Process.rst <development_process>` 48c2ecf20Sopenharmony_ci:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci.. _it_development_process: 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciCome funziona il processo di sviluppo 98c2ecf20Sopenharmony_ci===================================== 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciLo sviluppo del Kernel agli inizi degli anno '90 era abbastanza libero, con 128c2ecf20Sopenharmony_ciun numero di utenti e sviluppatori relativamente basso. Con una base 138c2ecf20Sopenharmony_cidi milioni di utenti e con 2000 sviluppatori coinvolti nel giro di un anno, 148c2ecf20Sopenharmony_ciil kernel da allora ha messo in atto un certo numero di procedure per rendere 158c2ecf20Sopenharmony_cilo sviluppo più agevole. È richiesta una solida conoscenza di come tale 168c2ecf20Sopenharmony_ciprocesso si svolge per poter esserne parte attiva. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ciIl quadro d'insieme 198c2ecf20Sopenharmony_ci------------------- 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciGli sviluppatori kernel utilizzano un calendario di rilascio generico, dove 228c2ecf20Sopenharmony_ciogni due o tre mesi viene effettuata un rilascio importante del kernel. 238c2ecf20Sopenharmony_ciI rilasci più recenti sono stati: 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci ====== ================= 268c2ecf20Sopenharmony_ci 5.0 3 marzo, 2019 278c2ecf20Sopenharmony_ci 5.1 5 maggio, 2019 288c2ecf20Sopenharmony_ci 5.2 7 luglio, 2019 298c2ecf20Sopenharmony_ci 5.3 15 settembre, 2019 308c2ecf20Sopenharmony_ci 5.4 24 novembre, 2019 318c2ecf20Sopenharmony_ci 5.5 6 gennaio, 2020 328c2ecf20Sopenharmony_ci ====== ================= 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciCiascun rilascio 5.x è un importante rilascio del kernel con nuove 358c2ecf20Sopenharmony_cifunzionalità, modifiche interne dell'API, e molto altro. Un tipico 368c2ecf20Sopenharmony_cirilascio contiene quasi 13,000 gruppi di modifiche con ulteriori 378c2ecf20Sopenharmony_cimodifiche a parecchie migliaia di linee di codice. La 5.x. è pertanto la 388c2ecf20Sopenharmony_cilinea di confine nello sviluppo del kernel Linux; il kernel utilizza un sistema 398c2ecf20Sopenharmony_cidi sviluppo continuo che integra costantemente nuove importanti modifiche. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciViene seguita una disciplina abbastanza lineare per l'inclusione delle 428c2ecf20Sopenharmony_cipatch di ogni rilascio. All'inizio di ogni ciclo di sviluppo, la 438c2ecf20Sopenharmony_ci"finestra di inclusione" viene dichiarata aperta. In quel momento il codice 448c2ecf20Sopenharmony_ciritenuto sufficientemente stabile(e che è accettato dalla comunità di sviluppo) 458c2ecf20Sopenharmony_civiene incluso nel ramo principale del kernel. La maggior parte delle 468c2ecf20Sopenharmony_cipatch per un nuovo ciclo di sviluppo (e tutte le più importanti modifiche) 478c2ecf20Sopenharmony_cisaranno inserite durante questo periodo, ad un ritmo che si attesta sulle 488c2ecf20Sopenharmony_ci1000 modifiche ("patch" o "gruppo di modifiche") al giorno. 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci(per inciso, vale la pena notare che i cambiamenti integrati durante la 518c2ecf20Sopenharmony_ci"finestra di inclusione" non escono dal nulla; questi infatti, sono stati 528c2ecf20Sopenharmony_ciraccolti e, verificati in anticipo. Il funzionamento di tale procedimento 538c2ecf20Sopenharmony_civerrà descritto dettagliatamente più avanti). 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ciLa finestra di inclusione resta attiva approssimativamente per due settimane. 568c2ecf20Sopenharmony_ciAl termine di questo periodo, Linus Torvald dichiarerà che la finestra è 578c2ecf20Sopenharmony_cichiusa e rilascerà il primo degli "rc" del kernel. 588c2ecf20Sopenharmony_ciPer il kernel che è destinato ad essere 5.6, per esempio, il rilascio 598c2ecf20Sopenharmony_ciche emerge al termine della finestra d'inclusione si chiamerà 5.6-rc1. 608c2ecf20Sopenharmony_ciQuesto rilascio indica che il momento di aggiungere nuovi componenti è 618c2ecf20Sopenharmony_cipassato, e che è iniziato il periodo di stabilizzazione del prossimo kernel. 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ciNelle successive sei/dieci settimane, potranno essere sottoposte solo modifiche 648c2ecf20Sopenharmony_ciche vanno a risolvere delle problematiche. Occasionalmente potrà essere 658c2ecf20Sopenharmony_ciconsentita una modifica più consistente, ma tali occasioni sono rare. 668c2ecf20Sopenharmony_ciGli sviluppatori che tenteranno di aggiungere nuovi elementi al di fuori della 678c2ecf20Sopenharmony_cifinestra di inclusione, tendenzialmente, riceveranno un accoglienza poco 688c2ecf20Sopenharmony_ciamichevole. Come regola generale: se vi perdete la finestra di inclusione per 698c2ecf20Sopenharmony_ciun dato componente, la cosa migliore da fare è aspettare il ciclo di sviluppo 708c2ecf20Sopenharmony_cisuccessivo (un'eccezione può essere fatta per i driver per hardware non 718c2ecf20Sopenharmony_cisupportati in precedenza; se toccano codice non facente parte di quello 728c2ecf20Sopenharmony_ciattuale, che non causino regressioni e che potrebbero essere aggiunti in 738c2ecf20Sopenharmony_cisicurezza in un qualsiasi momento) 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciMentre le correzioni si aprono la loro strada all'interno del ramo principale, 768c2ecf20Sopenharmony_ciil ritmo delle modifiche rallenta col tempo. Linus rilascia un nuovo 778c2ecf20Sopenharmony_cikernel -rc circa una volta alla settimana; e ne usciranno circa 6 o 9 prima 788c2ecf20Sopenharmony_ciche il kernel venga considerato sufficientemente stabile e che il rilascio 798c2ecf20Sopenharmony_cifinale venga fatto. A quel punto tutto il processo ricomincerà. 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ciEsempio: ecco com'è andato il ciclo di sviluppo della versione 5.4 828c2ecf20Sopenharmony_ci(tutte le date si collocano nel 2018) 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci ============== ======================================= 868c2ecf20Sopenharmony_ci 15 settembre 5.3 rilascio stabile 878c2ecf20Sopenharmony_ci 30 settembre 5.4-rc1, finestra di inclusione chiusa 888c2ecf20Sopenharmony_ci 6 ottobre 5.4-rc2 898c2ecf20Sopenharmony_ci 13 ottobre 5.4-rc3 908c2ecf20Sopenharmony_ci 20 ottobre 5.4-rc4 918c2ecf20Sopenharmony_ci 27 ottobre 5.4-rc5 928c2ecf20Sopenharmony_ci 3 novembre 5.4-rc6 938c2ecf20Sopenharmony_ci 10 novembre 5.4-rc7 948c2ecf20Sopenharmony_ci 17 novembre 5.4-rc8 958c2ecf20Sopenharmony_ci 24 novembre 5.4 rilascio stabile 968c2ecf20Sopenharmony_ci ============== ======================================= 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ciIn che modo gli sviluppatori decidono quando chiudere il ciclo di sviluppo e 998c2ecf20Sopenharmony_cicreare quindi una rilascio stabile? Un metro valido è il numero di regressioni 1008c2ecf20Sopenharmony_cirilevate nel precedente rilascio. Nessun baco è il benvenuto, ma quelli che 1018c2ecf20Sopenharmony_ciprocurano problemi su sistemi che hanno funzionato in passato sono considerati 1028c2ecf20Sopenharmony_ciparticolarmente seri. Per questa ragione, le modifiche che portano ad una 1038c2ecf20Sopenharmony_ciregressione sono viste sfavorevolmente e verranno quasi sicuramente annullate 1048c2ecf20Sopenharmony_cidurante il periodo di stabilizzazione. 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ciL'obiettivo degli sviluppatori è quello di aggiustare tutte le regressioni 1078c2ecf20Sopenharmony_ciconosciute prima che avvenga il rilascio stabile. Nel mondo reale, questo 1088c2ecf20Sopenharmony_citipo di perfezione difficilmente viene raggiunta; esistono troppe variabili 1098c2ecf20Sopenharmony_ciin un progetto di questa portata. Arriva un punto dove ritardare il rilascio 1108c2ecf20Sopenharmony_cifinale peggiora la situazione; la quantità di modifiche in attesa della 1118c2ecf20Sopenharmony_ciprossima finestra di inclusione crescerà enormemente, creando ancor più 1128c2ecf20Sopenharmony_ciregressioni al giro successivo. Quindi molti kernel 5.x escono con una 1138c2ecf20Sopenharmony_cimanciata di regressioni delle quali, si spera, nessuna è grave. 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ciUna volta che un rilascio stabile è fatto, il suo costante mantenimento è 1168c2ecf20Sopenharmony_ciaffidato al "squadra stabilità", attualmente composta da Greg Kroah-Hartman. 1178c2ecf20Sopenharmony_ciQuesta squadra rilascia occasionalmente degli aggiornamenti relativi al 1188c2ecf20Sopenharmony_cirilascio stabile usando la numerazione 5.x.y. Per essere presa in 1198c2ecf20Sopenharmony_ciconsiderazione per un rilascio d'aggiornamento, una modifica deve: 1208c2ecf20Sopenharmony_ci(1) correggere un baco importante (2) essere già inserita nel ramo principale 1218c2ecf20Sopenharmony_ciper il prossimo sviluppo del kernel. Solitamente, passato il loro rilascio 1228c2ecf20Sopenharmony_ciiniziale, i kernel ricevono aggiornamenti per più di un ciclo di sviluppo. 1238c2ecf20Sopenharmony_ciQuindi, per esempio, la storia del kernel 5.2 appare così (anno 2019): 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci ============== =============================== 1268c2ecf20Sopenharmony_ci 15 settembre 5.2 rilascio stabile FIXME settembre è sbagliato 1278c2ecf20Sopenharmony_ci 14 luglio 5.2.1 1288c2ecf20Sopenharmony_ci 21 luglio 5.2.2 1298c2ecf20Sopenharmony_ci 26 luglio 5.2.3 1308c2ecf20Sopenharmony_ci 28 luglio 5.2.4 1318c2ecf20Sopenharmony_ci 31 luglio 5.2.5 1328c2ecf20Sopenharmony_ci ... ... 1338c2ecf20Sopenharmony_ci 11 ottobre 5.2.21 1348c2ecf20Sopenharmony_ci ============== =============================== 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciLa 5.2.21 fu l'aggiornamento finale per la versione 5.2. 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ciAlcuni kernel sono destinati ad essere kernel a "lungo termine"; questi 1398c2ecf20Sopenharmony_ciriceveranno assistenza per un lungo periodo di tempo. Al momento in cui 1408c2ecf20Sopenharmony_ciscriviamo, i manutentori dei kernel stabili a lungo termine sono: 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci ====== ================================ ========================================== 1438c2ecf20Sopenharmony_ci 3.16 Ben Hutchings (kernel stabile molto più a lungo termine) 1448c2ecf20Sopenharmony_ci 4.4 Greg Kroah-Hartman e Sasha Levin (kernel stabile molto più a lungo termine) 1458c2ecf20Sopenharmony_ci 4.9 Greg Kroah-Hartman e Sasha Levin 1468c2ecf20Sopenharmony_ci 4.14 Greg Kroah-Hartman e Sasha Levin 1478c2ecf20Sopenharmony_ci 4.19 Greg Kroah-Hartman e Sasha Levin 1488c2ecf20Sopenharmony_ci 5.4i Greg Kroah-Hartman e Sasha Levin 1498c2ecf20Sopenharmony_ci ====== ================================ ========================================== 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ciQuesta selezione di kernel di lungo periodo sono puramente dovuti ai loro 1538c2ecf20Sopenharmony_cimanutentori, alla loro necessità e al tempo per tenere aggiornate proprio 1548c2ecf20Sopenharmony_ciquelle versioni. Non ci sono altri kernel a lungo termine in programma per 1558c2ecf20Sopenharmony_cialcun rilascio in arrivo. 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ciIl ciclo di vita di una patch 1588c2ecf20Sopenharmony_ci----------------------------- 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ciLe patch non passano direttamente dalla tastiera dello sviluppatori 1618c2ecf20Sopenharmony_cial ramo principale del kernel. Esiste, invece, una procedura disegnata 1628c2ecf20Sopenharmony_ciper assicurare che ogni patch sia di buona qualità e desiderata nel 1638c2ecf20Sopenharmony_ciramo principale. Questo processo avviene velocemente per le correzioni 1648c2ecf20Sopenharmony_cimeno importanti, o, nel caso di patch ampie e controverse, va avanti per anni. 1658c2ecf20Sopenharmony_ciPer uno sviluppatore la maggior frustrazione viene dalla mancanza di 1668c2ecf20Sopenharmony_cicomprensione di questo processo o dai tentativi di aggirarlo. 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ciNella speranza di ridurre questa frustrazione, questo documento spiegherà 1698c2ecf20Sopenharmony_cicome una patch viene inserita nel kernel. Ciò che segue è un'introduzione 1708c2ecf20Sopenharmony_ciche descrive il processo ideale. Approfondimenti verranno invece trattati 1718c2ecf20Sopenharmony_cipiù avanti. 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ciUna patch attraversa, generalmente, le seguenti fasi: 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci - Progetto. In questa fase sono stabilite quelli che sono i requisiti 1768c2ecf20Sopenharmony_ci della modifica - e come verranno soddisfatti. Il lavoro di progettazione 1778c2ecf20Sopenharmony_ci viene spesso svolto senza coinvolgere la comunità, ma è meglio renderlo 1788c2ecf20Sopenharmony_ci il più aperto possibile; questo può far risparmiare molto tempo evitando 1798c2ecf20Sopenharmony_ci eventuali riprogettazioni successive. 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci - Prima revisione. Le patch vengono pubblicate sulle liste di discussione 1828c2ecf20Sopenharmony_ci interessate, e gli sviluppatori in quella lista risponderanno coi loro 1838c2ecf20Sopenharmony_ci commenti. Se si svolge correttamente, questo procedimento potrebbe far 1848c2ecf20Sopenharmony_ci emergere problemi rilevanti in una patch. 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci - Revisione più ampia. Quando la patch è quasi pronta per essere inserita 1878c2ecf20Sopenharmony_ci nel ramo principale, un manutentore importante del sottosistema dovrebbe 1888c2ecf20Sopenharmony_ci accettarla - anche se, questa accettazione non è una garanzia che la 1898c2ecf20Sopenharmony_ci patch arriverà nel ramo principale. La patch sarà visibile nei sorgenti 1908c2ecf20Sopenharmony_ci del sottosistema in questione e nei sorgenti -next (descritti sotto). 1918c2ecf20Sopenharmony_ci Quando il processo va a buon fine, questo passo porta ad una revisione 1928c2ecf20Sopenharmony_ci più estesa della patch e alla scoperta di problemi d'integrazione 1938c2ecf20Sopenharmony_ci con il lavoro altrui. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci- Per favore, tenete da conto che la maggior parte dei manutentori ha 1968c2ecf20Sopenharmony_ci anche un lavoro quotidiano, quindi integrare le vostre patch potrebbe 1978c2ecf20Sopenharmony_ci non essere la loro priorità più alta. Se una vostra patch riceve 1988c2ecf20Sopenharmony_ci dei suggerimenti su dei cambiamenti necessari, dovreste applicare 1998c2ecf20Sopenharmony_ci quei cambiamenti o giustificare perché non sono necessari. Se la vostra 2008c2ecf20Sopenharmony_ci patch non riceve alcuna critica ma non è stata integrata dal 2018c2ecf20Sopenharmony_ci manutentore del driver o sottosistema, allora dovreste continuare con 2028c2ecf20Sopenharmony_ci i necessari aggiornamenti per mantenere la patch aggiornata al kernel 2038c2ecf20Sopenharmony_ci più recente cosicché questa possa integrarsi senza problemi; continuate 2048c2ecf20Sopenharmony_ci ad inviare gli aggiornamenti per essere revisionati e integrati. 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci - Inclusione nel ramo principale. Eventualmente, una buona patch verrà 2078c2ecf20Sopenharmony_ci inserita all'interno nel repositorio principale, gestito da 2088c2ecf20Sopenharmony_ci Linus Torvalds. In questa fase potrebbero emergere nuovi problemi e/o 2098c2ecf20Sopenharmony_ci commenti; è importante che lo sviluppatore sia collaborativo e che sistemi 2108c2ecf20Sopenharmony_ci ogni questione che possa emergere. 2118c2ecf20Sopenharmony_ci 2128c2ecf20Sopenharmony_ci - Rilascio stabile. Ora, il numero di utilizzatori che sono potenzialmente 2138c2ecf20Sopenharmony_ci toccati dalla patch è aumentato, quindi, ancora una volta, potrebbero 2148c2ecf20Sopenharmony_ci emergere nuovi problemi. 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci - Manutenzione di lungo periodo. Nonostante sia possibile che uno sviluppatore 2178c2ecf20Sopenharmony_ci si dimentichi del codice dopo la sua integrazione, questo comportamento 2188c2ecf20Sopenharmony_ci lascia una brutta impressione nella comunità di sviluppo. Integrare il 2198c2ecf20Sopenharmony_ci codice elimina alcuni degli oneri facenti parte della manutenzione, in 2208c2ecf20Sopenharmony_ci particolare, sistemerà le problematiche causate dalle modifiche all'API. 2218c2ecf20Sopenharmony_ci Ma lo sviluppatore originario dovrebbe continuare ad assumersi la 2228c2ecf20Sopenharmony_ci responsabilità per il codice se quest'ultimo continua ad essere utile 2238c2ecf20Sopenharmony_ci nel lungo periodo. 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ciUno dei più grandi errori fatti dagli sviluppatori kernel (o dai loro datori 2268c2ecf20Sopenharmony_cidi lavoro) è quello di cercare di ridurre tutta la procedura ad una singola 2278c2ecf20Sopenharmony_ci"integrazione nel remo principale". Questo approccio inevitabilmente conduce 2288c2ecf20Sopenharmony_cia una condizione di frustrazione per tutti coloro che sono coinvolti. 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ciCome le modifiche finiscono nel Kernel 2318c2ecf20Sopenharmony_ci-------------------------------------- 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ciEsiste una sola persona che può inserire le patch nel repositorio principale 2348c2ecf20Sopenharmony_cidel kernel: Linus Torvalds. Ma, per esempio, di tutte le 9500 patch 2358c2ecf20Sopenharmony_ciche entrarono nella versione 2.6.38 del kernel, solo 112 (circa 2368c2ecf20Sopenharmony_cil'1,3%) furono scelte direttamente da Linus in persona. Il progetto 2378c2ecf20Sopenharmony_cidel kernel è cresciuto fino a raggiungere una dimensione tale per cui 2388c2ecf20Sopenharmony_ciun singolo sviluppatore non può controllare e selezionare 2398c2ecf20Sopenharmony_ciindipendentemente ogni modifica senza essere supportato. La via 2408c2ecf20Sopenharmony_ciscelta dagli sviluppatori per indirizzare tale crescita è stata quella 2418c2ecf20Sopenharmony_cidi utilizzare un sistema di "sottotenenti" basato sulla fiducia. 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ciIl codice base del kernel è spezzato in una serie si sottosistemi: rete, 2448c2ecf20Sopenharmony_cisupporto per specifiche architetture, gestione della memoria, video e 2458c2ecf20Sopenharmony_cistrumenti, etc. Molti sottosistemi hanno un manutentore designato: ovvero uno 2468c2ecf20Sopenharmony_cisviluppatore che ha piena responsabilità di tutto il codice presente in quel 2478c2ecf20Sopenharmony_cisottosistema. Tali manutentori di sottosistema sono i guardiani 2488c2ecf20Sopenharmony_ci(in un certo senso) della parte di kernel che gestiscono; sono coloro che 2498c2ecf20Sopenharmony_ci(solitamente) accetteranno una patch per l'inclusione nel ramo principale 2508c2ecf20Sopenharmony_cidel kernel. 2518c2ecf20Sopenharmony_ci 2528c2ecf20Sopenharmony_ciI manutentori di sottosistema gestiscono ciascuno la propria parte dei sorgenti 2538c2ecf20Sopenharmony_cidel kernel, utilizzando abitualmente (ma certamente non sempre) git. 2548c2ecf20Sopenharmony_ciStrumenti come git (e affini come quilt o mercurial) permettono ai manutentori 2558c2ecf20Sopenharmony_cidi stilare una lista delle patch, includendo informazioni sull'autore ed 2568c2ecf20Sopenharmony_cialtri metadati. In ogni momento, il manutentore può individuare quale patch 2578c2ecf20Sopenharmony_cinel sua repositorio non si trova nel ramo principale. 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ciQuando la "finestra di integrazione" si apre, i manutentori di alto livello 2608c2ecf20Sopenharmony_cichiederanno a Linus di "prendere" dai loro repositori le modifiche che hanno 2618c2ecf20Sopenharmony_ciselezionato per l'inclusione. Se Linus acconsente, il flusso di patch si 2628c2ecf20Sopenharmony_ciconvoglierà nel repositorio di quest ultimo, divenendo così parte del ramo 2638c2ecf20Sopenharmony_ciprincipale del kernel. La quantità d'attenzione che Linus presta alle 2648c2ecf20Sopenharmony_cisingole patch ricevute durante l'operazione di integrazione varia. 2658c2ecf20Sopenharmony_ciÈ chiaro che, qualche volta, guardi più attentamente. Ma, come regola 2668c2ecf20Sopenharmony_cigenerale, Linus confida nel fatto che i manutentori di sottosistema non 2678c2ecf20Sopenharmony_ciselezionino pessime patch. 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_ciI manutentori di sottosistemi, a turno, possono "prendere" patch 2708c2ecf20Sopenharmony_ciprovenienti da altri manutentori. Per esempio, i sorgenti per la rete rete 2718c2ecf20Sopenharmony_cisono costruiti da modifiche che si sono accumulate inizialmente nei sorgenti 2728c2ecf20Sopenharmony_cidedicati ai driver per dispositivi di rete, rete senza fili, ecc. Tale 2738c2ecf20Sopenharmony_cicatena di repositori può essere più o meno lunga, benché raramente ecceda 2748c2ecf20Sopenharmony_cii due o tre collegamenti. Questo processo è conosciuto come 2758c2ecf20Sopenharmony_ci"la catena della fiducia", perché ogni manutentore all'interno della 2768c2ecf20Sopenharmony_cicatena si fida di coloro che gestiscono i livelli più bassi. 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ciChiaramente, in un sistema come questo, l'inserimento delle patch all'interno 2798c2ecf20Sopenharmony_cidel kernel si basa sul trovare il manutentore giusto. Di norma, inviare 2808c2ecf20Sopenharmony_cipatch direttamente a Linus non è la via giusta. 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_ciSorgenti -next 2848c2ecf20Sopenharmony_ci-------------- 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ciLa catena di sottosistemi guida il flusso di patch all'interno del kernel, 2878c2ecf20Sopenharmony_cima solleva anche un interessante quesito: se qualcuno volesse vedere tutte le 2888c2ecf20Sopenharmony_cipatch pronte per la prossima finestra di integrazione? 2898c2ecf20Sopenharmony_ciGli sviluppatori si interesseranno alle patch in sospeso per verificare 2908c2ecf20Sopenharmony_ciche non ci siano altri conflitti di cui preoccuparsi; una modifica che, per 2918c2ecf20Sopenharmony_ciesempio, cambia il prototipo di una funzione fondamentale del kernel andrà in 2928c2ecf20Sopenharmony_ciconflitto con qualsiasi altra modifica che utilizzi la vecchia versione di 2938c2ecf20Sopenharmony_ciquella funzione. Revisori e tester vogliono invece avere accesso alle 2948c2ecf20Sopenharmony_cimodifiche nella loro totalità prima che approdino nel ramo principale del 2958c2ecf20Sopenharmony_cikernel. Uno potrebbe prendere le patch provenienti da tutti i sottosistemi 2968c2ecf20Sopenharmony_cid'interesse, ma questo sarebbe un lavoro enorme e fallace. 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ciLa risposta ci viene sotto forma di sorgenti -next, dove i sottosistemi sono 2998c2ecf20Sopenharmony_ciraccolti per essere testati e controllati. Il più vecchio di questi sorgenti, 3008c2ecf20Sopenharmony_cigestito da Andrew Morton, è chiamato "-mm" (memory management, che è l'inizio 3018c2ecf20Sopenharmony_cidi tutto). L'-mm integra patch proveniente da una lunga lista di sottosistemi; 3028c2ecf20Sopenharmony_cie ha, inoltre, alcune patch destinate al supporto del debugging. 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_ciOltre a questo, -mm contiene una raccolta significativa di patch che sono 3058c2ecf20Sopenharmony_cistate selezionate da Andrew direttamente. Queste patch potrebbero essere 3068c2ecf20Sopenharmony_cistate inviate in una lista di discussione, o possono essere applicate ad una 3078c2ecf20Sopenharmony_ciparte del kernel per la quale non esiste un sottosistema dedicato. 3088c2ecf20Sopenharmony_ciDi conseguenza, -mm opera come una specie di sottosistema "ultima spiaggia"; 3098c2ecf20Sopenharmony_cise per una patch non esiste una via chiara per entrare nel ramo principale, 3108c2ecf20Sopenharmony_ciallora è probabile che finirà in -mm. Le patch passate per -mm 3118c2ecf20Sopenharmony_cieventualmente finiranno nel sottosistema più appropriato o saranno inviate 3128c2ecf20Sopenharmony_cidirettamente a Linus. In un tipico ciclo di sviluppo, circa il 5-10% delle 3138c2ecf20Sopenharmony_cipatch andrà nel ramo principale attraverso -mm. 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ciLa patch -mm correnti sono disponibili nella cartella "mmotm" (-mm of 3168c2ecf20Sopenharmony_cithe moment) all'indirizzo: 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_ci http://www.ozlabs.org/~akpm/mmotm/ 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_ciÈ molto probabile che l'uso dei sorgenti MMOTM diventi un'esperienza 3218c2ecf20Sopenharmony_cifrustrante; ci sono buone probabilità che non compili nemmeno. 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ciI sorgenti principali per il prossimo ciclo d'integrazione delle patch 3248c2ecf20Sopenharmony_ciè linux-next, gestito da Stephen Rothwell. I sorgenti linux-next sono, per 3258c2ecf20Sopenharmony_cidefinizione, un'istantanea di come dovrà apparire il ramo principale dopo che 3268c2ecf20Sopenharmony_cila prossima finestra di inclusione si chiuderà. I linux-next sono annunciati 3278c2ecf20Sopenharmony_cisulla lista di discussione linux-kernel e linux-next nel momento in cui 3288c2ecf20Sopenharmony_civengono assemblati; e possono essere scaricate da: 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ci http://www.kernel.org/pub/linux/kernel/next/ 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_ciLinux-next è divenuto parte integrante del processo di sviluppo del kernel; 3338c2ecf20Sopenharmony_citutte le patch incorporate durante una finestra di integrazione dovrebbero 3348c2ecf20Sopenharmony_ciaver trovato la propria strada in linux-next, a volte anche prima dell'apertura 3358c2ecf20Sopenharmony_cidella finestra di integrazione. 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_ciSorgenti in preparazione 3398c2ecf20Sopenharmony_ci------------------------ 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ciNei sorgenti del kernel esiste la cartella drivers/staging/, dove risiedono 3428c2ecf20Sopenharmony_cimolte sotto-cartelle per i driver o i filesystem che stanno per essere aggiunti 3438c2ecf20Sopenharmony_cial kernel. Questi restano nella cartella drivers/staging fintanto che avranno 3448c2ecf20Sopenharmony_cibisogno di maggior lavoro; una volta completato, possono essere spostate 3458c2ecf20Sopenharmony_ciall'interno del kernel nel posto più appropriato. Questo è il modo di tener 3468c2ecf20Sopenharmony_citraccia dei driver che non sono ancora in linea con gli standard di codifica 3478c2ecf20Sopenharmony_cio qualità, ma che le persone potrebbero voler usare ugualmente e tracciarne 3488c2ecf20Sopenharmony_cilo sviluppo. 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ciGreg Kroah-Hartman attualmente gestisce i sorgenti in preparazione. I driver 3518c2ecf20Sopenharmony_ciche non sono completamente pronti vengono inviati a lui, e ciascun driver avrà 3528c2ecf20Sopenharmony_cila propria sotto-cartella in drivers/staging/. Assieme ai file sorgenti 3538c2ecf20Sopenharmony_cidei driver, dovrebbe essere presente nella stessa cartella anche un file TODO. 3548c2ecf20Sopenharmony_ciIl file TODO elenca il lavoro ancora da fare su questi driver per poter essere 3558c2ecf20Sopenharmony_ciaccettati nel kernel, e indica anche la lista di persone da inserire in copia 3568c2ecf20Sopenharmony_ciconoscenza per ogni modifica fatta. Le regole attuali richiedono che i 3578c2ecf20Sopenharmony_cidriver debbano, come minimo, compilare adeguatamente. 3588c2ecf20Sopenharmony_ci 3598c2ecf20Sopenharmony_ciLa *preparazione* può essere una via relativamente facile per inserire nuovi 3608c2ecf20Sopenharmony_cidriver all'interno del ramo principale, dove, con un po' di fortuna, saranno 3618c2ecf20Sopenharmony_cinotati da altri sviluppatori e migliorati velocemente. Entrare nella fase 3628c2ecf20Sopenharmony_cidi preparazione non è però la fine della storia, infatti, il codice che si 3638c2ecf20Sopenharmony_citrova nella cartella staging che non mostra regolari progressi potrebbe 3648c2ecf20Sopenharmony_ciessere rimosso. Le distribuzioni, inoltre, tendono a dimostrarsi relativamente 3658c2ecf20Sopenharmony_ciriluttanti nell'attivare driver in preparazione. Quindi lo preparazione è, 3668c2ecf20Sopenharmony_cinel migliore dei casi, una tappa sulla strada verso il divenire un driver 3678c2ecf20Sopenharmony_cidel ramo principale. 3688c2ecf20Sopenharmony_ci 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_ciStrumenti 3718c2ecf20Sopenharmony_ci--------- 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ciCome è possibile notare dal testo sopra, il processo di sviluppo del kernel 3748c2ecf20Sopenharmony_cidipende pesantemente dalla capacità di guidare la raccolta di patch in 3758c2ecf20Sopenharmony_cidiverse direzioni. L'intera cosa non funzionerebbe se non venisse svolta 3768c2ecf20Sopenharmony_cicon l'uso di strumenti appropriati e potenti. Spiegare l'uso di tali 3778c2ecf20Sopenharmony_cistrumenti non è lo scopo di questo documento, ma c'è spazio per alcuni 3788c2ecf20Sopenharmony_ciconsigli. 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_ciIn assoluto, nella comunità del kernel, predomina l'uso di git come sistema 3818c2ecf20Sopenharmony_cidi gestione dei sorgenti. Git è una delle diverse tipologie di sistemi 3828c2ecf20Sopenharmony_cidistribuiti di controllo versione che sono stati sviluppati nella comunità 3838c2ecf20Sopenharmony_cidel software libero. Esso è calibrato per lo sviluppo del kernel, e si 3848c2ecf20Sopenharmony_cicomporta abbastanza bene quando ha a che fare con repositori grandi e con un 3858c2ecf20Sopenharmony_civasto numero di patch. Git ha inoltre la reputazione di essere difficile 3868c2ecf20Sopenharmony_cida imparare e utilizzare, benché stia migliorando. Agli sviluppatori 3878c2ecf20Sopenharmony_cidel kernel viene richiesta un po' di familiarità con git; anche se non lo 3888c2ecf20Sopenharmony_ciutilizzano per il proprio lavoro, hanno bisogno di git per tenersi al passo 3898c2ecf20Sopenharmony_cicon il lavoro degli altri sviluppatori (e con il ramo principale). 3908c2ecf20Sopenharmony_ci 3918c2ecf20Sopenharmony_ciGit è ora compreso in quasi tutte le distribuzioni Linux. Esiste una sito che 3928c2ecf20Sopenharmony_cipotete consultare: 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_ci http://git-scm.com/ 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ciQui troverete i riferimenti alla documentazione e alle guide passo-passo. 3978c2ecf20Sopenharmony_ci 3988c2ecf20Sopenharmony_ciTra gli sviluppatori Kernel che non usano git, la scelta alternativa più 3998c2ecf20Sopenharmony_cipopolare è quasi sicuramente Mercurial: 4008c2ecf20Sopenharmony_ci 4018c2ecf20Sopenharmony_ci http://www.selenic.com/mercurial/ 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ciMercurial condivide diverse caratteristiche con git, ma fornisce 4048c2ecf20Sopenharmony_ciun'interfaccia che potrebbe risultare più semplice da utilizzare. 4058c2ecf20Sopenharmony_ci 4068c2ecf20Sopenharmony_ciL'altro strumento che vale la pena conoscere è Quilt: 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ci http://savannah.nongnu.org/projects/quilt/ 4098c2ecf20Sopenharmony_ci 4108c2ecf20Sopenharmony_ci 4118c2ecf20Sopenharmony_ciQuilt è un sistema di gestione delle patch, piuttosto che un sistema 4128c2ecf20Sopenharmony_cidi gestione dei sorgenti. Non mantiene uno storico degli eventi; ma piuttosto 4138c2ecf20Sopenharmony_ciè orientato verso il tracciamento di uno specifico insieme di modifiche 4148c2ecf20Sopenharmony_cirispetto ad un codice in evoluzione. Molti dei più grandi manutentori di 4158c2ecf20Sopenharmony_cisottosistema utilizzano quilt per gestire le patch che dovrebbero essere 4168c2ecf20Sopenharmony_ciintegrate. Per la gestione di certe tipologie di sorgenti (-mm, per esempio), 4178c2ecf20Sopenharmony_ciquilt è il miglior strumento per svolgere il lavoro. 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ciListe di discussione 4218c2ecf20Sopenharmony_ci-------------------- 4228c2ecf20Sopenharmony_ci 4238c2ecf20Sopenharmony_ciUna grossa parte del lavoro di sviluppo del Kernel Linux viene svolto tramite 4248c2ecf20Sopenharmony_cile liste di discussione. È difficile essere un membro della comunità 4258c2ecf20Sopenharmony_cipienamente coinvolto se non si partecipa almeno ad una lista da qualche 4268c2ecf20Sopenharmony_ciparte. Ma, le liste di discussione di Linux rappresentano un potenziale 4278c2ecf20Sopenharmony_ciproblema per gli sviluppatori, che rischiano di venir sepolti da un mare di 4288c2ecf20Sopenharmony_ciemail, restare incagliati nelle convenzioni in vigore nelle liste Linux, 4298c2ecf20Sopenharmony_cio entrambi. 4308c2ecf20Sopenharmony_ci 4318c2ecf20Sopenharmony_ciMolte delle liste di discussione del Kernel girano su vger.kernel.org; 4328c2ecf20Sopenharmony_cil'elenco principale lo si trova sul sito: 4338c2ecf20Sopenharmony_ci 4348c2ecf20Sopenharmony_ci http://vger.kernel.org/vger-lists.html 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_ciEsistono liste gestite altrove; un certo numero di queste sono in 4378c2ecf20Sopenharmony_cilists.redhat.com. 4388c2ecf20Sopenharmony_ci 4398c2ecf20Sopenharmony_ciLa lista di discussione principale per lo sviluppo del kernel è, ovviamente, 4408c2ecf20Sopenharmony_cilinux-kernel. Questa lista è un luogo ostile dove trovarsi; i volumi possono 4418c2ecf20Sopenharmony_ciraggiungere i 500 messaggi al giorno, la quantità di "rumore" è elevata, 4428c2ecf20Sopenharmony_cila conversazione può essere strettamente tecnica e i partecipanti non sono 4438c2ecf20Sopenharmony_cisempre preoccupati di mostrare un alto livello di educazione. Ma non esiste 4448c2ecf20Sopenharmony_cialtro luogo dove la comunità di sviluppo del kernel si unisce per intero; 4458c2ecf20Sopenharmony_cigli sviluppatori che evitano tale lista si perderanno informazioni importanti. 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_ciCi sono alcuni consigli che possono essere utili per sopravvivere a 4488c2ecf20Sopenharmony_cilinux-kernel: 4498c2ecf20Sopenharmony_ci 4508c2ecf20Sopenharmony_ci- Tenete la lista in una cartella separata, piuttosto che inserirla nella 4518c2ecf20Sopenharmony_ci casella di posta principale. Così da essere in grado di ignorare il flusso 4528c2ecf20Sopenharmony_ci di mail per un certo periodo di tempo. 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ci- Non cercate di seguire ogni conversazione - nessuno lo fa. È importante 4558c2ecf20Sopenharmony_ci filtrare solo gli argomenti d'interesse (sebbene va notato che le 4568c2ecf20Sopenharmony_ci conversazioni di lungo periodo possono deviare dall'argomento originario 4578c2ecf20Sopenharmony_ci senza cambiare il titolo della mail) e le persone che stanno partecipando. 4588c2ecf20Sopenharmony_ci 4598c2ecf20Sopenharmony_ci- Non alimentate i troll. Se qualcuno cerca di creare nervosismo, ignoratelo. 4608c2ecf20Sopenharmony_ci 4618c2ecf20Sopenharmony_ci- Quando rispondete ad una mail linux-kernel (o ad altre liste) mantenete 4628c2ecf20Sopenharmony_ci tutti i Cc:. In assenza di importanti motivazioni (come una richiesta 4638c2ecf20Sopenharmony_ci esplicita), non dovreste mai togliere destinatari. Assicuratevi sempre che 4648c2ecf20Sopenharmony_ci la persona alla quale state rispondendo sia presente nella lista Cc. Questa 4658c2ecf20Sopenharmony_ci usanza fa si che divenga inutile chiedere esplicitamente di essere inseriti 4668c2ecf20Sopenharmony_ci in copia nel rispondere al vostro messaggio. 4678c2ecf20Sopenharmony_ci 4688c2ecf20Sopenharmony_ci- Cercate nell'archivio della lista (e nella rete nella sua totalità) prima 4698c2ecf20Sopenharmony_ci di far domande. Molti sviluppatori possono divenire impazienti con le 4708c2ecf20Sopenharmony_ci persone che chiaramente non hanno svolto i propri compiti a casa. 4718c2ecf20Sopenharmony_ci 4728c2ecf20Sopenharmony_ci- Evitate il *top-posting* (cioè la pratica di mettere la vostra risposta sopra 4738c2ecf20Sopenharmony_ci alla frase alla quale state rispondendo). Ciò renderebbe la vostra risposta 4748c2ecf20Sopenharmony_ci difficile da leggere e genera scarsa impressione. 4758c2ecf20Sopenharmony_ci 4768c2ecf20Sopenharmony_ci- Chiedete nella lista di discussione corretta. Linux-kernel può essere un 4778c2ecf20Sopenharmony_ci punto di incontro generale, ma non è il miglior posto dove trovare 4788c2ecf20Sopenharmony_ci sviluppatori da tutti i sottosistemi. 4798c2ecf20Sopenharmony_ci 4808c2ecf20Sopenharmony_ciInfine, la ricerca della corretta lista di discussione è uno degli errori più 4818c2ecf20Sopenharmony_cicomuni per gli sviluppatori principianti. Qualcuno che pone una domanda 4828c2ecf20Sopenharmony_cirelativa alla rete su linux-kernel riceverà quasi certamente il suggerimento 4838c2ecf20Sopenharmony_cidi chiedere sulla lista netdev, che è la lista frequentata dagli sviluppatori 4848c2ecf20Sopenharmony_cidi rete. Ci sono poi altre liste per i sottosistemi SCSI, video4linux, IDE, 4858c2ecf20Sopenharmony_cifilesystem, etc. Il miglior posto dove cercare una lista di discussione è il 4868c2ecf20Sopenharmony_cifile MAINTAINERS che si trova nei sorgenti del kernel. 4878c2ecf20Sopenharmony_ci 4888c2ecf20Sopenharmony_ciIniziare con lo sviluppo del Kernel 4898c2ecf20Sopenharmony_ci----------------------------------- 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_ciSono comuni le domande sul come iniziare con lo sviluppo del kernel - sia da 4928c2ecf20Sopenharmony_cisingole persone che da aziende. Altrettanto comuni sono i passi falsi che 4938c2ecf20Sopenharmony_cirendono l'inizio di tale relazione più difficile di quello che dovrebbe essere. 4948c2ecf20Sopenharmony_ci 4958c2ecf20Sopenharmony_ciLe aziende spesso cercano di assumere sviluppatori noti per creare un gruppo 4968c2ecf20Sopenharmony_cidi sviluppo iniziale. Questo, in effetti, può essere una tecnica efficace. 4978c2ecf20Sopenharmony_ciMa risulta anche essere dispendiosa e non va ad accrescere il bacino di 4988c2ecf20Sopenharmony_cisviluppatori kernel con esperienza. È possibile anche "portare a casa" 4998c2ecf20Sopenharmony_cisviluppatori per accelerare lo sviluppo del kernel, dando comunque 5008c2ecf20Sopenharmony_ciall'investimento un po' di tempo. Prendersi questo tempo può fornire 5018c2ecf20Sopenharmony_cial datore di lavoro un gruppo di sviluppatori che comprendono sia il kernel 5028c2ecf20Sopenharmony_ciche l'azienda stessa, e che possono supportare la formazione di altre persone. 5038c2ecf20Sopenharmony_ciNel medio periodo, questa è spesso uno delle soluzioni più proficue. 5048c2ecf20Sopenharmony_ci 5058c2ecf20Sopenharmony_ciI singoli sviluppatori sono spesso, comprensibilmente, una perdita come punto 5068c2ecf20Sopenharmony_cidi partenza. Iniziare con un grande progetto può rivelarsi intimidatorio; 5078c2ecf20Sopenharmony_cispesso all'inizio si vuole solo verificare il terreno con qualcosa di piccolo. 5088c2ecf20Sopenharmony_ciQuesta è una delle motivazioni per le quali molti sviluppatori saltano alla 5098c2ecf20Sopenharmony_cicreazione di patch che vanno a sistemare errori di battitura o 5108c2ecf20Sopenharmony_ciproblematiche minori legate allo stile del codice. Sfortunatamente, tali 5118c2ecf20Sopenharmony_cipatch creano un certo livello di rumore che distrae l'intera comunità di 5128c2ecf20Sopenharmony_cisviluppo, quindi, sempre di più, esse vengono degradate. I nuovi sviluppatori 5138c2ecf20Sopenharmony_ciche desiderano presentarsi alla comunità non riceveranno l'accoglienza 5148c2ecf20Sopenharmony_ciche vorrebbero con questi mezzi. 5158c2ecf20Sopenharmony_ci 5168c2ecf20Sopenharmony_ciAndrew Morton da questo consiglio agli aspiranti sviluppatori kernel 5178c2ecf20Sopenharmony_ci 5188c2ecf20Sopenharmony_ci:: 5198c2ecf20Sopenharmony_ci 5208c2ecf20Sopenharmony_ci Il primo progetto per un neofita del kernel dovrebbe essere 5218c2ecf20Sopenharmony_ci sicuramente quello di "assicurarsi che il kernel funzioni alla 5228c2ecf20Sopenharmony_ci perfezione sempre e su tutte le macchine sulle quali potete stendere 5238c2ecf20Sopenharmony_ci la vostra mano". Solitamente il modo per fare ciò è quello di 5248c2ecf20Sopenharmony_ci collaborare con gli altri nel sistemare le cose (questo richiede 5258c2ecf20Sopenharmony_ci persistenza!) ma va bene - è parte dello sviluppo kernel. 5268c2ecf20Sopenharmony_ci 5278c2ecf20Sopenharmony_ci(http://lwn.net/Articles/283982/). 5288c2ecf20Sopenharmony_ci 5298c2ecf20Sopenharmony_ciIn assenza di problemi ovvi da risolvere, si consiglia agli sviluppatori 5308c2ecf20Sopenharmony_cidi consultare, in generale, la lista di regressioni e di bachi aperti. 5318c2ecf20Sopenharmony_ciNon c'è mai carenza di problematiche bisognose di essere sistemate; 5328c2ecf20Sopenharmony_ciaccollandosi tali questioni gli sviluppatori accumuleranno esperienza con 5338c2ecf20Sopenharmony_cila procedura, ed allo stesso tempo, aumenteranno la loro rispettabilità 5348c2ecf20Sopenharmony_ciall'interno della comunità di sviluppo. 535