18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci:Original: :ref:`Documentation/process/howto.rst <process_howto>` 48c2ecf20Sopenharmony_ci:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci.. _it_process_howto: 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciCome partecipare allo sviluppo del kernel Linux 98c2ecf20Sopenharmony_ci=============================================== 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciQuesto è il documento fulcro di quanto trattato sull'argomento. 128c2ecf20Sopenharmony_ciEsso contiene le istruzioni su come diventare uno sviluppatore 138c2ecf20Sopenharmony_cidel kernel Linux e spiega come lavorare con la comunità di 148c2ecf20Sopenharmony_cisviluppo kernel Linux. Il documento non tratterà alcun aspetto 158c2ecf20Sopenharmony_citecnico relativo alla programmazione del kernel, ma vi aiuterà 168c2ecf20Sopenharmony_ciindirizzandovi sulla corretta strada. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ciSe qualsiasi cosa presente in questo documento diventasse obsoleta, 198c2ecf20Sopenharmony_civi preghiamo di inviare le correzioni agli amministratori di questo 208c2ecf20Sopenharmony_cifile, indicati in fondo al presente documento. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciIntroduzione 238c2ecf20Sopenharmony_ci------------ 248c2ecf20Sopenharmony_ciDunque, volete imparare come diventare sviluppatori del kernel Linux? 258c2ecf20Sopenharmony_ciO vi è stato detto dal vostro capo, "Vai, scrivi un driver Linux per 268c2ecf20Sopenharmony_ciquesto dispositivo". Bene, l'obbiettivo di questo documento è quello 278c2ecf20Sopenharmony_cidi insegnarvi tutto ciò che dovete sapere per raggiungere il vostro 288c2ecf20Sopenharmony_ciscopo descrivendo il procedimento da seguire e consigliandovi 298c2ecf20Sopenharmony_cisu come lavorare con la comunità. Il documento cercherà, inoltre, 308c2ecf20Sopenharmony_cidi spiegare alcune delle ragioni per le quali la comunità lavora in un 318c2ecf20Sopenharmony_cimodo suo particolare. 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciIl kernel è scritto prevalentemente nel linguaggio C con alcune parti 348c2ecf20Sopenharmony_cispecifiche dell'architettura scritte in linguaggio assembly. 358c2ecf20Sopenharmony_ciPer lo sviluppo kernel è richiesta una buona conoscenza del linguaggio C. 368c2ecf20Sopenharmony_ciL'assembly (di qualsiasi architettura) non è richiesto, a meno che non 378c2ecf20Sopenharmony_cipensiate di fare dello sviluppo di basso livello per un'architettura. 388c2ecf20Sopenharmony_ciSebbene essi non siano un buon sostituto ad un solido studio del 398c2ecf20Sopenharmony_cilinguaggio C o ad anni di esperienza, i seguenti libri sono, se non 408c2ecf20Sopenharmony_cialtro, utili riferimenti: 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci- "The C Programming Language" di Kernighan e Ritchie [Prentice Hall] 438c2ecf20Sopenharmony_ci- "Practical C Programming" di Steve Oualline [O'Reilly] 448c2ecf20Sopenharmony_ci- "C: A Reference Manual" di Harbison and Steele [Prentice Hall] 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ciIl kernel è stato scritto usando GNU C e la toolchain GNU. 478c2ecf20Sopenharmony_ciSebbene si attenga allo standard ISO C89, esso utilizza una serie di 488c2ecf20Sopenharmony_ciestensioni che non sono previste in questo standard. Il kernel è un 498c2ecf20Sopenharmony_ciambiente C indipendente, che non ha alcuna dipendenza dalle librerie 508c2ecf20Sopenharmony_ciC standard, così alcune parti del C standard non sono supportate. 518c2ecf20Sopenharmony_ciLe divisioni ``long long`` e numeri in virgola mobile non sono permessi. 528c2ecf20Sopenharmony_ciQualche volta è difficile comprendere gli assunti che il kernel ha 538c2ecf20Sopenharmony_ciriguardo gli strumenti e le estensioni in uso, e sfortunatamente non 548c2ecf20Sopenharmony_ciesiste alcuna indicazione definitiva. Per maggiori informazioni, controllate, 558c2ecf20Sopenharmony_cila pagina `info gcc`. 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ciTenete a mente che state cercando di apprendere come lavorare con la comunità 588c2ecf20Sopenharmony_cidi sviluppo già esistente. Questo è un gruppo eterogeneo di persone, con alti 598c2ecf20Sopenharmony_cistandard di codifica, di stile e di procedura. Questi standard sono stati 608c2ecf20Sopenharmony_cicreati nel corso del tempo basandosi su quanto hanno riscontrato funzionare al 618c2ecf20Sopenharmony_cimeglio per un squadra così grande e geograficamente sparsa. Cercate di 628c2ecf20Sopenharmony_ciimparare, in anticipo, il più possibile circa questi standard, poichè ben 638c2ecf20Sopenharmony_cispiegati; non aspettatevi che gli altri si adattino al vostro modo di fare 648c2ecf20Sopenharmony_cio a quello della vostra azienda. 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciNote legali 678c2ecf20Sopenharmony_ci------------ 688c2ecf20Sopenharmony_ciIl codice sorgente del kernel Linux è rilasciato sotto GPL. Siete pregati 698c2ecf20Sopenharmony_cidi visionare il file, COPYING, presente nella cartella principale dei 708c2ecf20Sopenharmony_cisorgente, per eventuali dettagli sulla licenza. Se avete ulteriori domande 718c2ecf20Sopenharmony_cisulla licenza, contattate un avvocato, non chiedete sulle liste di discussione 728c2ecf20Sopenharmony_cidel kernel Linux. Le persone presenti in queste liste non sono avvocati, 738c2ecf20Sopenharmony_cie non dovreste basarvi sulle loro dichiarazioni in materia giuridica. 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciPer domande più frequenti e risposte sulla licenza GPL, guardare: 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci https://www.gnu.org/licenses/gpl-faq.html 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ciDocumentazione 808c2ecf20Sopenharmony_ci-------------- 818c2ecf20Sopenharmony_ciI sorgenti del kernel Linux hanno una vasta base di documenti che vi 828c2ecf20Sopenharmony_ciinsegneranno come interagire con la comunità del kernel. Quando nuove 838c2ecf20Sopenharmony_cifunzionalità vengono aggiunte al kernel, si raccomanda di aggiungere anche i 848c2ecf20Sopenharmony_cirelativi file di documentatione che spiegano come usarele. 858c2ecf20Sopenharmony_ciQuando un cambiamento del kernel genera anche un cambiamento nell'interfaccia 868c2ecf20Sopenharmony_cicon lo spazio utente, è raccomandabile che inviate una notifica o una 878c2ecf20Sopenharmony_cicorrezione alle pagine *man* spiegando tale modifica agli amministratori di 888c2ecf20Sopenharmony_ciqueste pagine all'indirizzo mtk.manpages@gmail.com, aggiungendo 898c2ecf20Sopenharmony_ciin CC la lista linux-api@vger.kernel.org. 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciDi seguito una lista di file che sono presenti nei sorgente del kernel e che 928c2ecf20Sopenharmony_ciè richiesto che voi leggiate: 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/admin-guide/README.rst <it_readme>` 958c2ecf20Sopenharmony_ci Questo file da una piccola anteprima del kernel Linux e descrive il 968c2ecf20Sopenharmony_ci minimo necessario per configurare e generare il kernel. I novizi 978c2ecf20Sopenharmony_ci del kernel dovrebbero iniziare da qui. 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/changes.rst <it_changes>` 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci Questo file fornisce una lista dei pacchetti software necessari 1028c2ecf20Sopenharmony_ci a compilare e far funzionare il kernel con successo. 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>` 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci Questo file descrive lo stile della codifica per il kernel Linux, 1078c2ecf20Sopenharmony_ci e parte delle motivazioni che ne sono alla base. Tutto il nuovo codice deve 1088c2ecf20Sopenharmony_ci seguire le linee guida in questo documento. Molti amministratori 1098c2ecf20Sopenharmony_ci accetteranno patch solo se queste osserveranno tali regole, e molte 1108c2ecf20Sopenharmony_ci persone revisioneranno il codice solo se scritto nello stile appropriato. 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` e 1138c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/submitting-drivers.rst <it_submittingdrivers>` 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci Questo file descrive dettagliatamente come creare ed inviare una patch 1168c2ecf20Sopenharmony_ci con successo, includendo (ma non solo questo): 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci - Contenuto delle email 1198c2ecf20Sopenharmony_ci - Formato delle email 1208c2ecf20Sopenharmony_ci - I destinatari delle email 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci Seguire tali regole non garantirà il successo (tutte le patch sono soggette 1238c2ecf20Sopenharmony_ci a controlli realitivi a contenuto e stile), ma non seguirle lo precluderà 1248c2ecf20Sopenharmony_ci sempre. 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci Altre ottime descrizioni di come creare buone patch sono: 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci "The Perfect Patch" 1298c2ecf20Sopenharmony_ci https://www.ozlabs.org/~akpm/stuff/tpp.txt 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci "Linux kernel patch submission format" 1328c2ecf20Sopenharmony_ci https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/stable-api-nonsense.rst <it_stable_api_nonsense>` 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci Questo file descrive la motivazioni sottostanti la conscia decisione di 1378c2ecf20Sopenharmony_ci non avere un API stabile all'interno del kernel, incluso cose come: 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci - Sottosistemi shim-layers (per compatibilità?) 1408c2ecf20Sopenharmony_ci - Portabilità fra Sistemi Operativi dei driver. 1418c2ecf20Sopenharmony_ci - Attenuare i rapidi cambiamenti all'interno dei sorgenti del kernel 1428c2ecf20Sopenharmony_ci (o prevenirli) 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci Questo documento è vitale per la comprensione della filosifia alla base 1458c2ecf20Sopenharmony_ci dello sviluppo di Linux ed è molto importante per le persone che arrivano 1468c2ecf20Sopenharmony_ci da esperienze con altri Sistemi Operativi. 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/admin-guide/security-bugs.rst <it_securitybugs>` 1498c2ecf20Sopenharmony_ci Se ritenete di aver trovato un problema di sicurezza nel kernel Linux, 1508c2ecf20Sopenharmony_ci seguite i passaggi scritti in questo documento per notificarlo agli 1518c2ecf20Sopenharmony_ci sviluppatori del kernel, ed aiutare la risoluzione del problema. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/management-style.rst <it_managementstyle>` 1548c2ecf20Sopenharmony_ci Questo documento descrive come i manutentori del kernel Linux operano 1558c2ecf20Sopenharmony_ci e la filosofia comune alla base del loro metodo. Questa è un'importante 1568c2ecf20Sopenharmony_ci lettura per tutti coloro che sono nuovi allo sviluppo del kernel (o per 1578c2ecf20Sopenharmony_ci chi è semplicemente curioso), poiché risolve molti dei più comuni 1588c2ecf20Sopenharmony_ci fraintendimenti e confusioni dovuti al particolare comportamento dei 1598c2ecf20Sopenharmony_ci manutentori del kernel. 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/stable-kernel-rules.rst <it_stable_kernel_rules>` 1628c2ecf20Sopenharmony_ci Questo file descrive le regole sulle quali vengono basati i rilasci del 1638c2ecf20Sopenharmony_ci kernel, e spiega cosa fare se si vuole che una modifica venga inserita 1648c2ecf20Sopenharmony_ci in uno di questi rilasci. 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/kernel-docs.rst <it_kernel_docs>` 1678c2ecf20Sopenharmony_ci Una lista di documenti pertinenti allo sviluppo del kernel. 1688c2ecf20Sopenharmony_ci Per favore consultate questa lista se non trovate ciò che cercate nella 1698c2ecf20Sopenharmony_ci documentazione interna del kernel. 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/applying-patches.rst <it_applying_patches>` 1728c2ecf20Sopenharmony_ci Una buona introduzione che descrivere esattamente cos'è una patch e come 1738c2ecf20Sopenharmony_ci applicarla ai differenti rami di sviluppo del kernel. 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ciIl kernel inoltre ha un vasto numero di documenti che possono essere 1768c2ecf20Sopenharmony_ciautomaticamente generati dal codice sorgente stesso o da file 1778c2ecf20Sopenharmony_ciReStructuredText (ReST), come questo. Esso include una completa 1788c2ecf20Sopenharmony_cidescrizione dell'API interna del kernel, e le regole su come gestire la 1798c2ecf20Sopenharmony_cisincronizzazione (locking) correttamente 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ciTutte queste tipologie di documenti possono essere generati in PDF o in 1828c2ecf20Sopenharmony_ciHTML utilizzando:: 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci make pdfdocs 1858c2ecf20Sopenharmony_ci make htmldocs 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_cirispettivamente dalla cartella principale dei sorgenti del kernel. 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ciI documenti che impiegano ReST saranno generati nella cartella 1908c2ecf20Sopenharmony_ciDocumentation/output. 1918c2ecf20Sopenharmony_ciQuesti posso essere generati anche in formato LaTex e ePub con:: 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ci make latexdocs 1948c2ecf20Sopenharmony_ci make epubdocs 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_ciDiventare uno sviluppatore del kernel 1978c2ecf20Sopenharmony_ci------------------------------------- 1988c2ecf20Sopenharmony_ciSe non sapete nulla sullo sviluppo del kernel Linux, dovreste dare uno 1998c2ecf20Sopenharmony_cisguardo al progetto *Linux KernelNewbies*: 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci https://kernelnewbies.org 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ciEsso prevede un'utile lista di discussione dove potete porre più o meno ogni 2048c2ecf20Sopenharmony_citipo di quesito relativo ai concetti fondamentali sullo sviluppo del kernel 2058c2ecf20Sopenharmony_ci(assicuratevi di cercare negli archivi, prima di chiedere qualcosa alla 2068c2ecf20Sopenharmony_ciquale è già stata fornita risposta in passato). Esistono inoltre, un canale IRC 2078c2ecf20Sopenharmony_ciche potete usare per formulare domande in tempo reale, e molti documenti utili 2088c2ecf20Sopenharmony_ciche vi faciliteranno nell'apprendimento dello sviluppo del kernel Linux. 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ciIl sito internet contiene informazioni di base circa l'organizzazione del 2118c2ecf20Sopenharmony_cicodice, sottosistemi e progetti attuali (sia interni che esterni a Linux). 2128c2ecf20Sopenharmony_ciEsso descrive, inoltre, informazioni logistiche di base, riguardanti ad esempio 2138c2ecf20Sopenharmony_cila compilazione del kernel e l'applicazione di una modifica. 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_ciSe non sapete dove cominciare, ma volete cercare delle attività dalle quali 2168c2ecf20Sopenharmony_cipartire per partecipare alla comunità di sviluppo, andate al progetto Linux 2178c2ecf20Sopenharmony_ciKernel Janitor's. 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci https://kernelnewbies.org/KernelJanitors 2208c2ecf20Sopenharmony_ci 2218c2ecf20Sopenharmony_ciÈ un buon posto da cui iniziare. Esso presenta una lista di problematiche 2228c2ecf20Sopenharmony_cirelativamente semplici da sistemare e pulire all'interno della sorgente del 2238c2ecf20Sopenharmony_cikernel Linux. Lavorando con gli sviluppatori incaricati di questo progetto, 2248c2ecf20Sopenharmony_ciimparerete le basi per l'inserimento delle vostre modifiche all'interno dei 2258c2ecf20Sopenharmony_cisorgenti del kernel Linux, e possibilmente, sarete indirizzati al lavoro 2268c2ecf20Sopenharmony_cisuccessivo da svolgere, se non ne avrete ancora idea. 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ciPrima di apportare una qualsiasi modifica al codice del kernel Linux, 2298c2ecf20Sopenharmony_ciè imperativo comprendere come tale codice funziona. A questo scopo, non c'è 2308c2ecf20Sopenharmony_cinulla di meglio che leggerlo direttamente (la maggior parte dei bit più 2318c2ecf20Sopenharmony_cicomplessi sono ben commentati), eventualmente anche con l'aiuto di strumenti 2328c2ecf20Sopenharmony_cispecializzati. Uno degli strumenti che è particolarmente raccomandato è 2338c2ecf20Sopenharmony_ciil progetto Linux Cross-Reference, che è in grado di presentare codice 2348c2ecf20Sopenharmony_cisorgente in un formato autoreferenziale ed indicizzato. Un eccellente ed 2358c2ecf20Sopenharmony_ciaggiornata fonte di consultazione del codice del kernel la potete trovare qui: 2368c2ecf20Sopenharmony_ci 2378c2ecf20Sopenharmony_ci https://elixir.bootlin.com/ 2388c2ecf20Sopenharmony_ci 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ciIl processo di sviluppo 2418c2ecf20Sopenharmony_ci----------------------- 2428c2ecf20Sopenharmony_ciIl processo di sviluppo del kernel Linux si compone di pochi "rami" principali 2438c2ecf20Sopenharmony_cie di molti altri rami per specifici sottosistemi. Questi rami sono: 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_ci - I sorgenti kernel 4.x 2468c2ecf20Sopenharmony_ci - I sorgenti stabili del kernel 4.x.y -stable 2478c2ecf20Sopenharmony_ci - Sorgenti dei sottosistemi del kernel e le loro modifiche 2488c2ecf20Sopenharmony_ci - Il kernel 4.x -next per test d'integrazione 2498c2ecf20Sopenharmony_ci 2508c2ecf20Sopenharmony_ciI sorgenti kernel 4.x 2518c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~ 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ciI kernel 4.x sono amministrati da Linus Torvald, e possono essere trovati 2548c2ecf20Sopenharmony_cisu https://kernel.org nella cartella pub/linux/kernel/v4.x/. Il processo 2558c2ecf20Sopenharmony_cidi sviluppo è il seguente: 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci - Non appena un nuovo kernel viene rilasciato si apre una finestra di due 2588c2ecf20Sopenharmony_ci settimane. Durante questo periodo i manutentori possono proporre a Linus 2598c2ecf20Sopenharmony_ci dei grossi cambiamenti; solitamente i cambiamenti che sono già stati 2608c2ecf20Sopenharmony_ci inseriti nel ramo -next del kernel per alcune settimane. Il modo migliore 2618c2ecf20Sopenharmony_ci per sottoporre dei cambiamenti è attraverso git (lo strumento usato per 2628c2ecf20Sopenharmony_ci gestire i sorgenti del kernel, più informazioni sul sito 2638c2ecf20Sopenharmony_ci https://git-scm.com/) ma anche delle patch vanno bene. 2648c2ecf20Sopenharmony_ci 2658c2ecf20Sopenharmony_ci - Al termine delle due settimane un kernel -rc1 viene rilasciato e 2668c2ecf20Sopenharmony_ci l'obbiettivo ora è quello di renderlo il più solido possibile. A questo 2678c2ecf20Sopenharmony_ci punto la maggior parte delle patch dovrebbero correggere un'eventuale 2688c2ecf20Sopenharmony_ci regressione. I bachi che sono sempre esistiti non sono considerabili come 2698c2ecf20Sopenharmony_ci regressioni, quindi inviate questo tipo di cambiamenti solo se sono 2708c2ecf20Sopenharmony_ci importanti. Notate che un intero driver (o filesystem) potrebbe essere 2718c2ecf20Sopenharmony_ci accettato dopo la -rc1 poiché non esistono rischi di una possibile 2728c2ecf20Sopenharmony_ci regressione con tale cambiamento, fintanto che quest'ultimo è 2738c2ecf20Sopenharmony_ci auto-contenuto e non influisce su aree esterne al codice che è stato 2748c2ecf20Sopenharmony_ci aggiunto. git può essere utilizzato per inviare le patch a Linus dopo che 2758c2ecf20Sopenharmony_ci la -rc1 è stata rilasciata, ma è anche necessario inviare le patch ad 2768c2ecf20Sopenharmony_ci una lista di discussione pubblica per un'ulteriore revisione. 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci - Una nuova -rc viene rilasciata ogni volta che Linus reputa che gli attuali 2798c2ecf20Sopenharmony_ci sorgenti siano in uno stato di salute ragionevolmente adeguato ai test. 2808c2ecf20Sopenharmony_ci L'obiettivo è quello di rilasciare una nuova -rc ogni settimana. 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ci - Il processo continua fino a che il kernel è considerato "pronto"; tale 2838c2ecf20Sopenharmony_ci processo dovrebbe durare circa in 6 settimane. 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ciÈ utile menzionare quanto scritto da Andrew Morton sulla lista di discussione 2868c2ecf20Sopenharmony_cikernel-linux in merito ai rilasci del kernel: 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci *"Nessuno sa quando un kernel verrà rilasciato, poichè questo è 2898c2ecf20Sopenharmony_ci legato allo stato dei bachi e non ad una cronologia preventiva."* 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_ciI sorgenti stabili del kernel 4.x.y -stable 2928c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_ciI kernel con versioni in 3-parti sono "kernel stabili". Essi contengono 2958c2ecf20Sopenharmony_cicorrezioni critiche relativamente piccole nell'ambito della sicurezza 2968c2ecf20Sopenharmony_cioppure significative regressioni scoperte in un dato 4.x kernel. 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ciQuesto è il ramo raccomandato per gli utenti che vogliono un kernel recente 2998c2ecf20Sopenharmony_cie stabile e non sono interessati a dare il proprio contributo alla verifica 3008c2ecf20Sopenharmony_cidelle versioni di sviluppo o sperimentali. 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ciSe non è disponibile alcun kernel 4.x.y., quello più aggiornato e stabile 3038c2ecf20Sopenharmony_cisarà il kernel 4.x con la numerazione più alta. 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ci4.x.y sono amministrati dal gruppo "stable" <stable@vger.kernel.org>, e sono 3068c2ecf20Sopenharmony_cirilasciati a seconda delle esigenze. Il normale periodo di rilascio è 3078c2ecf20Sopenharmony_ciapprossimativamente di due settimane, ma può essere più lungo se non si 3088c2ecf20Sopenharmony_civerificano problematiche urgenti. Un problema relativo alla sicurezza, invece, 3098c2ecf20Sopenharmony_cipuò determinare un rilascio immediato. 3108c2ecf20Sopenharmony_ci 3118c2ecf20Sopenharmony_ciIl file Documentation/process/stable-kernel-rules.rst (nei sorgenti) documenta 3128c2ecf20Sopenharmony_ciquali tipologie di modifiche sono accettate per i sorgenti -stable, e come 3138c2ecf20Sopenharmony_ciavviene il processo di rilascio. 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ciSorgenti dei sottosistemi del kernel e le loro patch 3178c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_ciI manutentori dei diversi sottosistemi del kernel --- ed anche molti 3208c2ecf20Sopenharmony_cisviluppatori di sottosistemi --- mostrano il loro attuale stato di sviluppo 3218c2ecf20Sopenharmony_cinei loro repositori. In questo modo, altri possono vedere cosa succede nelle 3228c2ecf20Sopenharmony_cidiverse parti del kernel. In aree dove lo sviluppo è rapido, potrebbe essere 3238c2ecf20Sopenharmony_cichiesto ad uno sviluppatore di basare le proprie modifiche su questi repositori 3248c2ecf20Sopenharmony_ciin modo da evitare i conflitti fra le sottomissioni ed altri lavori in corso 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ciLa maggior parte di questi repositori sono git, ma esistono anche altri SCM 3278c2ecf20Sopenharmony_ciin uso, o file di patch pubblicate come una serie quilt. 3288c2ecf20Sopenharmony_ciGli indirizzi dei repositori di sottosistema sono indicati nel file 3298c2ecf20Sopenharmony_ciMAINTAINERS. Molti di questi posso essere trovati su https://git.kernel.org/. 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_ciPrima che una modifica venga inclusa in questi sottosistemi, sarà soggetta ad 3328c2ecf20Sopenharmony_ciuna revisione che inizialmente avviene tramite liste di discussione (vedere la 3338c2ecf20Sopenharmony_cisezione dedicata qui sotto). Per molti sottosistemi del kernel, tale processo 3348c2ecf20Sopenharmony_cidi revisione è monitorato con lo strumento patchwork. 3358c2ecf20Sopenharmony_ciPatchwork offre un'interfaccia web che mostra le patch pubblicate, inclusi i 3368c2ecf20Sopenharmony_cicommenti o le revisioni fatte, e gli amministratori possono indicare le patch 3378c2ecf20Sopenharmony_cicome "in revisione", "accettate", o "rifiutate". Diversi siti Patchwork sono 3388c2ecf20Sopenharmony_cielencati al sito https://patchwork.kernel.org/. 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ciIl kernel 4.x -next per test d'integrazione 3418c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ciPrima che gli aggiornamenti dei sottosistemi siano accorpati nel ramo 3448c2ecf20Sopenharmony_ciprincipale 4.x, sarà necessario un test d'integrazione. 3458c2ecf20Sopenharmony_ciA tale scopo, esiste un repositorio speciale di test nel quale virtualmente 3468c2ecf20Sopenharmony_citutti i rami dei sottosistemi vengono inclusi su base quotidiana: 3478c2ecf20Sopenharmony_ci 3488c2ecf20Sopenharmony_ci https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ciIn questo modo, i kernel -next offrono uno sguardo riassuntivo su quello che 3518c2ecf20Sopenharmony_cici si aspetterà essere nel kernel principale nel successivo periodo 3528c2ecf20Sopenharmony_cid'incorporazione. 3538c2ecf20Sopenharmony_ciColoro che vorranno fare dei test d'esecuzione del kernel -next sono più che 3548c2ecf20Sopenharmony_cibenvenuti. 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_ciRiportare Bug 3588c2ecf20Sopenharmony_ci------------- 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_cihttps://bugzilla.kernel.org è dove gli sviluppatori del kernel Linux tracciano 3618c2ecf20Sopenharmony_cii bachi del kernel. Gli utenti sono incoraggiati nel riportare tutti i bachi 3628c2ecf20Sopenharmony_ciche trovano utilizzando questo strumento. 3638c2ecf20Sopenharmony_ciPer maggiori dettagli su come usare il bugzilla del kernel, guardare: 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_ci https://bugzilla.kernel.org/page.cgi?id=faq.html 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_ciIl file admin-guide/reporting-bugs.rst nella cartella principale del kernel 3688c2ecf20Sopenharmony_cifornisce un buon modello sul come segnalare un baco nel kernel, e spiega quali 3698c2ecf20Sopenharmony_ciinformazioni sono necessarie agli sviluppatori per poter aiutare il 3708c2ecf20Sopenharmony_cirintracciamento del problema. 3718c2ecf20Sopenharmony_ci 3728c2ecf20Sopenharmony_ciGestire i rapporti sui bug 3738c2ecf20Sopenharmony_ci-------------------------- 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ciUno dei modi migliori per mettere in pratica le vostre capacità di hacking è 3768c2ecf20Sopenharmony_ciquello di riparare bachi riportati da altre persone. Non solo aiuterete a far 3778c2ecf20Sopenharmony_cidiventare il kernel più stabile, ma imparerete a riparare problemi veri dal 3788c2ecf20Sopenharmony_cimondo ed accrescerete le vostre competenze, e gli altri sviluppatori saranno 3798c2ecf20Sopenharmony_cial corrente della vostra presenza. Riparare bachi è una delle migliori vie per 3808c2ecf20Sopenharmony_ciacquisire meriti tra gli altri sviluppatori, perchè non a molte persone piace 3818c2ecf20Sopenharmony_ciperdere tempo a sistemare i bachi di altri. 3828c2ecf20Sopenharmony_ci 3838c2ecf20Sopenharmony_ciPer lavorare sui rapporti di bachi già riportati, andate su 3848c2ecf20Sopenharmony_cihttps://bugzilla.kernel.org. 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_ciListe di discussione 3878c2ecf20Sopenharmony_ci-------------------- 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_ciCome descritto in molti dei documenti qui sopra, la maggior parte degli 3908c2ecf20Sopenharmony_cisviluppatori del kernel partecipano alla lista di discussione Linux Kernel. 3918c2ecf20Sopenharmony_ciI dettagli su come iscriversi e disiscriversi dalla lista possono essere 3928c2ecf20Sopenharmony_citrovati al sito: 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_ci http://vger.kernel.org/vger-lists.html#linux-kernel 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ciCi sono diversi archivi della lista di discussione. Usate un qualsiasi motore 3978c2ecf20Sopenharmony_cidi ricerca per trovarli. Per esempio: 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_ci http://dir.gmane.org/gmane.linux.kernel 4008c2ecf20Sopenharmony_ci 4018c2ecf20Sopenharmony_ciÉ caldamente consigliata una ricerca in questi archivi sul tema che volete 4028c2ecf20Sopenharmony_cisollevare, prima di pubblicarlo sulla lista. Molte cose sono già state 4038c2ecf20Sopenharmony_cidiscusse in dettaglio e registrate negli archivi della lista di discussione. 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ciMolti dei sottosistemi del kernel hanno anche una loro lista di discussione 4068c2ecf20Sopenharmony_cidedicata. Guardate nel file MAINTAINERS per avere una lista delle liste di 4078c2ecf20Sopenharmony_cidiscussione e il loro uso. 4088c2ecf20Sopenharmony_ci 4098c2ecf20Sopenharmony_ciMolte di queste liste sono gestite su kernel.org. Per informazioni consultate 4108c2ecf20Sopenharmony_cila seguente pagina: 4118c2ecf20Sopenharmony_ci 4128c2ecf20Sopenharmony_ci http://vger.kernel.org/vger-lists.html 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_ciPer favore ricordatevi della buona educazione quando utilizzate queste liste. 4158c2ecf20Sopenharmony_ciSebbene sia un pò dozzinale, il seguente URL contiene alcune semplici linee 4168c2ecf20Sopenharmony_ciguida per interagire con la lista (o con qualsiasi altra lista): 4178c2ecf20Sopenharmony_ci 4188c2ecf20Sopenharmony_ci http://www.albion.com/netiquette/ 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ciSe diverse persone rispondo alla vostra mail, la lista dei riceventi (copia 4218c2ecf20Sopenharmony_ciconoscenza) potrebbe diventare abbastanza lunga. Non cancellate nessuno dalla 4228c2ecf20Sopenharmony_cilista di CC: senza un buon motivo, e non rispondete solo all'indirizzo 4238c2ecf20Sopenharmony_cidella lista di discussione. Fateci l'abitudine perché capita spesso di 4248c2ecf20Sopenharmony_ciricevere la stessa email due volte: una dal mittente ed una dalla lista; e non 4258c2ecf20Sopenharmony_cicercate di modificarla aggiungendo intestazioni stravaganti, agli altri non 4268c2ecf20Sopenharmony_cipiacerà. 4278c2ecf20Sopenharmony_ci 4288c2ecf20Sopenharmony_ciRicordate di rimanere sempre in argomento e di mantenere le attribuzioni 4298c2ecf20Sopenharmony_cidelle vostre risposte invariate; mantenete il "John Kernelhacker wrote ...:" 4308c2ecf20Sopenharmony_ciin cima alla vostra replica e aggiungete le vostre risposte fra i singoli 4318c2ecf20Sopenharmony_ciblocchi citati, non scrivete all'inizio dell'email. 4328c2ecf20Sopenharmony_ci 4338c2ecf20Sopenharmony_ciSe aggiungete patch alla vostra mail, assicuratevi che siano del tutto 4348c2ecf20Sopenharmony_cileggibili come indicato in Documentation/process/submitting-patches.rst. 4358c2ecf20Sopenharmony_ciGli sviluppatori kernel non vogliono avere a che fare con allegati o patch 4368c2ecf20Sopenharmony_cicompresse; vogliono invece poter commentare le righe dei vostri cambiamenti, 4378c2ecf20Sopenharmony_ciil che può funzionare solo in questo modo. 4388c2ecf20Sopenharmony_ciAssicuratevi di utilizzare un gestore di mail che non alterì gli spazi ed i 4398c2ecf20Sopenharmony_cicaratteri. Un ottimo primo test è quello di inviare a voi stessi una mail e 4408c2ecf20Sopenharmony_cicercare di sottoporre la vostra stessa patch. Se non funziona, sistemate il 4418c2ecf20Sopenharmony_civostro programma di posta, o cambiatelo, finché non funziona. 4428c2ecf20Sopenharmony_ci 4438c2ecf20Sopenharmony_ciEd infine, per favore ricordatevi di mostrare rispetto per gli altri 4448c2ecf20Sopenharmony_cisottoscriventi. 4458c2ecf20Sopenharmony_ci 4468c2ecf20Sopenharmony_ciLavorare con la comunità 4478c2ecf20Sopenharmony_ci------------------------ 4488c2ecf20Sopenharmony_ci 4498c2ecf20Sopenharmony_ciL'obiettivo di questa comunità è quello di fornire il miglior kernel possibile. 4508c2ecf20Sopenharmony_ciQuando inviate una modifica che volete integrare, sarà valutata esclusivamente 4518c2ecf20Sopenharmony_cidal punto di vista tecnico. Quindi, cosa dovreste aspettarvi? 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_ci - critiche 4548c2ecf20Sopenharmony_ci - commenti 4558c2ecf20Sopenharmony_ci - richieste di cambiamento 4568c2ecf20Sopenharmony_ci - richieste di spiegazioni 4578c2ecf20Sopenharmony_ci - nulla 4588c2ecf20Sopenharmony_ci 4598c2ecf20Sopenharmony_ciRicordatevi che questo fa parte dell'integrazione della vostra modifica 4608c2ecf20Sopenharmony_ciall'interno del kernel. Dovete essere in grado di accettare le critiche, 4618c2ecf20Sopenharmony_civalutarle a livello tecnico ed eventualmente rielaborare nuovamente le vostre 4628c2ecf20Sopenharmony_cimodifiche o fornire delle chiare e concise motivazioni per le quali le 4638c2ecf20Sopenharmony_cimodifiche suggerite non dovrebbero essere fatte. 4648c2ecf20Sopenharmony_ciSe non riceverete risposte, aspettate qualche giorno e riprovate ancora, 4658c2ecf20Sopenharmony_ciqualche volta le cose si perdono nell'enorme mucchio di email. 4668c2ecf20Sopenharmony_ci 4678c2ecf20Sopenharmony_ciCosa non dovreste fare? 4688c2ecf20Sopenharmony_ci 4698c2ecf20Sopenharmony_ci - aspettarvi che la vostra modifica venga accettata senza problemi 4708c2ecf20Sopenharmony_ci - mettervi sulla difensiva 4718c2ecf20Sopenharmony_ci - ignorare i commenti 4728c2ecf20Sopenharmony_ci - sottomettere nuovamente la modifica senza fare nessuno dei cambiamenti 4738c2ecf20Sopenharmony_ci richiesti 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_ciIn una comunità che è alla ricerca delle migliori soluzioni tecniche possibili, 4768c2ecf20Sopenharmony_cici saranno sempre opinioni differenti sull'utilità di una modifica. 4778c2ecf20Sopenharmony_ciSiate cooperativi e vogliate adattare la vostra idea in modo che sia inserita 4788c2ecf20Sopenharmony_cinel kernel. O almeno vogliate dimostrare che la vostra idea vale. 4798c2ecf20Sopenharmony_ciRicordatevi, sbagliare è accettato fintanto che siate disposti a lavorare verso 4808c2ecf20Sopenharmony_ciuna soluzione che è corretta. 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_ciÈ normale che le risposte alla vostra prima modifica possa essere 4838c2ecf20Sopenharmony_cisemplicemente una lista con dozzine di cose che dovreste correggere. 4848c2ecf20Sopenharmony_ciQuesto **non** implica che la vostra patch non sarà accettata, e questo 4858c2ecf20Sopenharmony_ci**non** è contro di voi personalmente. 4868c2ecf20Sopenharmony_ciSemplicemente correggete tutte le questioni sollevate contro la vostra modifica 4878c2ecf20Sopenharmony_cied inviatela nuovamente. 4888c2ecf20Sopenharmony_ci 4898c2ecf20Sopenharmony_ciDifferenze tra la comunità del kernel e le strutture aziendali 4908c2ecf20Sopenharmony_ci-------------------------------------------------------------- 4918c2ecf20Sopenharmony_ci 4928c2ecf20Sopenharmony_ciLa comunità del kernel funziona diversamente rispetto a molti ambienti di 4938c2ecf20Sopenharmony_cisviluppo aziendali. Qui di seguito una lista di cose che potete provare a 4948c2ecf20Sopenharmony_cifare per evitare problemi: 4958c2ecf20Sopenharmony_ci 4968c2ecf20Sopenharmony_ci Cose da dire riguardanti le modifiche da voi proposte: 4978c2ecf20Sopenharmony_ci 4988c2ecf20Sopenharmony_ci - "Questo risolve più problematiche." 4998c2ecf20Sopenharmony_ci - "Questo elimina 2000 stringhe di codice." 5008c2ecf20Sopenharmony_ci - "Qui una modifica che spiega cosa sto cercando di fare." 5018c2ecf20Sopenharmony_ci - "L'ho testato su 5 diverse architetture.." 5028c2ecf20Sopenharmony_ci - "Qui una serie di piccole modifiche che.." 5038c2ecf20Sopenharmony_ci - "Questo aumenta le prestazioni di macchine standard..." 5048c2ecf20Sopenharmony_ci 5058c2ecf20Sopenharmony_ci Cose che dovreste evitare di dire: 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ci - "Lo abbiamo fatto in questo modo in AIX/ptx/Solaris, di conseguenza 5088c2ecf20Sopenharmony_ci deve per forza essere giusto..." 5098c2ecf20Sopenharmony_ci - "Ho fatto questo per 20 anni, quindi.." 5108c2ecf20Sopenharmony_ci - "Questo è richiesto dalla mia Azienda per far soldi" 5118c2ecf20Sopenharmony_ci - "Questo è per la linea di prodotti della nostra Azienda" 5128c2ecf20Sopenharmony_ci - "Ecco il mio documento di design di 1000 pagine che descrive ciò che ho 5138c2ecf20Sopenharmony_ci in mente" 5148c2ecf20Sopenharmony_ci - "Ci ho lavorato per 6 mesi..." 5158c2ecf20Sopenharmony_ci - "Ecco una patch da 5000 righe che.." 5168c2ecf20Sopenharmony_ci - "Ho riscritto il pasticcio attuale, ed ecco qua.." 5178c2ecf20Sopenharmony_ci - "Ho una scadenza, e questa modifica ha bisogno di essere approvata ora" 5188c2ecf20Sopenharmony_ci 5198c2ecf20Sopenharmony_ciUn'altra cosa nella quale la comunità del kernel si differenzia dai più 5208c2ecf20Sopenharmony_ciclassici ambienti di ingegneria del software è la natura "senza volto" delle 5218c2ecf20Sopenharmony_ciinterazioni umane. Uno dei benefici dell'uso delle email e di irc come forma 5228c2ecf20Sopenharmony_ciprimordiale di comunicazione è l'assenza di discriminazione basata su genere e 5238c2ecf20Sopenharmony_cirazza. L'ambienti di lavoro Linux accetta donne e minoranze perchè tutto quello 5248c2ecf20Sopenharmony_ciche sei è un indirizzo email. Aiuta anche l'aspetto internazionale nel 5258c2ecf20Sopenharmony_cilivellare il terreno di gioco perchè non è possibile indovinare il genere 5268c2ecf20Sopenharmony_cibasandosi sul nome di una persona. Un uomo può chiamarsi Andrea ed una donna 5278c2ecf20Sopenharmony_cipotrebbe chiamarsi Pat. Gran parte delle donne che hanno lavorato al kernel 5288c2ecf20Sopenharmony_ciLinux e che hanno espresso una personale opinione hanno avuto esperienze 5298c2ecf20Sopenharmony_cipositive. 5308c2ecf20Sopenharmony_ci 5318c2ecf20Sopenharmony_ciLa lingua potrebbe essere un ostacolo per quelle persone che non si trovano 5328c2ecf20Sopenharmony_cia loro agio con l'inglese. Una buona padronanza del linguaggio può essere 5338c2ecf20Sopenharmony_cinecessaria per esporre le proprie idee in maniera appropiata all'interno 5348c2ecf20Sopenharmony_cidelle liste di discussione, quindi è consigliabile che rileggiate le vostre 5358c2ecf20Sopenharmony_ciemail prima di inviarle in modo da essere certi che abbiano senso in inglese. 5368c2ecf20Sopenharmony_ci 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_ciSpezzare le vostre modifiche 5398c2ecf20Sopenharmony_ci---------------------------- 5408c2ecf20Sopenharmony_ci 5418c2ecf20Sopenharmony_ciLa comunità del kernel Linux non accetta con piacere grossi pezzi di codice 5428c2ecf20Sopenharmony_cibuttati lì tutti in una volta. Le modifiche necessitano di essere 5438c2ecf20Sopenharmony_ciadeguatamente presentate, discusse, e suddivise in parti più piccole ed 5448c2ecf20Sopenharmony_ciindipendenti. Questo è praticamente l'esatto opposto di quello che le 5458c2ecf20Sopenharmony_ciaziende fanno solitamente. La vostra proposta dovrebbe, inoltre, essere 5468c2ecf20Sopenharmony_cipresentata prestissimo nel processo di sviluppo, così che possiate ricevere 5478c2ecf20Sopenharmony_ciun riscontro su quello che state facendo. Lasciate che la comunità 5488c2ecf20Sopenharmony_cisenta che state lavorando con loro, e che non li stiate sfruttando come 5498c2ecf20Sopenharmony_cidiscarica per le vostre aggiunte. In ogni caso, non inviate 50 email nello 5508c2ecf20Sopenharmony_cistesso momento in una lista di discussione, il più delle volte la vostra serie 5518c2ecf20Sopenharmony_cidi modifiche dovrebbe essere più piccola. 5528c2ecf20Sopenharmony_ci 5538c2ecf20Sopenharmony_ciI motivi per i quali dovreste frammentare le cose sono i seguenti: 5548c2ecf20Sopenharmony_ci 5558c2ecf20Sopenharmony_ci1) Piccole modifiche aumentano le probabilità che vengano accettate, 5568c2ecf20Sopenharmony_ci altrimenti richiederebbe troppo tempo o sforzo nel verificarne 5578c2ecf20Sopenharmony_ci la correttezza. Una modifica di 5 righe può essere accettata da un 5588c2ecf20Sopenharmony_ci manutentore con a mala pena una seconda occhiata. Invece, una modifica da 5598c2ecf20Sopenharmony_ci 500 linee può richiedere ore di rilettura per verificarne la correttezza 5608c2ecf20Sopenharmony_ci (il tempo necessario è esponenzialmente proporzionale alla dimensione della 5618c2ecf20Sopenharmony_ci modifica, o giù di lì) 5628c2ecf20Sopenharmony_ci 5638c2ecf20Sopenharmony_ci Piccole modifiche sono inoltre molto facili da debuggare quando qualcosa 5648c2ecf20Sopenharmony_ci non va. È molto più facile annullare le modifiche una per una che 5658c2ecf20Sopenharmony_ci dissezionare una patch molto grande dopo la sua sottomissione (e rompere 5668c2ecf20Sopenharmony_ci qualcosa). 5678c2ecf20Sopenharmony_ci 5688c2ecf20Sopenharmony_ci2) È importante non solo inviare piccole modifiche, ma anche riscriverle e 5698c2ecf20Sopenharmony_ci semplificarle (o più semplicemente ordinarle) prima di sottoporle. 5708c2ecf20Sopenharmony_ci 5718c2ecf20Sopenharmony_ciQui un'analogia dello sviluppatore kernel Al Viro: 5728c2ecf20Sopenharmony_ci 5738c2ecf20Sopenharmony_ci *"Pensate ad un insegnante di matematica che corregge il compito 5748c2ecf20Sopenharmony_ci di uno studente (di matematica). L'insegnante non vuole vedere le 5758c2ecf20Sopenharmony_ci prove e gli errori commessi dallo studente prima che arrivi alla 5768c2ecf20Sopenharmony_ci soluzione. Vuole vedere la risposta più pulita ed elegante 5778c2ecf20Sopenharmony_ci possibile. Un buono studente lo sa, e non presenterebbe mai le 5788c2ecf20Sopenharmony_ci proprie bozze prima prima della soluzione finale"* 5798c2ecf20Sopenharmony_ci 5808c2ecf20Sopenharmony_ci *"Lo stesso vale per lo sviluppo del kernel. I manutentori ed i 5818c2ecf20Sopenharmony_ci revisori non vogliono vedere il procedimento che sta dietro al 5828c2ecf20Sopenharmony_ci problema che uno sta risolvendo. Vogliono vedere una soluzione 5838c2ecf20Sopenharmony_ci semplice ed elegante."* 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ciPuò essere una vera sfida il saper mantenere l'equilibrio fra una presentazione 5868c2ecf20Sopenharmony_cielegante della vostra soluzione, lavorare insieme ad una comunità e dibattere 5878c2ecf20Sopenharmony_cisu un lavoro incompleto. Pertanto è bene entrare presto nel processo di 5888c2ecf20Sopenharmony_cirevisione per migliorare il vostro lavoro, ma anche per riuscire a tenere le 5898c2ecf20Sopenharmony_civostre modifiche in pezzettini che potrebbero essere già accettate, nonostante 5908c2ecf20Sopenharmony_cila vostra intera attività non lo sia ancora. 5918c2ecf20Sopenharmony_ci 5928c2ecf20Sopenharmony_ciIn fine, rendetevi conto che non è accettabile inviare delle modifiche 5938c2ecf20Sopenharmony_ciincomplete con la promessa che saranno "sistemate dopo". 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_ci 5968c2ecf20Sopenharmony_ciGiustificare le vostre modifiche 5978c2ecf20Sopenharmony_ci-------------------------------- 5988c2ecf20Sopenharmony_ci 5998c2ecf20Sopenharmony_ciInsieme alla frammentazione delle vostre modifiche, è altrettanto importante 6008c2ecf20Sopenharmony_cipermettere alla comunità Linux di capire perché dovrebbero accettarle. 6018c2ecf20Sopenharmony_ciNuove funzionalità devono essere motivate come necessarie ed utili. 6028c2ecf20Sopenharmony_ci 6038c2ecf20Sopenharmony_ci 6048c2ecf20Sopenharmony_ciDocumentare le vostre modifiche 6058c2ecf20Sopenharmony_ci------------------------------- 6068c2ecf20Sopenharmony_ci 6078c2ecf20Sopenharmony_ciQuando inviate le vostre modifiche, fate particolare attenzione a quello che 6088c2ecf20Sopenharmony_ciscrivete nella vostra email. Questa diventerà il *ChangeLog* per la modifica, 6098c2ecf20Sopenharmony_cie sarà visibile a tutti per sempre. Dovrebbe descrivere la modifica nella sua 6108c2ecf20Sopenharmony_ciinterezza, contenendo: 6118c2ecf20Sopenharmony_ci 6128c2ecf20Sopenharmony_ci - perchè la modifica è necessaria 6138c2ecf20Sopenharmony_ci - l'approccio d'insieme alla patch 6148c2ecf20Sopenharmony_ci - dettagli supplementari 6158c2ecf20Sopenharmony_ci - risultati dei test 6168c2ecf20Sopenharmony_ci 6178c2ecf20Sopenharmony_ciPer maggiori dettagli su come tutto ciò dovrebbe apparire, riferitevi alla 6188c2ecf20Sopenharmony_cisezione ChangeLog del documento: 6198c2ecf20Sopenharmony_ci 6208c2ecf20Sopenharmony_ci "The Perfect Patch" 6218c2ecf20Sopenharmony_ci http://www.ozlabs.org/~akpm/stuff/tpp.txt 6228c2ecf20Sopenharmony_ci 6238c2ecf20Sopenharmony_ciA volte tutto questo è difficile da realizzare. Il perfezionamento di queste 6248c2ecf20Sopenharmony_cipratiche può richiedere anni (eventualmente). È un processo continuo di 6258c2ecf20Sopenharmony_cimiglioramento che richiede molta pazienza e determinazione. Ma non mollate, 6268c2ecf20Sopenharmony_cisi può fare. Molti lo hanno fatto prima, ed ognuno ha dovuto iniziare dove 6278c2ecf20Sopenharmony_cisiete voi ora. 6288c2ecf20Sopenharmony_ci 6298c2ecf20Sopenharmony_ci 6308c2ecf20Sopenharmony_ci 6318c2ecf20Sopenharmony_ci 6328c2ecf20Sopenharmony_ci---------- 6338c2ecf20Sopenharmony_ci 6348c2ecf20Sopenharmony_ciGrazie a Paolo Ciarrocchi che ha permesso che la sezione "Development Process" 6358c2ecf20Sopenharmony_ci(https://lwn.net/Articles/94386/) fosse basata sui testi da lui scritti, ed a 6368c2ecf20Sopenharmony_ciRandy Dunlap e Gerrit Huizenga per la lista di cose che dovreste e non 6378c2ecf20Sopenharmony_cidovreste dire. Grazie anche a Pat Mochel, Hanna Linder, Randy Dunlap, 6388c2ecf20Sopenharmony_ciKay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, 6398c2ecf20Sopenharmony_ciAndi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, 6408c2ecf20Sopenharmony_ciDavid A. Wheeler, Junio Hamano, Michael Kerrisk, e Alex Shepard per le 6418c2ecf20Sopenharmony_ciloro revisioni, commenti e contributi. Senza il loro aiuto, questo documento 6428c2ecf20Sopenharmony_cinon sarebbe stato possibile. 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_ciManutentore: Greg Kroah-Hartman <greg@kroah.com> 645