1*4882a593Smuzhiyun.. include:: ../disclaimer-ita.rst 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun:Original: :ref:`Documentation/process/howto.rst <process_howto>` 4*4882a593Smuzhiyun:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun.. _it_process_howto: 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunCome partecipare allo sviluppo del kernel Linux 9*4882a593Smuzhiyun=============================================== 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunQuesto è il documento fulcro di quanto trattato sull'argomento. 12*4882a593SmuzhiyunEsso contiene le istruzioni su come diventare uno sviluppatore 13*4882a593Smuzhiyundel kernel Linux e spiega come lavorare con la comunità di 14*4882a593Smuzhiyunsviluppo kernel Linux. Il documento non tratterà alcun aspetto 15*4882a593Smuzhiyuntecnico relativo alla programmazione del kernel, ma vi aiuterà 16*4882a593Smuzhiyunindirizzandovi sulla corretta strada. 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunSe qualsiasi cosa presente in questo documento diventasse obsoleta, 19*4882a593Smuzhiyunvi preghiamo di inviare le correzioni agli amministratori di questo 20*4882a593Smuzhiyunfile, indicati in fondo al presente documento. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunIntroduzione 23*4882a593Smuzhiyun------------ 24*4882a593SmuzhiyunDunque, volete imparare come diventare sviluppatori del kernel Linux? 25*4882a593SmuzhiyunO vi è stato detto dal vostro capo, "Vai, scrivi un driver Linux per 26*4882a593Smuzhiyunquesto dispositivo". Bene, l'obbiettivo di questo documento è quello 27*4882a593Smuzhiyundi insegnarvi tutto ciò che dovete sapere per raggiungere il vostro 28*4882a593Smuzhiyunscopo descrivendo il procedimento da seguire e consigliandovi 29*4882a593Smuzhiyunsu come lavorare con la comunità. Il documento cercherà, inoltre, 30*4882a593Smuzhiyundi spiegare alcune delle ragioni per le quali la comunità lavora in un 31*4882a593Smuzhiyunmodo suo particolare. 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunIl kernel è scritto prevalentemente nel linguaggio C con alcune parti 34*4882a593Smuzhiyunspecifiche dell'architettura scritte in linguaggio assembly. 35*4882a593SmuzhiyunPer lo sviluppo kernel è richiesta una buona conoscenza del linguaggio C. 36*4882a593SmuzhiyunL'assembly (di qualsiasi architettura) non è richiesto, a meno che non 37*4882a593Smuzhiyunpensiate di fare dello sviluppo di basso livello per un'architettura. 38*4882a593SmuzhiyunSebbene essi non siano un buon sostituto ad un solido studio del 39*4882a593Smuzhiyunlinguaggio C o ad anni di esperienza, i seguenti libri sono, se non 40*4882a593Smuzhiyunaltro, utili riferimenti: 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun- "The C Programming Language" di Kernighan e Ritchie [Prentice Hall] 43*4882a593Smuzhiyun- "Practical C Programming" di Steve Oualline [O'Reilly] 44*4882a593Smuzhiyun- "C: A Reference Manual" di Harbison and Steele [Prentice Hall] 45*4882a593Smuzhiyun 46*4882a593SmuzhiyunIl kernel è stato scritto usando GNU C e la toolchain GNU. 47*4882a593SmuzhiyunSebbene si attenga allo standard ISO C89, esso utilizza una serie di 48*4882a593Smuzhiyunestensioni che non sono previste in questo standard. Il kernel è un 49*4882a593Smuzhiyunambiente C indipendente, che non ha alcuna dipendenza dalle librerie 50*4882a593SmuzhiyunC standard, così alcune parti del C standard non sono supportate. 51*4882a593SmuzhiyunLe divisioni ``long long`` e numeri in virgola mobile non sono permessi. 52*4882a593SmuzhiyunQualche volta è difficile comprendere gli assunti che il kernel ha 53*4882a593Smuzhiyunriguardo gli strumenti e le estensioni in uso, e sfortunatamente non 54*4882a593Smuzhiyunesiste alcuna indicazione definitiva. Per maggiori informazioni, controllate, 55*4882a593Smuzhiyunla pagina `info gcc`. 56*4882a593Smuzhiyun 57*4882a593SmuzhiyunTenete a mente che state cercando di apprendere come lavorare con la comunità 58*4882a593Smuzhiyundi sviluppo già esistente. Questo è un gruppo eterogeneo di persone, con alti 59*4882a593Smuzhiyunstandard di codifica, di stile e di procedura. Questi standard sono stati 60*4882a593Smuzhiyuncreati nel corso del tempo basandosi su quanto hanno riscontrato funzionare al 61*4882a593Smuzhiyunmeglio per un squadra così grande e geograficamente sparsa. Cercate di 62*4882a593Smuzhiyunimparare, in anticipo, il più possibile circa questi standard, poichè ben 63*4882a593Smuzhiyunspiegati; non aspettatevi che gli altri si adattino al vostro modo di fare 64*4882a593Smuzhiyuno a quello della vostra azienda. 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunNote legali 67*4882a593Smuzhiyun------------ 68*4882a593SmuzhiyunIl codice sorgente del kernel Linux è rilasciato sotto GPL. Siete pregati 69*4882a593Smuzhiyundi visionare il file, COPYING, presente nella cartella principale dei 70*4882a593Smuzhiyunsorgente, per eventuali dettagli sulla licenza. Se avete ulteriori domande 71*4882a593Smuzhiyunsulla licenza, contattate un avvocato, non chiedete sulle liste di discussione 72*4882a593Smuzhiyundel kernel Linux. Le persone presenti in queste liste non sono avvocati, 73*4882a593Smuzhiyune non dovreste basarvi sulle loro dichiarazioni in materia giuridica. 74*4882a593Smuzhiyun 75*4882a593SmuzhiyunPer domande più frequenti e risposte sulla licenza GPL, guardare: 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun https://www.gnu.org/licenses/gpl-faq.html 78*4882a593Smuzhiyun 79*4882a593SmuzhiyunDocumentazione 80*4882a593Smuzhiyun-------------- 81*4882a593SmuzhiyunI sorgenti del kernel Linux hanno una vasta base di documenti che vi 82*4882a593Smuzhiyuninsegneranno come interagire con la comunità del kernel. Quando nuove 83*4882a593Smuzhiyunfunzionalità vengono aggiunte al kernel, si raccomanda di aggiungere anche i 84*4882a593Smuzhiyunrelativi file di documentatione che spiegano come usarele. 85*4882a593SmuzhiyunQuando un cambiamento del kernel genera anche un cambiamento nell'interfaccia 86*4882a593Smuzhiyuncon lo spazio utente, è raccomandabile che inviate una notifica o una 87*4882a593Smuzhiyuncorrezione alle pagine *man* spiegando tale modifica agli amministratori di 88*4882a593Smuzhiyunqueste pagine all'indirizzo mtk.manpages@gmail.com, aggiungendo 89*4882a593Smuzhiyunin CC la lista linux-api@vger.kernel.org. 90*4882a593Smuzhiyun 91*4882a593SmuzhiyunDi seguito una lista di file che sono presenti nei sorgente del kernel e che 92*4882a593Smuzhiyunè richiesto che voi leggiate: 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/admin-guide/README.rst <it_readme>` 95*4882a593Smuzhiyun Questo file da una piccola anteprima del kernel Linux e descrive il 96*4882a593Smuzhiyun minimo necessario per configurare e generare il kernel. I novizi 97*4882a593Smuzhiyun del kernel dovrebbero iniziare da qui. 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/changes.rst <it_changes>` 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun Questo file fornisce una lista dei pacchetti software necessari 102*4882a593Smuzhiyun a compilare e far funzionare il kernel con successo. 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>` 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun Questo file descrive lo stile della codifica per il kernel Linux, 107*4882a593Smuzhiyun e parte delle motivazioni che ne sono alla base. Tutto il nuovo codice deve 108*4882a593Smuzhiyun seguire le linee guida in questo documento. Molti amministratori 109*4882a593Smuzhiyun accetteranno patch solo se queste osserveranno tali regole, e molte 110*4882a593Smuzhiyun persone revisioneranno il codice solo se scritto nello stile appropriato. 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` e 113*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/submitting-drivers.rst <it_submittingdrivers>` 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun Questo file descrive dettagliatamente come creare ed inviare una patch 116*4882a593Smuzhiyun con successo, includendo (ma non solo questo): 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun - Contenuto delle email 119*4882a593Smuzhiyun - Formato delle email 120*4882a593Smuzhiyun - I destinatari delle email 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun Seguire tali regole non garantirà il successo (tutte le patch sono soggette 123*4882a593Smuzhiyun a controlli realitivi a contenuto e stile), ma non seguirle lo precluderà 124*4882a593Smuzhiyun sempre. 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun Altre ottime descrizioni di come creare buone patch sono: 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun "The Perfect Patch" 129*4882a593Smuzhiyun https://www.ozlabs.org/~akpm/stuff/tpp.txt 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun "Linux kernel patch submission format" 132*4882a593Smuzhiyun https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/stable-api-nonsense.rst <it_stable_api_nonsense>` 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun Questo file descrive la motivazioni sottostanti la conscia decisione di 137*4882a593Smuzhiyun non avere un API stabile all'interno del kernel, incluso cose come: 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun - Sottosistemi shim-layers (per compatibilità?) 140*4882a593Smuzhiyun - Portabilità fra Sistemi Operativi dei driver. 141*4882a593Smuzhiyun - Attenuare i rapidi cambiamenti all'interno dei sorgenti del kernel 142*4882a593Smuzhiyun (o prevenirli) 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun Questo documento è vitale per la comprensione della filosifia alla base 145*4882a593Smuzhiyun dello sviluppo di Linux ed è molto importante per le persone che arrivano 146*4882a593Smuzhiyun da esperienze con altri Sistemi Operativi. 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/admin-guide/security-bugs.rst <it_securitybugs>` 149*4882a593Smuzhiyun Se ritenete di aver trovato un problema di sicurezza nel kernel Linux, 150*4882a593Smuzhiyun seguite i passaggi scritti in questo documento per notificarlo agli 151*4882a593Smuzhiyun sviluppatori del kernel, ed aiutare la risoluzione del problema. 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/management-style.rst <it_managementstyle>` 154*4882a593Smuzhiyun Questo documento descrive come i manutentori del kernel Linux operano 155*4882a593Smuzhiyun e la filosofia comune alla base del loro metodo. Questa è un'importante 156*4882a593Smuzhiyun lettura per tutti coloro che sono nuovi allo sviluppo del kernel (o per 157*4882a593Smuzhiyun chi è semplicemente curioso), poiché risolve molti dei più comuni 158*4882a593Smuzhiyun fraintendimenti e confusioni dovuti al particolare comportamento dei 159*4882a593Smuzhiyun manutentori del kernel. 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/stable-kernel-rules.rst <it_stable_kernel_rules>` 162*4882a593Smuzhiyun Questo file descrive le regole sulle quali vengono basati i rilasci del 163*4882a593Smuzhiyun kernel, e spiega cosa fare se si vuole che una modifica venga inserita 164*4882a593Smuzhiyun in uno di questi rilasci. 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/kernel-docs.rst <it_kernel_docs>` 167*4882a593Smuzhiyun Una lista di documenti pertinenti allo sviluppo del kernel. 168*4882a593Smuzhiyun Per favore consultate questa lista se non trovate ciò che cercate nella 169*4882a593Smuzhiyun documentazione interna del kernel. 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun :ref:`Documentation/translations/it_IT/process/applying-patches.rst <it_applying_patches>` 172*4882a593Smuzhiyun Una buona introduzione che descrivere esattamente cos'è una patch e come 173*4882a593Smuzhiyun applicarla ai differenti rami di sviluppo del kernel. 174*4882a593Smuzhiyun 175*4882a593SmuzhiyunIl kernel inoltre ha un vasto numero di documenti che possono essere 176*4882a593Smuzhiyunautomaticamente generati dal codice sorgente stesso o da file 177*4882a593SmuzhiyunReStructuredText (ReST), come questo. Esso include una completa 178*4882a593Smuzhiyundescrizione dell'API interna del kernel, e le regole su come gestire la 179*4882a593Smuzhiyunsincronizzazione (locking) correttamente 180*4882a593Smuzhiyun 181*4882a593SmuzhiyunTutte queste tipologie di documenti possono essere generati in PDF o in 182*4882a593SmuzhiyunHTML utilizzando:: 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun make pdfdocs 185*4882a593Smuzhiyun make htmldocs 186*4882a593Smuzhiyun 187*4882a593Smuzhiyunrispettivamente dalla cartella principale dei sorgenti del kernel. 188*4882a593Smuzhiyun 189*4882a593SmuzhiyunI documenti che impiegano ReST saranno generati nella cartella 190*4882a593SmuzhiyunDocumentation/output. 191*4882a593SmuzhiyunQuesti posso essere generati anche in formato LaTex e ePub con:: 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun make latexdocs 194*4882a593Smuzhiyun make epubdocs 195*4882a593Smuzhiyun 196*4882a593SmuzhiyunDiventare uno sviluppatore del kernel 197*4882a593Smuzhiyun------------------------------------- 198*4882a593SmuzhiyunSe non sapete nulla sullo sviluppo del kernel Linux, dovreste dare uno 199*4882a593Smuzhiyunsguardo al progetto *Linux KernelNewbies*: 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun https://kernelnewbies.org 202*4882a593Smuzhiyun 203*4882a593SmuzhiyunEsso prevede un'utile lista di discussione dove potete porre più o meno ogni 204*4882a593Smuzhiyuntipo di quesito relativo ai concetti fondamentali sullo sviluppo del kernel 205*4882a593Smuzhiyun(assicuratevi di cercare negli archivi, prima di chiedere qualcosa alla 206*4882a593Smuzhiyunquale è già stata fornita risposta in passato). Esistono inoltre, un canale IRC 207*4882a593Smuzhiyunche potete usare per formulare domande in tempo reale, e molti documenti utili 208*4882a593Smuzhiyunche vi faciliteranno nell'apprendimento dello sviluppo del kernel Linux. 209*4882a593Smuzhiyun 210*4882a593SmuzhiyunIl sito internet contiene informazioni di base circa l'organizzazione del 211*4882a593Smuzhiyuncodice, sottosistemi e progetti attuali (sia interni che esterni a Linux). 212*4882a593SmuzhiyunEsso descrive, inoltre, informazioni logistiche di base, riguardanti ad esempio 213*4882a593Smuzhiyunla compilazione del kernel e l'applicazione di una modifica. 214*4882a593Smuzhiyun 215*4882a593SmuzhiyunSe non sapete dove cominciare, ma volete cercare delle attività dalle quali 216*4882a593Smuzhiyunpartire per partecipare alla comunità di sviluppo, andate al progetto Linux 217*4882a593SmuzhiyunKernel Janitor's. 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun https://kernelnewbies.org/KernelJanitors 220*4882a593Smuzhiyun 221*4882a593SmuzhiyunÈ un buon posto da cui iniziare. Esso presenta una lista di problematiche 222*4882a593Smuzhiyunrelativamente semplici da sistemare e pulire all'interno della sorgente del 223*4882a593Smuzhiyunkernel Linux. Lavorando con gli sviluppatori incaricati di questo progetto, 224*4882a593Smuzhiyunimparerete le basi per l'inserimento delle vostre modifiche all'interno dei 225*4882a593Smuzhiyunsorgenti del kernel Linux, e possibilmente, sarete indirizzati al lavoro 226*4882a593Smuzhiyunsuccessivo da svolgere, se non ne avrete ancora idea. 227*4882a593Smuzhiyun 228*4882a593SmuzhiyunPrima di apportare una qualsiasi modifica al codice del kernel Linux, 229*4882a593Smuzhiyunè imperativo comprendere come tale codice funziona. A questo scopo, non c'è 230*4882a593Smuzhiyunnulla di meglio che leggerlo direttamente (la maggior parte dei bit più 231*4882a593Smuzhiyuncomplessi sono ben commentati), eventualmente anche con l'aiuto di strumenti 232*4882a593Smuzhiyunspecializzati. Uno degli strumenti che è particolarmente raccomandato è 233*4882a593Smuzhiyunil progetto Linux Cross-Reference, che è in grado di presentare codice 234*4882a593Smuzhiyunsorgente in un formato autoreferenziale ed indicizzato. Un eccellente ed 235*4882a593Smuzhiyunaggiornata fonte di consultazione del codice del kernel la potete trovare qui: 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun https://elixir.bootlin.com/ 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun 240*4882a593SmuzhiyunIl processo di sviluppo 241*4882a593Smuzhiyun----------------------- 242*4882a593SmuzhiyunIl processo di sviluppo del kernel Linux si compone di pochi "rami" principali 243*4882a593Smuzhiyune di molti altri rami per specifici sottosistemi. Questi rami sono: 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun - I sorgenti kernel 4.x 246*4882a593Smuzhiyun - I sorgenti stabili del kernel 4.x.y -stable 247*4882a593Smuzhiyun - Sorgenti dei sottosistemi del kernel e le loro modifiche 248*4882a593Smuzhiyun - Il kernel 4.x -next per test d'integrazione 249*4882a593Smuzhiyun 250*4882a593SmuzhiyunI sorgenti kernel 4.x 251*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~ 252*4882a593Smuzhiyun 253*4882a593SmuzhiyunI kernel 4.x sono amministrati da Linus Torvald, e possono essere trovati 254*4882a593Smuzhiyunsu https://kernel.org nella cartella pub/linux/kernel/v4.x/. Il processo 255*4882a593Smuzhiyundi sviluppo è il seguente: 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun - Non appena un nuovo kernel viene rilasciato si apre una finestra di due 258*4882a593Smuzhiyun settimane. Durante questo periodo i manutentori possono proporre a Linus 259*4882a593Smuzhiyun dei grossi cambiamenti; solitamente i cambiamenti che sono già stati 260*4882a593Smuzhiyun inseriti nel ramo -next del kernel per alcune settimane. Il modo migliore 261*4882a593Smuzhiyun per sottoporre dei cambiamenti è attraverso git (lo strumento usato per 262*4882a593Smuzhiyun gestire i sorgenti del kernel, più informazioni sul sito 263*4882a593Smuzhiyun https://git-scm.com/) ma anche delle patch vanno bene. 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun - Al termine delle due settimane un kernel -rc1 viene rilasciato e 266*4882a593Smuzhiyun l'obbiettivo ora è quello di renderlo il più solido possibile. A questo 267*4882a593Smuzhiyun punto la maggior parte delle patch dovrebbero correggere un'eventuale 268*4882a593Smuzhiyun regressione. I bachi che sono sempre esistiti non sono considerabili come 269*4882a593Smuzhiyun regressioni, quindi inviate questo tipo di cambiamenti solo se sono 270*4882a593Smuzhiyun importanti. Notate che un intero driver (o filesystem) potrebbe essere 271*4882a593Smuzhiyun accettato dopo la -rc1 poiché non esistono rischi di una possibile 272*4882a593Smuzhiyun regressione con tale cambiamento, fintanto che quest'ultimo è 273*4882a593Smuzhiyun auto-contenuto e non influisce su aree esterne al codice che è stato 274*4882a593Smuzhiyun aggiunto. git può essere utilizzato per inviare le patch a Linus dopo che 275*4882a593Smuzhiyun la -rc1 è stata rilasciata, ma è anche necessario inviare le patch ad 276*4882a593Smuzhiyun una lista di discussione pubblica per un'ulteriore revisione. 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun - Una nuova -rc viene rilasciata ogni volta che Linus reputa che gli attuali 279*4882a593Smuzhiyun sorgenti siano in uno stato di salute ragionevolmente adeguato ai test. 280*4882a593Smuzhiyun L'obiettivo è quello di rilasciare una nuova -rc ogni settimana. 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun - Il processo continua fino a che il kernel è considerato "pronto"; tale 283*4882a593Smuzhiyun processo dovrebbe durare circa in 6 settimane. 284*4882a593Smuzhiyun 285*4882a593SmuzhiyunÈ utile menzionare quanto scritto da Andrew Morton sulla lista di discussione 286*4882a593Smuzhiyunkernel-linux in merito ai rilasci del kernel: 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun *"Nessuno sa quando un kernel verrà rilasciato, poichè questo è 289*4882a593Smuzhiyun legato allo stato dei bachi e non ad una cronologia preventiva."* 290*4882a593Smuzhiyun 291*4882a593SmuzhiyunI sorgenti stabili del kernel 4.x.y -stable 292*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 293*4882a593Smuzhiyun 294*4882a593SmuzhiyunI kernel con versioni in 3-parti sono "kernel stabili". Essi contengono 295*4882a593Smuzhiyuncorrezioni critiche relativamente piccole nell'ambito della sicurezza 296*4882a593Smuzhiyunoppure significative regressioni scoperte in un dato 4.x kernel. 297*4882a593Smuzhiyun 298*4882a593SmuzhiyunQuesto è il ramo raccomandato per gli utenti che vogliono un kernel recente 299*4882a593Smuzhiyune stabile e non sono interessati a dare il proprio contributo alla verifica 300*4882a593Smuzhiyundelle versioni di sviluppo o sperimentali. 301*4882a593Smuzhiyun 302*4882a593SmuzhiyunSe non è disponibile alcun kernel 4.x.y., quello più aggiornato e stabile 303*4882a593Smuzhiyunsarà il kernel 4.x con la numerazione più alta. 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun4.x.y sono amministrati dal gruppo "stable" <stable@vger.kernel.org>, e sono 306*4882a593Smuzhiyunrilasciati a seconda delle esigenze. Il normale periodo di rilascio è 307*4882a593Smuzhiyunapprossimativamente di due settimane, ma può essere più lungo se non si 308*4882a593Smuzhiyunverificano problematiche urgenti. Un problema relativo alla sicurezza, invece, 309*4882a593Smuzhiyunpuò determinare un rilascio immediato. 310*4882a593Smuzhiyun 311*4882a593SmuzhiyunIl file Documentation/process/stable-kernel-rules.rst (nei sorgenti) documenta 312*4882a593Smuzhiyunquali tipologie di modifiche sono accettate per i sorgenti -stable, e come 313*4882a593Smuzhiyunavviene il processo di rilascio. 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun 316*4882a593SmuzhiyunSorgenti dei sottosistemi del kernel e le loro patch 317*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 318*4882a593Smuzhiyun 319*4882a593SmuzhiyunI manutentori dei diversi sottosistemi del kernel --- ed anche molti 320*4882a593Smuzhiyunsviluppatori di sottosistemi --- mostrano il loro attuale stato di sviluppo 321*4882a593Smuzhiyunnei loro repositori. In questo modo, altri possono vedere cosa succede nelle 322*4882a593Smuzhiyundiverse parti del kernel. In aree dove lo sviluppo è rapido, potrebbe essere 323*4882a593Smuzhiyunchiesto ad uno sviluppatore di basare le proprie modifiche su questi repositori 324*4882a593Smuzhiyunin modo da evitare i conflitti fra le sottomissioni ed altri lavori in corso 325*4882a593Smuzhiyun 326*4882a593SmuzhiyunLa maggior parte di questi repositori sono git, ma esistono anche altri SCM 327*4882a593Smuzhiyunin uso, o file di patch pubblicate come una serie quilt. 328*4882a593SmuzhiyunGli indirizzi dei repositori di sottosistema sono indicati nel file 329*4882a593SmuzhiyunMAINTAINERS. Molti di questi posso essere trovati su https://git.kernel.org/. 330*4882a593Smuzhiyun 331*4882a593SmuzhiyunPrima che una modifica venga inclusa in questi sottosistemi, sarà soggetta ad 332*4882a593Smuzhiyununa revisione che inizialmente avviene tramite liste di discussione (vedere la 333*4882a593Smuzhiyunsezione dedicata qui sotto). Per molti sottosistemi del kernel, tale processo 334*4882a593Smuzhiyundi revisione è monitorato con lo strumento patchwork. 335*4882a593SmuzhiyunPatchwork offre un'interfaccia web che mostra le patch pubblicate, inclusi i 336*4882a593Smuzhiyuncommenti o le revisioni fatte, e gli amministratori possono indicare le patch 337*4882a593Smuzhiyuncome "in revisione", "accettate", o "rifiutate". Diversi siti Patchwork sono 338*4882a593Smuzhiyunelencati al sito https://patchwork.kernel.org/. 339*4882a593Smuzhiyun 340*4882a593SmuzhiyunIl kernel 4.x -next per test d'integrazione 341*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 342*4882a593Smuzhiyun 343*4882a593SmuzhiyunPrima che gli aggiornamenti dei sottosistemi siano accorpati nel ramo 344*4882a593Smuzhiyunprincipale 4.x, sarà necessario un test d'integrazione. 345*4882a593SmuzhiyunA tale scopo, esiste un repositorio speciale di test nel quale virtualmente 346*4882a593Smuzhiyuntutti i rami dei sottosistemi vengono inclusi su base quotidiana: 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git 349*4882a593Smuzhiyun 350*4882a593SmuzhiyunIn questo modo, i kernel -next offrono uno sguardo riassuntivo su quello che 351*4882a593Smuzhiyunci si aspetterà essere nel kernel principale nel successivo periodo 352*4882a593Smuzhiyund'incorporazione. 353*4882a593SmuzhiyunColoro che vorranno fare dei test d'esecuzione del kernel -next sono più che 354*4882a593Smuzhiyunbenvenuti. 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun 357*4882a593SmuzhiyunRiportare Bug 358*4882a593Smuzhiyun------------- 359*4882a593Smuzhiyun 360*4882a593Smuzhiyunhttps://bugzilla.kernel.org è dove gli sviluppatori del kernel Linux tracciano 361*4882a593Smuzhiyuni bachi del kernel. Gli utenti sono incoraggiati nel riportare tutti i bachi 362*4882a593Smuzhiyunche trovano utilizzando questo strumento. 363*4882a593SmuzhiyunPer maggiori dettagli su come usare il bugzilla del kernel, guardare: 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun https://bugzilla.kernel.org/page.cgi?id=faq.html 366*4882a593Smuzhiyun 367*4882a593SmuzhiyunIl file admin-guide/reporting-bugs.rst nella cartella principale del kernel 368*4882a593Smuzhiyunfornisce un buon modello sul come segnalare un baco nel kernel, e spiega quali 369*4882a593Smuzhiyuninformazioni sono necessarie agli sviluppatori per poter aiutare il 370*4882a593Smuzhiyunrintracciamento del problema. 371*4882a593Smuzhiyun 372*4882a593SmuzhiyunGestire i rapporti sui bug 373*4882a593Smuzhiyun-------------------------- 374*4882a593Smuzhiyun 375*4882a593SmuzhiyunUno dei modi migliori per mettere in pratica le vostre capacità di hacking è 376*4882a593Smuzhiyunquello di riparare bachi riportati da altre persone. Non solo aiuterete a far 377*4882a593Smuzhiyundiventare il kernel più stabile, ma imparerete a riparare problemi veri dal 378*4882a593Smuzhiyunmondo ed accrescerete le vostre competenze, e gli altri sviluppatori saranno 379*4882a593Smuzhiyunal corrente della vostra presenza. Riparare bachi è una delle migliori vie per 380*4882a593Smuzhiyunacquisire meriti tra gli altri sviluppatori, perchè non a molte persone piace 381*4882a593Smuzhiyunperdere tempo a sistemare i bachi di altri. 382*4882a593Smuzhiyun 383*4882a593SmuzhiyunPer lavorare sui rapporti di bachi già riportati, andate su 384*4882a593Smuzhiyunhttps://bugzilla.kernel.org. 385*4882a593Smuzhiyun 386*4882a593SmuzhiyunListe di discussione 387*4882a593Smuzhiyun-------------------- 388*4882a593Smuzhiyun 389*4882a593SmuzhiyunCome descritto in molti dei documenti qui sopra, la maggior parte degli 390*4882a593Smuzhiyunsviluppatori del kernel partecipano alla lista di discussione Linux Kernel. 391*4882a593SmuzhiyunI dettagli su come iscriversi e disiscriversi dalla lista possono essere 392*4882a593Smuzhiyuntrovati al sito: 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun http://vger.kernel.org/vger-lists.html#linux-kernel 395*4882a593Smuzhiyun 396*4882a593SmuzhiyunCi sono diversi archivi della lista di discussione. Usate un qualsiasi motore 397*4882a593Smuzhiyundi ricerca per trovarli. Per esempio: 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun http://dir.gmane.org/gmane.linux.kernel 400*4882a593Smuzhiyun 401*4882a593SmuzhiyunÉ caldamente consigliata una ricerca in questi archivi sul tema che volete 402*4882a593Smuzhiyunsollevare, prima di pubblicarlo sulla lista. Molte cose sono già state 403*4882a593Smuzhiyundiscusse in dettaglio e registrate negli archivi della lista di discussione. 404*4882a593Smuzhiyun 405*4882a593SmuzhiyunMolti dei sottosistemi del kernel hanno anche una loro lista di discussione 406*4882a593Smuzhiyundedicata. Guardate nel file MAINTAINERS per avere una lista delle liste di 407*4882a593Smuzhiyundiscussione e il loro uso. 408*4882a593Smuzhiyun 409*4882a593SmuzhiyunMolte di queste liste sono gestite su kernel.org. Per informazioni consultate 410*4882a593Smuzhiyunla seguente pagina: 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun http://vger.kernel.org/vger-lists.html 413*4882a593Smuzhiyun 414*4882a593SmuzhiyunPer favore ricordatevi della buona educazione quando utilizzate queste liste. 415*4882a593SmuzhiyunSebbene sia un pò dozzinale, il seguente URL contiene alcune semplici linee 416*4882a593Smuzhiyunguida per interagire con la lista (o con qualsiasi altra lista): 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun http://www.albion.com/netiquette/ 419*4882a593Smuzhiyun 420*4882a593SmuzhiyunSe diverse persone rispondo alla vostra mail, la lista dei riceventi (copia 421*4882a593Smuzhiyunconoscenza) potrebbe diventare abbastanza lunga. Non cancellate nessuno dalla 422*4882a593Smuzhiyunlista di CC: senza un buon motivo, e non rispondete solo all'indirizzo 423*4882a593Smuzhiyundella lista di discussione. Fateci l'abitudine perché capita spesso di 424*4882a593Smuzhiyunricevere la stessa email due volte: una dal mittente ed una dalla lista; e non 425*4882a593Smuzhiyuncercate di modificarla aggiungendo intestazioni stravaganti, agli altri non 426*4882a593Smuzhiyunpiacerà. 427*4882a593Smuzhiyun 428*4882a593SmuzhiyunRicordate di rimanere sempre in argomento e di mantenere le attribuzioni 429*4882a593Smuzhiyundelle vostre risposte invariate; mantenete il "John Kernelhacker wrote ...:" 430*4882a593Smuzhiyunin cima alla vostra replica e aggiungete le vostre risposte fra i singoli 431*4882a593Smuzhiyunblocchi citati, non scrivete all'inizio dell'email. 432*4882a593Smuzhiyun 433*4882a593SmuzhiyunSe aggiungete patch alla vostra mail, assicuratevi che siano del tutto 434*4882a593Smuzhiyunleggibili come indicato in Documentation/process/submitting-patches.rst. 435*4882a593SmuzhiyunGli sviluppatori kernel non vogliono avere a che fare con allegati o patch 436*4882a593Smuzhiyuncompresse; vogliono invece poter commentare le righe dei vostri cambiamenti, 437*4882a593Smuzhiyunil che può funzionare solo in questo modo. 438*4882a593SmuzhiyunAssicuratevi di utilizzare un gestore di mail che non alterì gli spazi ed i 439*4882a593Smuzhiyuncaratteri. Un ottimo primo test è quello di inviare a voi stessi una mail e 440*4882a593Smuzhiyuncercare di sottoporre la vostra stessa patch. Se non funziona, sistemate il 441*4882a593Smuzhiyunvostro programma di posta, o cambiatelo, finché non funziona. 442*4882a593Smuzhiyun 443*4882a593SmuzhiyunEd infine, per favore ricordatevi di mostrare rispetto per gli altri 444*4882a593Smuzhiyunsottoscriventi. 445*4882a593Smuzhiyun 446*4882a593SmuzhiyunLavorare con la comunità 447*4882a593Smuzhiyun------------------------ 448*4882a593Smuzhiyun 449*4882a593SmuzhiyunL'obiettivo di questa comunità è quello di fornire il miglior kernel possibile. 450*4882a593SmuzhiyunQuando inviate una modifica che volete integrare, sarà valutata esclusivamente 451*4882a593Smuzhiyundal punto di vista tecnico. Quindi, cosa dovreste aspettarvi? 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun - critiche 454*4882a593Smuzhiyun - commenti 455*4882a593Smuzhiyun - richieste di cambiamento 456*4882a593Smuzhiyun - richieste di spiegazioni 457*4882a593Smuzhiyun - nulla 458*4882a593Smuzhiyun 459*4882a593SmuzhiyunRicordatevi che questo fa parte dell'integrazione della vostra modifica 460*4882a593Smuzhiyunall'interno del kernel. Dovete essere in grado di accettare le critiche, 461*4882a593Smuzhiyunvalutarle a livello tecnico ed eventualmente rielaborare nuovamente le vostre 462*4882a593Smuzhiyunmodifiche o fornire delle chiare e concise motivazioni per le quali le 463*4882a593Smuzhiyunmodifiche suggerite non dovrebbero essere fatte. 464*4882a593SmuzhiyunSe non riceverete risposte, aspettate qualche giorno e riprovate ancora, 465*4882a593Smuzhiyunqualche volta le cose si perdono nell'enorme mucchio di email. 466*4882a593Smuzhiyun 467*4882a593SmuzhiyunCosa non dovreste fare? 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun - aspettarvi che la vostra modifica venga accettata senza problemi 470*4882a593Smuzhiyun - mettervi sulla difensiva 471*4882a593Smuzhiyun - ignorare i commenti 472*4882a593Smuzhiyun - sottomettere nuovamente la modifica senza fare nessuno dei cambiamenti 473*4882a593Smuzhiyun richiesti 474*4882a593Smuzhiyun 475*4882a593SmuzhiyunIn una comunità che è alla ricerca delle migliori soluzioni tecniche possibili, 476*4882a593Smuzhiyunci saranno sempre opinioni differenti sull'utilità di una modifica. 477*4882a593SmuzhiyunSiate cooperativi e vogliate adattare la vostra idea in modo che sia inserita 478*4882a593Smuzhiyunnel kernel. O almeno vogliate dimostrare che la vostra idea vale. 479*4882a593SmuzhiyunRicordatevi, sbagliare è accettato fintanto che siate disposti a lavorare verso 480*4882a593Smuzhiyununa soluzione che è corretta. 481*4882a593Smuzhiyun 482*4882a593SmuzhiyunÈ normale che le risposte alla vostra prima modifica possa essere 483*4882a593Smuzhiyunsemplicemente una lista con dozzine di cose che dovreste correggere. 484*4882a593SmuzhiyunQuesto **non** implica che la vostra patch non sarà accettata, e questo 485*4882a593Smuzhiyun**non** è contro di voi personalmente. 486*4882a593SmuzhiyunSemplicemente correggete tutte le questioni sollevate contro la vostra modifica 487*4882a593Smuzhiyuned inviatela nuovamente. 488*4882a593Smuzhiyun 489*4882a593SmuzhiyunDifferenze tra la comunità del kernel e le strutture aziendali 490*4882a593Smuzhiyun-------------------------------------------------------------- 491*4882a593Smuzhiyun 492*4882a593SmuzhiyunLa comunità del kernel funziona diversamente rispetto a molti ambienti di 493*4882a593Smuzhiyunsviluppo aziendali. Qui di seguito una lista di cose che potete provare a 494*4882a593Smuzhiyunfare per evitare problemi: 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun Cose da dire riguardanti le modifiche da voi proposte: 497*4882a593Smuzhiyun 498*4882a593Smuzhiyun - "Questo risolve più problematiche." 499*4882a593Smuzhiyun - "Questo elimina 2000 stringhe di codice." 500*4882a593Smuzhiyun - "Qui una modifica che spiega cosa sto cercando di fare." 501*4882a593Smuzhiyun - "L'ho testato su 5 diverse architetture.." 502*4882a593Smuzhiyun - "Qui una serie di piccole modifiche che.." 503*4882a593Smuzhiyun - "Questo aumenta le prestazioni di macchine standard..." 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun Cose che dovreste evitare di dire: 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun - "Lo abbiamo fatto in questo modo in AIX/ptx/Solaris, di conseguenza 508*4882a593Smuzhiyun deve per forza essere giusto..." 509*4882a593Smuzhiyun - "Ho fatto questo per 20 anni, quindi.." 510*4882a593Smuzhiyun - "Questo è richiesto dalla mia Azienda per far soldi" 511*4882a593Smuzhiyun - "Questo è per la linea di prodotti della nostra Azienda" 512*4882a593Smuzhiyun - "Ecco il mio documento di design di 1000 pagine che descrive ciò che ho 513*4882a593Smuzhiyun in mente" 514*4882a593Smuzhiyun - "Ci ho lavorato per 6 mesi..." 515*4882a593Smuzhiyun - "Ecco una patch da 5000 righe che.." 516*4882a593Smuzhiyun - "Ho riscritto il pasticcio attuale, ed ecco qua.." 517*4882a593Smuzhiyun - "Ho una scadenza, e questa modifica ha bisogno di essere approvata ora" 518*4882a593Smuzhiyun 519*4882a593SmuzhiyunUn'altra cosa nella quale la comunità del kernel si differenzia dai più 520*4882a593Smuzhiyunclassici ambienti di ingegneria del software è la natura "senza volto" delle 521*4882a593Smuzhiyuninterazioni umane. Uno dei benefici dell'uso delle email e di irc come forma 522*4882a593Smuzhiyunprimordiale di comunicazione è l'assenza di discriminazione basata su genere e 523*4882a593Smuzhiyunrazza. L'ambienti di lavoro Linux accetta donne e minoranze perchè tutto quello 524*4882a593Smuzhiyunche sei è un indirizzo email. Aiuta anche l'aspetto internazionale nel 525*4882a593Smuzhiyunlivellare il terreno di gioco perchè non è possibile indovinare il genere 526*4882a593Smuzhiyunbasandosi sul nome di una persona. Un uomo può chiamarsi Andrea ed una donna 527*4882a593Smuzhiyunpotrebbe chiamarsi Pat. Gran parte delle donne che hanno lavorato al kernel 528*4882a593SmuzhiyunLinux e che hanno espresso una personale opinione hanno avuto esperienze 529*4882a593Smuzhiyunpositive. 530*4882a593Smuzhiyun 531*4882a593SmuzhiyunLa lingua potrebbe essere un ostacolo per quelle persone che non si trovano 532*4882a593Smuzhiyuna loro agio con l'inglese. Una buona padronanza del linguaggio può essere 533*4882a593Smuzhiyunnecessaria per esporre le proprie idee in maniera appropiata all'interno 534*4882a593Smuzhiyundelle liste di discussione, quindi è consigliabile che rileggiate le vostre 535*4882a593Smuzhiyunemail prima di inviarle in modo da essere certi che abbiano senso in inglese. 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun 538*4882a593SmuzhiyunSpezzare le vostre modifiche 539*4882a593Smuzhiyun---------------------------- 540*4882a593Smuzhiyun 541*4882a593SmuzhiyunLa comunità del kernel Linux non accetta con piacere grossi pezzi di codice 542*4882a593Smuzhiyunbuttati lì tutti in una volta. Le modifiche necessitano di essere 543*4882a593Smuzhiyunadeguatamente presentate, discusse, e suddivise in parti più piccole ed 544*4882a593Smuzhiyunindipendenti. Questo è praticamente l'esatto opposto di quello che le 545*4882a593Smuzhiyunaziende fanno solitamente. La vostra proposta dovrebbe, inoltre, essere 546*4882a593Smuzhiyunpresentata prestissimo nel processo di sviluppo, così che possiate ricevere 547*4882a593Smuzhiyunun riscontro su quello che state facendo. Lasciate che la comunità 548*4882a593Smuzhiyunsenta che state lavorando con loro, e che non li stiate sfruttando come 549*4882a593Smuzhiyundiscarica per le vostre aggiunte. In ogni caso, non inviate 50 email nello 550*4882a593Smuzhiyunstesso momento in una lista di discussione, il più delle volte la vostra serie 551*4882a593Smuzhiyundi modifiche dovrebbe essere più piccola. 552*4882a593Smuzhiyun 553*4882a593SmuzhiyunI motivi per i quali dovreste frammentare le cose sono i seguenti: 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun1) Piccole modifiche aumentano le probabilità che vengano accettate, 556*4882a593Smuzhiyun altrimenti richiederebbe troppo tempo o sforzo nel verificarne 557*4882a593Smuzhiyun la correttezza. Una modifica di 5 righe può essere accettata da un 558*4882a593Smuzhiyun manutentore con a mala pena una seconda occhiata. Invece, una modifica da 559*4882a593Smuzhiyun 500 linee può richiedere ore di rilettura per verificarne la correttezza 560*4882a593Smuzhiyun (il tempo necessario è esponenzialmente proporzionale alla dimensione della 561*4882a593Smuzhiyun modifica, o giù di lì) 562*4882a593Smuzhiyun 563*4882a593Smuzhiyun Piccole modifiche sono inoltre molto facili da debuggare quando qualcosa 564*4882a593Smuzhiyun non va. È molto più facile annullare le modifiche una per una che 565*4882a593Smuzhiyun dissezionare una patch molto grande dopo la sua sottomissione (e rompere 566*4882a593Smuzhiyun qualcosa). 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun2) È importante non solo inviare piccole modifiche, ma anche riscriverle e 569*4882a593Smuzhiyun semplificarle (o più semplicemente ordinarle) prima di sottoporle. 570*4882a593Smuzhiyun 571*4882a593SmuzhiyunQui un'analogia dello sviluppatore kernel Al Viro: 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun *"Pensate ad un insegnante di matematica che corregge il compito 574*4882a593Smuzhiyun di uno studente (di matematica). L'insegnante non vuole vedere le 575*4882a593Smuzhiyun prove e gli errori commessi dallo studente prima che arrivi alla 576*4882a593Smuzhiyun soluzione. Vuole vedere la risposta più pulita ed elegante 577*4882a593Smuzhiyun possibile. Un buono studente lo sa, e non presenterebbe mai le 578*4882a593Smuzhiyun proprie bozze prima prima della soluzione finale"* 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun *"Lo stesso vale per lo sviluppo del kernel. I manutentori ed i 581*4882a593Smuzhiyun revisori non vogliono vedere il procedimento che sta dietro al 582*4882a593Smuzhiyun problema che uno sta risolvendo. Vogliono vedere una soluzione 583*4882a593Smuzhiyun semplice ed elegante."* 584*4882a593Smuzhiyun 585*4882a593SmuzhiyunPuò essere una vera sfida il saper mantenere l'equilibrio fra una presentazione 586*4882a593Smuzhiyunelegante della vostra soluzione, lavorare insieme ad una comunità e dibattere 587*4882a593Smuzhiyunsu un lavoro incompleto. Pertanto è bene entrare presto nel processo di 588*4882a593Smuzhiyunrevisione per migliorare il vostro lavoro, ma anche per riuscire a tenere le 589*4882a593Smuzhiyunvostre modifiche in pezzettini che potrebbero essere già accettate, nonostante 590*4882a593Smuzhiyunla vostra intera attività non lo sia ancora. 591*4882a593Smuzhiyun 592*4882a593SmuzhiyunIn fine, rendetevi conto che non è accettabile inviare delle modifiche 593*4882a593Smuzhiyunincomplete con la promessa che saranno "sistemate dopo". 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun 596*4882a593SmuzhiyunGiustificare le vostre modifiche 597*4882a593Smuzhiyun-------------------------------- 598*4882a593Smuzhiyun 599*4882a593SmuzhiyunInsieme alla frammentazione delle vostre modifiche, è altrettanto importante 600*4882a593Smuzhiyunpermettere alla comunità Linux di capire perché dovrebbero accettarle. 601*4882a593SmuzhiyunNuove funzionalità devono essere motivate come necessarie ed utili. 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun 604*4882a593SmuzhiyunDocumentare le vostre modifiche 605*4882a593Smuzhiyun------------------------------- 606*4882a593Smuzhiyun 607*4882a593SmuzhiyunQuando inviate le vostre modifiche, fate particolare attenzione a quello che 608*4882a593Smuzhiyunscrivete nella vostra email. Questa diventerà il *ChangeLog* per la modifica, 609*4882a593Smuzhiyune sarà visibile a tutti per sempre. Dovrebbe descrivere la modifica nella sua 610*4882a593Smuzhiyuninterezza, contenendo: 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun - perchè la modifica è necessaria 613*4882a593Smuzhiyun - l'approccio d'insieme alla patch 614*4882a593Smuzhiyun - dettagli supplementari 615*4882a593Smuzhiyun - risultati dei test 616*4882a593Smuzhiyun 617*4882a593SmuzhiyunPer maggiori dettagli su come tutto ciò dovrebbe apparire, riferitevi alla 618*4882a593Smuzhiyunsezione ChangeLog del documento: 619*4882a593Smuzhiyun 620*4882a593Smuzhiyun "The Perfect Patch" 621*4882a593Smuzhiyun http://www.ozlabs.org/~akpm/stuff/tpp.txt 622*4882a593Smuzhiyun 623*4882a593SmuzhiyunA volte tutto questo è difficile da realizzare. Il perfezionamento di queste 624*4882a593Smuzhiyunpratiche può richiedere anni (eventualmente). È un processo continuo di 625*4882a593Smuzhiyunmiglioramento che richiede molta pazienza e determinazione. Ma non mollate, 626*4882a593Smuzhiyunsi può fare. Molti lo hanno fatto prima, ed ognuno ha dovuto iniziare dove 627*4882a593Smuzhiyunsiete voi ora. 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun 630*4882a593Smuzhiyun 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun---------- 633*4882a593Smuzhiyun 634*4882a593SmuzhiyunGrazie a Paolo Ciarrocchi che ha permesso che la sezione "Development Process" 635*4882a593Smuzhiyun(https://lwn.net/Articles/94386/) fosse basata sui testi da lui scritti, ed a 636*4882a593SmuzhiyunRandy Dunlap e Gerrit Huizenga per la lista di cose che dovreste e non 637*4882a593Smuzhiyundovreste dire. Grazie anche a Pat Mochel, Hanna Linder, Randy Dunlap, 638*4882a593SmuzhiyunKay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, 639*4882a593SmuzhiyunAndi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, 640*4882a593SmuzhiyunDavid A. Wheeler, Junio Hamano, Michael Kerrisk, e Alex Shepard per le 641*4882a593Smuzhiyunloro revisioni, commenti e contributi. Senza il loro aiuto, questo documento 642*4882a593Smuzhiyunnon sarebbe stato possibile. 643*4882a593Smuzhiyun 644*4882a593SmuzhiyunManutentore: Greg Kroah-Hartman <greg@kroah.com> 645