162306a36Sopenharmony_ci.. include:: ../disclaimer-ita.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/howto.rst <process_howto>` 462306a36Sopenharmony_ci:Translator: Alessia Mantegazza <amantegazza@vaga.pv.it> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci.. _it_process_howto: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciCome partecipare allo sviluppo del kernel Linux 962306a36Sopenharmony_ci=============================================== 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciQuesto è il documento fulcro di quanto trattato sull'argomento. 1262306a36Sopenharmony_ciEsso contiene le istruzioni su come diventare uno sviluppatore 1362306a36Sopenharmony_cidel kernel Linux e spiega come lavorare con la comunità di 1462306a36Sopenharmony_cisviluppo kernel Linux. Il documento non tratterà alcun aspetto 1562306a36Sopenharmony_citecnico relativo alla programmazione del kernel, ma vi aiuterà 1662306a36Sopenharmony_ciindirizzandovi sulla corretta strada. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciSe qualsiasi cosa presente in questo documento diventasse obsoleta, 1962306a36Sopenharmony_civi preghiamo di inviare le correzioni agli amministratori di questo 2062306a36Sopenharmony_cifile, indicati in fondo al presente documento. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciIntroduzione 2362306a36Sopenharmony_ci------------ 2462306a36Sopenharmony_ciDunque, volete imparare come diventare sviluppatori del kernel Linux? 2562306a36Sopenharmony_ciO vi è stato detto dal vostro capo, "Vai, scrivi un driver Linux per 2662306a36Sopenharmony_ciquesto dispositivo". Bene, l'obbiettivo di questo documento è quello 2762306a36Sopenharmony_cidi insegnarvi tutto ciò che dovete sapere per raggiungere il vostro 2862306a36Sopenharmony_ciscopo descrivendo il procedimento da seguire e consigliandovi 2962306a36Sopenharmony_cisu come lavorare con la comunità. Il documento cercherà, inoltre, 3062306a36Sopenharmony_cidi spiegare alcune delle ragioni per le quali la comunità lavora in un 3162306a36Sopenharmony_cimodo suo particolare. 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciIl kernel è scritto prevalentemente nel linguaggio C con alcune parti 3462306a36Sopenharmony_cispecifiche dell'architettura scritte in linguaggio assembly. 3562306a36Sopenharmony_ciPer lo sviluppo kernel è richiesta una buona conoscenza del linguaggio C. 3662306a36Sopenharmony_ciL'assembly (di qualsiasi architettura) non è richiesto, a meno che non 3762306a36Sopenharmony_cipensiate di fare dello sviluppo di basso livello per un'architettura. 3862306a36Sopenharmony_ciSebbene essi non siano un buon sostituto ad un solido studio del 3962306a36Sopenharmony_cilinguaggio C o ad anni di esperienza, i seguenti libri sono, se non 4062306a36Sopenharmony_cialtro, utili riferimenti: 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci- "The C Programming Language" di Kernighan e Ritchie [Prentice Hall] 4362306a36Sopenharmony_ci- "Practical C Programming" di Steve Oualline [O'Reilly] 4462306a36Sopenharmony_ci- "C: A Reference Manual" di Harbison and Steele [Prentice Hall] 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ciIl kernel è stato scritto usando GNU C e la toolchain GNU. 4762306a36Sopenharmony_ciSebbene si attenga allo standard ISO C11, esso utilizza una serie di 4862306a36Sopenharmony_ciestensioni che non sono previste in questo standard. Il kernel è un 4962306a36Sopenharmony_ciambiente C indipendente, che non ha alcuna dipendenza dalle librerie 5062306a36Sopenharmony_ciC standard, così alcune parti del C standard non sono supportate. 5162306a36Sopenharmony_ciLe divisioni ``long long`` e numeri in virgola mobile non sono permessi. 5262306a36Sopenharmony_ciQualche volta è difficile comprendere gli assunti che il kernel ha 5362306a36Sopenharmony_ciriguardo gli strumenti e le estensioni in uso, e sfortunatamente non 5462306a36Sopenharmony_ciesiste alcuna indicazione definitiva. Per maggiori informazioni, controllate, 5562306a36Sopenharmony_cila pagina `info gcc`. 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciTenete a mente che state cercando di apprendere come lavorare con la comunità 5862306a36Sopenharmony_cidi sviluppo già esistente. Questo è un gruppo eterogeneo di persone, con alti 5962306a36Sopenharmony_cistandard di codifica, di stile e di procedura. Questi standard sono stati 6062306a36Sopenharmony_cicreati nel corso del tempo basandosi su quanto hanno riscontrato funzionare al 6162306a36Sopenharmony_cimeglio per un squadra così grande e geograficamente sparsa. Cercate di 6262306a36Sopenharmony_ciimparare, in anticipo, il più possibile circa questi standard, poichè ben 6362306a36Sopenharmony_cispiegati; non aspettatevi che gli altri si adattino al vostro modo di fare 6462306a36Sopenharmony_cio a quello della vostra azienda. 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ciNote legali 6762306a36Sopenharmony_ci------------ 6862306a36Sopenharmony_ciIl codice sorgente del kernel Linux è rilasciato sotto GPL. Siete pregati 6962306a36Sopenharmony_cidi visionare il file, COPYING, presente nella cartella principale dei 7062306a36Sopenharmony_cisorgente, per eventuali dettagli sulla licenza. Se avete ulteriori domande 7162306a36Sopenharmony_cisulla licenza, contattate un avvocato, non chiedete sulle liste di discussione 7262306a36Sopenharmony_cidel kernel Linux. Le persone presenti in queste liste non sono avvocati, 7362306a36Sopenharmony_cie non dovreste basarvi sulle loro dichiarazioni in materia giuridica. 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ciPer domande più frequenti e risposte sulla licenza GPL, guardare: 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci https://www.gnu.org/licenses/gpl-faq.html 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciDocumentazione 8062306a36Sopenharmony_ci-------------- 8162306a36Sopenharmony_ciI sorgenti del kernel Linux hanno una vasta base di documenti che vi 8262306a36Sopenharmony_ciinsegneranno come interagire con la comunità del kernel. Quando nuove 8362306a36Sopenharmony_cifunzionalità vengono aggiunte al kernel, si raccomanda di aggiungere anche i 8462306a36Sopenharmony_cirelativi file di documentatione che spiegano come usarele. 8562306a36Sopenharmony_ciQuando un cambiamento del kernel genera anche un cambiamento nell'interfaccia 8662306a36Sopenharmony_cicon lo spazio utente, è raccomandabile che inviate una notifica o una 8762306a36Sopenharmony_cicorrezione alle pagine *man* spiegando tale modifica agli amministratori di 8862306a36Sopenharmony_ciqueste pagine all'indirizzo mtk.manpages@gmail.com, aggiungendo 8962306a36Sopenharmony_ciin CC la lista linux-api@vger.kernel.org. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciDi seguito una lista di file che sono presenti nei sorgente del kernel e che 9262306a36Sopenharmony_ciè richiesto che voi leggiate: 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/admin-guide/README.rst <it_readme>` 9562306a36Sopenharmony_ci Questo file da una piccola anteprima del kernel Linux e descrive il 9662306a36Sopenharmony_ci minimo necessario per configurare e generare il kernel. I novizi 9762306a36Sopenharmony_ci del kernel dovrebbero iniziare da qui. 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/changes.rst <it_changes>` 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci Questo file fornisce una lista dei pacchetti software necessari 10262306a36Sopenharmony_ci a compilare e far funzionare il kernel con successo. 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>` 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci Questo file descrive lo stile della codifica per il kernel Linux, 10762306a36Sopenharmony_ci e parte delle motivazioni che ne sono alla base. Tutto il nuovo codice deve 10862306a36Sopenharmony_ci seguire le linee guida in questo documento. Molti amministratori 10962306a36Sopenharmony_ci accetteranno patch solo se queste osserveranno tali regole, e molte 11062306a36Sopenharmony_ci persone revisioneranno il codice solo se scritto nello stile appropriato. 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>` 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci Questo file descrive dettagliatamente come creare ed inviare una patch 11562306a36Sopenharmony_ci con successo, includendo (ma non solo questo): 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci - Contenuto delle email 11862306a36Sopenharmony_ci - Formato delle email 11962306a36Sopenharmony_ci - I destinatari delle email 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci Seguire tali regole non garantirà il successo (tutte le patch sono soggette 12262306a36Sopenharmony_ci a controlli realitivi a contenuto e stile), ma non seguirle lo precluderà 12362306a36Sopenharmony_ci sempre. 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci Altre ottime descrizioni di come creare buone patch sono: 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci "The Perfect Patch" 12862306a36Sopenharmony_ci https://www.ozlabs.org/~akpm/stuff/tpp.txt 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci "Linux kernel patch submission format" 13162306a36Sopenharmony_ci https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/stable-api-nonsense.rst <it_stable_api_nonsense>` 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci Questo file descrive la motivazioni sottostanti la conscia decisione di 13662306a36Sopenharmony_ci non avere un API stabile all'interno del kernel, incluso cose come: 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci - Sottosistemi shim-layers (per compatibilità?) 13962306a36Sopenharmony_ci - Portabilità fra Sistemi Operativi dei driver. 14062306a36Sopenharmony_ci - Attenuare i rapidi cambiamenti all'interno dei sorgenti del kernel 14162306a36Sopenharmony_ci (o prevenirli) 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci Questo documento è vitale per la comprensione della filosifia alla base 14462306a36Sopenharmony_ci dello sviluppo di Linux ed è molto importante per le persone che arrivano 14562306a36Sopenharmony_ci da esperienze con altri Sistemi Operativi. 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/admin-guide/security-bugs.rst <it_securitybugs>` 14862306a36Sopenharmony_ci Se ritenete di aver trovato un problema di sicurezza nel kernel Linux, 14962306a36Sopenharmony_ci seguite i passaggi scritti in questo documento per notificarlo agli 15062306a36Sopenharmony_ci sviluppatori del kernel, ed aiutare la risoluzione del problema. 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/management-style.rst <it_managementstyle>` 15362306a36Sopenharmony_ci Questo documento descrive come i manutentori del kernel Linux operano 15462306a36Sopenharmony_ci e la filosofia comune alla base del loro metodo. Questa è un'importante 15562306a36Sopenharmony_ci lettura per tutti coloro che sono nuovi allo sviluppo del kernel (o per 15662306a36Sopenharmony_ci chi è semplicemente curioso), poiché risolve molti dei più comuni 15762306a36Sopenharmony_ci fraintendimenti e confusioni dovuti al particolare comportamento dei 15862306a36Sopenharmony_ci manutentori del kernel. 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/stable-kernel-rules.rst <it_stable_kernel_rules>` 16162306a36Sopenharmony_ci Questo file descrive le regole sulle quali vengono basati i rilasci del 16262306a36Sopenharmony_ci kernel, e spiega cosa fare se si vuole che una modifica venga inserita 16362306a36Sopenharmony_ci in uno di questi rilasci. 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/kernel-docs.rst <it_kernel_docs>` 16662306a36Sopenharmony_ci Una lista di documenti pertinenti allo sviluppo del kernel. 16762306a36Sopenharmony_ci Per favore consultate questa lista se non trovate ciò che cercate nella 16862306a36Sopenharmony_ci documentazione interna del kernel. 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/applying-patches.rst <it_applying_patches>` 17162306a36Sopenharmony_ci Una buona introduzione che descrivere esattamente cos'è una patch e come 17262306a36Sopenharmony_ci applicarla ai differenti rami di sviluppo del kernel. 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ciIl kernel inoltre ha un vasto numero di documenti che possono essere 17562306a36Sopenharmony_ciautomaticamente generati dal codice sorgente stesso o da file 17662306a36Sopenharmony_ciReStructuredText (ReST), come questo. Esso include una completa 17762306a36Sopenharmony_cidescrizione dell'API interna del kernel, e le regole su come gestire la 17862306a36Sopenharmony_cisincronizzazione (locking) correttamente 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ciTutte queste tipologie di documenti possono essere generati in PDF o in 18162306a36Sopenharmony_ciHTML utilizzando:: 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci make pdfdocs 18462306a36Sopenharmony_ci make htmldocs 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_cirispettivamente dalla cartella principale dei sorgenti del kernel. 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ciI documenti che impiegano ReST saranno generati nella cartella 18962306a36Sopenharmony_ciDocumentation/output. 19062306a36Sopenharmony_ciQuesti posso essere generati anche in formato LaTex e ePub con:: 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci make latexdocs 19362306a36Sopenharmony_ci make epubdocs 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ciDiventare uno sviluppatore del kernel 19662306a36Sopenharmony_ci------------------------------------- 19762306a36Sopenharmony_ciSe non sapete nulla sullo sviluppo del kernel Linux, dovreste dare uno 19862306a36Sopenharmony_cisguardo al progetto *Linux KernelNewbies*: 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci https://kernelnewbies.org 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ciEsso prevede un'utile lista di discussione dove potete porre più o meno ogni 20362306a36Sopenharmony_citipo di quesito relativo ai concetti fondamentali sullo sviluppo del kernel 20462306a36Sopenharmony_ci(assicuratevi di cercare negli archivi, prima di chiedere qualcosa alla 20562306a36Sopenharmony_ciquale è già stata fornita risposta in passato). Esistono inoltre, un canale IRC 20662306a36Sopenharmony_ciche potete usare per formulare domande in tempo reale, e molti documenti utili 20762306a36Sopenharmony_ciche vi faciliteranno nell'apprendimento dello sviluppo del kernel Linux. 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ciIl sito internet contiene informazioni di base circa l'organizzazione del 21062306a36Sopenharmony_cicodice, sottosistemi e progetti attuali (sia interni che esterni a Linux). 21162306a36Sopenharmony_ciEsso descrive, inoltre, informazioni logistiche di base, riguardanti ad esempio 21262306a36Sopenharmony_cila compilazione del kernel e l'applicazione di una modifica. 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ciSe non sapete dove cominciare, ma volete cercare delle attività dalle quali 21562306a36Sopenharmony_cipartire per partecipare alla comunità di sviluppo, andate al progetto Linux 21662306a36Sopenharmony_ciKernel Janitor's. 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci https://kernelnewbies.org/KernelJanitors 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciÈ un buon posto da cui iniziare. Esso presenta una lista di problematiche 22162306a36Sopenharmony_cirelativamente semplici da sistemare e pulire all'interno della sorgente del 22262306a36Sopenharmony_cikernel Linux. Lavorando con gli sviluppatori incaricati di questo progetto, 22362306a36Sopenharmony_ciimparerete le basi per l'inserimento delle vostre modifiche all'interno dei 22462306a36Sopenharmony_cisorgenti del kernel Linux, e possibilmente, sarete indirizzati al lavoro 22562306a36Sopenharmony_cisuccessivo da svolgere, se non ne avrete ancora idea. 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ciPrima di apportare una qualsiasi modifica al codice del kernel Linux, 22862306a36Sopenharmony_ciè imperativo comprendere come tale codice funziona. A questo scopo, non c'è 22962306a36Sopenharmony_cinulla di meglio che leggerlo direttamente (la maggior parte dei bit più 23062306a36Sopenharmony_cicomplessi sono ben commentati), eventualmente anche con l'aiuto di strumenti 23162306a36Sopenharmony_cispecializzati. Uno degli strumenti che è particolarmente raccomandato è 23262306a36Sopenharmony_ciil progetto Linux Cross-Reference, che è in grado di presentare codice 23362306a36Sopenharmony_cisorgente in un formato autoreferenziale ed indicizzato. Un eccellente ed 23462306a36Sopenharmony_ciaggiornata fonte di consultazione del codice del kernel la potete trovare qui: 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci https://elixir.bootlin.com/ 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ciIl processo di sviluppo 24062306a36Sopenharmony_ci----------------------- 24162306a36Sopenharmony_ciIl processo di sviluppo del kernel Linux si compone di pochi "rami" principali 24262306a36Sopenharmony_cie di molti altri rami per specifici sottosistemi. Questi rami sono: 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci - I sorgenti kernel 4.x 24562306a36Sopenharmony_ci - I sorgenti stabili del kernel 4.x.y -stable 24662306a36Sopenharmony_ci - Sorgenti dei sottosistemi del kernel e le loro modifiche 24762306a36Sopenharmony_ci - Il kernel 4.x -next per test d'integrazione 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ciI sorgenti kernel 4.x 25062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~ 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ciI kernel 4.x sono amministrati da Linus Torvald, e possono essere trovati 25362306a36Sopenharmony_cisu https://kernel.org nella cartella pub/linux/kernel/v4.x/. Il processo 25462306a36Sopenharmony_cidi sviluppo è il seguente: 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci - Non appena un nuovo kernel viene rilasciato si apre una finestra di due 25762306a36Sopenharmony_ci settimane. Durante questo periodo i manutentori possono proporre a Linus 25862306a36Sopenharmony_ci dei grossi cambiamenti; solitamente i cambiamenti che sono già stati 25962306a36Sopenharmony_ci inseriti nel ramo -next del kernel per alcune settimane. Il modo migliore 26062306a36Sopenharmony_ci per sottoporre dei cambiamenti è attraverso git (lo strumento usato per 26162306a36Sopenharmony_ci gestire i sorgenti del kernel, più informazioni sul sito 26262306a36Sopenharmony_ci https://git-scm.com/) ma anche delle patch vanno bene. 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci - Al termine delle due settimane un kernel -rc1 viene rilasciato e 26562306a36Sopenharmony_ci l'obbiettivo ora è quello di renderlo il più solido possibile. A questo 26662306a36Sopenharmony_ci punto la maggior parte delle patch dovrebbero correggere un'eventuale 26762306a36Sopenharmony_ci regressione. I bachi che sono sempre esistiti non sono considerabili come 26862306a36Sopenharmony_ci regressioni, quindi inviate questo tipo di cambiamenti solo se sono 26962306a36Sopenharmony_ci importanti. Notate che un intero driver (o filesystem) potrebbe essere 27062306a36Sopenharmony_ci accettato dopo la -rc1 poiché non esistono rischi di una possibile 27162306a36Sopenharmony_ci regressione con tale cambiamento, fintanto che quest'ultimo è 27262306a36Sopenharmony_ci auto-contenuto e non influisce su aree esterne al codice che è stato 27362306a36Sopenharmony_ci aggiunto. git può essere utilizzato per inviare le patch a Linus dopo che 27462306a36Sopenharmony_ci la -rc1 è stata rilasciata, ma è anche necessario inviare le patch ad 27562306a36Sopenharmony_ci una lista di discussione pubblica per un'ulteriore revisione. 27662306a36Sopenharmony_ci 27762306a36Sopenharmony_ci - Una nuova -rc viene rilasciata ogni volta che Linus reputa che gli attuali 27862306a36Sopenharmony_ci sorgenti siano in uno stato di salute ragionevolmente adeguato ai test. 27962306a36Sopenharmony_ci L'obiettivo è quello di rilasciare una nuova -rc ogni settimana. 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci - Il processo continua fino a che il kernel è considerato "pronto"; tale 28262306a36Sopenharmony_ci processo dovrebbe durare circa in 6 settimane. 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ciÈ utile menzionare quanto scritto da Andrew Morton sulla lista di discussione 28562306a36Sopenharmony_cikernel-linux in merito ai rilasci del kernel: 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci *"Nessuno sa quando un kernel verrà rilasciato, poichè questo è 28862306a36Sopenharmony_ci legato allo stato dei bachi e non ad una cronologia preventiva."* 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ciI sorgenti stabili del kernel 4.x.y -stable 29162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ciI kernel con versioni in 3-parti sono "kernel stabili". Essi contengono 29462306a36Sopenharmony_cicorrezioni critiche relativamente piccole nell'ambito della sicurezza 29562306a36Sopenharmony_cioppure significative regressioni scoperte in un dato 4.x kernel. 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ciQuesto è il ramo raccomandato per gli utenti che vogliono un kernel recente 29862306a36Sopenharmony_cie stabile e non sono interessati a dare il proprio contributo alla verifica 29962306a36Sopenharmony_cidelle versioni di sviluppo o sperimentali. 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ciSe non è disponibile alcun kernel 4.x.y., quello più aggiornato e stabile 30262306a36Sopenharmony_cisarà il kernel 4.x con la numerazione più alta. 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci4.x.y sono amministrati dal gruppo "stable" <stable@vger.kernel.org>, e sono 30562306a36Sopenharmony_cirilasciati a seconda delle esigenze. Il normale periodo di rilascio è 30662306a36Sopenharmony_ciapprossimativamente di due settimane, ma può essere più lungo se non si 30762306a36Sopenharmony_civerificano problematiche urgenti. Un problema relativo alla sicurezza, invece, 30862306a36Sopenharmony_cipuò determinare un rilascio immediato. 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ciIl file Documentation/process/stable-kernel-rules.rst (nei sorgenti) documenta 31162306a36Sopenharmony_ciquali tipologie di modifiche sono accettate per i sorgenti -stable, e come 31262306a36Sopenharmony_ciavviene il processo di rilascio. 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ciSorgenti dei sottosistemi del kernel e le loro patch 31662306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_ciI manutentori dei diversi sottosistemi del kernel --- ed anche molti 31962306a36Sopenharmony_cisviluppatori di sottosistemi --- mostrano il loro attuale stato di sviluppo 32062306a36Sopenharmony_cinei loro repositori. In questo modo, altri possono vedere cosa succede nelle 32162306a36Sopenharmony_cidiverse parti del kernel. In aree dove lo sviluppo è rapido, potrebbe essere 32262306a36Sopenharmony_cichiesto ad uno sviluppatore di basare le proprie modifiche su questi repositori 32362306a36Sopenharmony_ciin modo da evitare i conflitti fra le sottomissioni ed altri lavori in corso 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ciLa maggior parte di questi repositori sono git, ma esistono anche altri SCM 32662306a36Sopenharmony_ciin uso, o file di patch pubblicate come una serie quilt. 32762306a36Sopenharmony_ciGli indirizzi dei repositori di sottosistema sono indicati nel file 32862306a36Sopenharmony_ciMAINTAINERS. Molti di questi posso essere trovati su https://git.kernel.org/. 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ciPrima che una modifica venga inclusa in questi sottosistemi, sarà soggetta ad 33162306a36Sopenharmony_ciuna revisione che inizialmente avviene tramite liste di discussione (vedere la 33262306a36Sopenharmony_cisezione dedicata qui sotto). Per molti sottosistemi del kernel, tale processo 33362306a36Sopenharmony_cidi revisione è monitorato con lo strumento patchwork. 33462306a36Sopenharmony_ciPatchwork offre un'interfaccia web che mostra le patch pubblicate, inclusi i 33562306a36Sopenharmony_cicommenti o le revisioni fatte, e gli amministratori possono indicare le patch 33662306a36Sopenharmony_cicome "in revisione", "accettate", o "rifiutate". Diversi siti Patchwork sono 33762306a36Sopenharmony_cielencati al sito https://patchwork.kernel.org/. 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ciIl kernel 4.x -next per test d'integrazione 34062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ciPrima che gli aggiornamenti dei sottosistemi siano accorpati nel ramo 34362306a36Sopenharmony_ciprincipale 4.x, sarà necessario un test d'integrazione. 34462306a36Sopenharmony_ciA tale scopo, esiste un repositorio speciale di test nel quale virtualmente 34562306a36Sopenharmony_citutti i rami dei sottosistemi vengono inclusi su base quotidiana: 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ciIn questo modo, i kernel -next offrono uno sguardo riassuntivo su quello che 35062306a36Sopenharmony_cici si aspetterà essere nel kernel principale nel successivo periodo 35162306a36Sopenharmony_cid'incorporazione. 35262306a36Sopenharmony_ciColoro che vorranno fare dei test d'esecuzione del kernel -next sono più che 35362306a36Sopenharmony_cibenvenuti. 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ciRiportare Bug 35762306a36Sopenharmony_ci------------- 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ciIl file 'Documentation/admin-guide/reporting-issues.rst' nella 36062306a36Sopenharmony_cicartella principale del kernel spiega come segnalare un baco nel 36162306a36Sopenharmony_cikernel, e fornisce dettagli su quali informazioni sono necessarie agli 36262306a36Sopenharmony_cisviluppatori del kernel per poter studiare il problema. 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ciGestire i rapporti sui bug 36562306a36Sopenharmony_ci-------------------------- 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_ciUno dei modi migliori per mettere in pratica le vostre capacità di hacking è 36862306a36Sopenharmony_ciquello di riparare bachi riportati da altre persone. Non solo aiuterete a far 36962306a36Sopenharmony_cidiventare il kernel più stabile, ma imparerete a riparare problemi veri dal 37062306a36Sopenharmony_cimondo ed accrescerete le vostre competenze, e gli altri sviluppatori saranno 37162306a36Sopenharmony_cial corrente della vostra presenza. Riparare bachi è una delle migliori vie per 37262306a36Sopenharmony_ciacquisire meriti tra gli altri sviluppatori, perchè non a molte persone piace 37362306a36Sopenharmony_ciperdere tempo a sistemare i bachi di altri. 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ciPer lavorare sui bachi già segnalati, per prima cosa cercate il 37662306a36Sopenharmony_cisottosistema che vi interessa. Poi, verificate nel file MAINTAINERS 37762306a36Sopenharmony_cidove vengono collezionati solitamente i bachi per quel sottosistema; 37862306a36Sopenharmony_cispesso sarà una lista di discussione, raramente un bugtracker. Cercate 37962306a36Sopenharmony_cibachi nell'archivio e aiutate dove credete di poterlo fare. Potete 38062306a36Sopenharmony_cianche consultare https://bugzilla.kernel.org; però, solo una manciata di 38162306a36Sopenharmony_cisottosistemi lo usano attivamente, ciò nonostante i bachi che 38262306a36Sopenharmony_cicoinvolgono l'intero kernel sono sempre riportati lì. 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ciListe di discussione 38562306a36Sopenharmony_ci-------------------- 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ciCome descritto in molti dei documenti qui sopra, la maggior parte degli 38862306a36Sopenharmony_cisviluppatori del kernel partecipano alla lista di discussione Linux Kernel. 38962306a36Sopenharmony_ciI dettagli su come iscriversi e disiscriversi dalla lista possono essere 39062306a36Sopenharmony_citrovati al sito: 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci http://vger.kernel.org/vger-lists.html#linux-kernel 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_ciCi sono diversi archivi della lista di discussione. Usate un qualsiasi motore 39562306a36Sopenharmony_cidi ricerca per trovarli. Per esempio: 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci https://lore.kernel.org/lkml/ 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_ciÉ caldamente consigliata una ricerca in questi archivi sul tema che volete 40062306a36Sopenharmony_cisollevare, prima di pubblicarlo sulla lista. Molte cose sono già state 40162306a36Sopenharmony_cidiscusse in dettaglio e registrate negli archivi della lista di discussione. 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_ciMolti dei sottosistemi del kernel hanno anche una loro lista di discussione 40462306a36Sopenharmony_cidedicata. Guardate nel file MAINTAINERS per avere una lista delle liste di 40562306a36Sopenharmony_cidiscussione e il loro uso. 40662306a36Sopenharmony_ci 40762306a36Sopenharmony_ciMolte di queste liste sono gestite su kernel.org. Per informazioni consultate 40862306a36Sopenharmony_cila seguente pagina: 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci http://vger.kernel.org/vger-lists.html 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_ciPer favore ricordatevi della buona educazione quando utilizzate queste liste. 41362306a36Sopenharmony_ciSebbene sia un pò dozzinale, il seguente URL contiene alcune semplici linee 41462306a36Sopenharmony_ciguida per interagire con la lista (o con qualsiasi altra lista): 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci http://www.albion.com/netiquette/ 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ciSe diverse persone rispondo alla vostra mail, la lista dei riceventi (copia 41962306a36Sopenharmony_ciconoscenza) potrebbe diventare abbastanza lunga. Non cancellate nessuno dalla 42062306a36Sopenharmony_cilista di CC: senza un buon motivo, e non rispondete solo all'indirizzo 42162306a36Sopenharmony_cidella lista di discussione. Fateci l'abitudine perché capita spesso di 42262306a36Sopenharmony_ciricevere la stessa email due volte: una dal mittente ed una dalla lista; e non 42362306a36Sopenharmony_cicercate di modificarla aggiungendo intestazioni stravaganti, agli altri non 42462306a36Sopenharmony_cipiacerà. 42562306a36Sopenharmony_ci 42662306a36Sopenharmony_ciRicordate di rimanere sempre in argomento e di mantenere le attribuzioni 42762306a36Sopenharmony_cidelle vostre risposte invariate; mantenete il "John Kernelhacker wrote ...:" 42862306a36Sopenharmony_ciin cima alla vostra replica e aggiungete le vostre risposte fra i singoli 42962306a36Sopenharmony_ciblocchi citati, non scrivete all'inizio dell'email. 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ciSe aggiungete patch alla vostra mail, assicuratevi che siano del tutto 43262306a36Sopenharmony_cileggibili come indicato in Documentation/process/submitting-patches.rst. 43362306a36Sopenharmony_ciGli sviluppatori kernel non vogliono avere a che fare con allegati o patch 43462306a36Sopenharmony_cicompresse; vogliono invece poter commentare le righe dei vostri cambiamenti, 43562306a36Sopenharmony_ciil che può funzionare solo in questo modo. 43662306a36Sopenharmony_ciAssicuratevi di utilizzare un gestore di mail che non alterì gli spazi ed i 43762306a36Sopenharmony_cicaratteri. Un ottimo primo test è quello di inviare a voi stessi una mail e 43862306a36Sopenharmony_cicercare di sottoporre la vostra stessa patch. Se non funziona, sistemate il 43962306a36Sopenharmony_civostro programma di posta, o cambiatelo, finché non funziona. 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ciEd infine, per favore ricordatevi di mostrare rispetto per gli altri 44262306a36Sopenharmony_cisottoscriventi. 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ciLavorare con la comunità 44562306a36Sopenharmony_ci------------------------ 44662306a36Sopenharmony_ci 44762306a36Sopenharmony_ciL'obiettivo di questa comunità è quello di fornire il miglior kernel possibile. 44862306a36Sopenharmony_ciQuando inviate una modifica che volete integrare, sarà valutata esclusivamente 44962306a36Sopenharmony_cidal punto di vista tecnico. Quindi, cosa dovreste aspettarvi? 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_ci - critiche 45262306a36Sopenharmony_ci - commenti 45362306a36Sopenharmony_ci - richieste di cambiamento 45462306a36Sopenharmony_ci - richieste di spiegazioni 45562306a36Sopenharmony_ci - nulla 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ciRicordatevi che questo fa parte dell'integrazione della vostra modifica 45862306a36Sopenharmony_ciall'interno del kernel. Dovete essere in grado di accettare le critiche, 45962306a36Sopenharmony_civalutarle a livello tecnico ed eventualmente rielaborare nuovamente le vostre 46062306a36Sopenharmony_cimodifiche o fornire delle chiare e concise motivazioni per le quali le 46162306a36Sopenharmony_cimodifiche suggerite non dovrebbero essere fatte. 46262306a36Sopenharmony_ciSe non riceverete risposte, aspettate qualche giorno e riprovate ancora, 46362306a36Sopenharmony_ciqualche volta le cose si perdono nell'enorme mucchio di email. 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_ciCosa non dovreste fare? 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci - aspettarvi che la vostra modifica venga accettata senza problemi 46862306a36Sopenharmony_ci - mettervi sulla difensiva 46962306a36Sopenharmony_ci - ignorare i commenti 47062306a36Sopenharmony_ci - sottomettere nuovamente la modifica senza fare nessuno dei cambiamenti 47162306a36Sopenharmony_ci richiesti 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_ciIn una comunità che è alla ricerca delle migliori soluzioni tecniche possibili, 47462306a36Sopenharmony_cici saranno sempre opinioni differenti sull'utilità di una modifica. 47562306a36Sopenharmony_ciSiate cooperativi e vogliate adattare la vostra idea in modo che sia inserita 47662306a36Sopenharmony_cinel kernel. O almeno vogliate dimostrare che la vostra idea vale. 47762306a36Sopenharmony_ciRicordatevi, sbagliare è accettato fintanto che siate disposti a lavorare verso 47862306a36Sopenharmony_ciuna soluzione che è corretta. 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ciÈ normale che le risposte alla vostra prima modifica possa essere 48162306a36Sopenharmony_cisemplicemente una lista con dozzine di cose che dovreste correggere. 48262306a36Sopenharmony_ciQuesto **non** implica che la vostra patch non sarà accettata, e questo 48362306a36Sopenharmony_ci**non** è contro di voi personalmente. 48462306a36Sopenharmony_ciSemplicemente correggete tutte le questioni sollevate contro la vostra modifica 48562306a36Sopenharmony_cied inviatela nuovamente. 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ciDifferenze tra la comunità del kernel e le strutture aziendali 48862306a36Sopenharmony_ci-------------------------------------------------------------- 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ciLa comunità del kernel funziona diversamente rispetto a molti ambienti di 49162306a36Sopenharmony_cisviluppo aziendali. Qui di seguito una lista di cose che potete provare a 49262306a36Sopenharmony_cifare per evitare problemi: 49362306a36Sopenharmony_ci 49462306a36Sopenharmony_ci Cose da dire riguardanti le modifiche da voi proposte: 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci - "Questo risolve più problematiche." 49762306a36Sopenharmony_ci - "Questo elimina 2000 stringhe di codice." 49862306a36Sopenharmony_ci - "Qui una modifica che spiega cosa sto cercando di fare." 49962306a36Sopenharmony_ci - "L'ho testato su 5 diverse architetture.." 50062306a36Sopenharmony_ci - "Qui una serie di piccole modifiche che.." 50162306a36Sopenharmony_ci - "Questo aumenta le prestazioni di macchine standard..." 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_ci Cose che dovreste evitare di dire: 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci - "Lo abbiamo fatto in questo modo in AIX/ptx/Solaris, di conseguenza 50662306a36Sopenharmony_ci deve per forza essere giusto..." 50762306a36Sopenharmony_ci - "Ho fatto questo per 20 anni, quindi.." 50862306a36Sopenharmony_ci - "Questo è richiesto dalla mia Azienda per far soldi" 50962306a36Sopenharmony_ci - "Questo è per la linea di prodotti della nostra Azienda" 51062306a36Sopenharmony_ci - "Ecco il mio documento di design di 1000 pagine che descrive ciò che ho 51162306a36Sopenharmony_ci in mente" 51262306a36Sopenharmony_ci - "Ci ho lavorato per 6 mesi..." 51362306a36Sopenharmony_ci - "Ecco una patch da 5000 righe che.." 51462306a36Sopenharmony_ci - "Ho riscritto il pasticcio attuale, ed ecco qua.." 51562306a36Sopenharmony_ci - "Ho una scadenza, e questa modifica ha bisogno di essere approvata ora" 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_ciUn'altra cosa nella quale la comunità del kernel si differenzia dai più 51862306a36Sopenharmony_ciclassici ambienti di ingegneria del software è la natura "senza volto" delle 51962306a36Sopenharmony_ciinterazioni umane. Uno dei benefici dell'uso delle email e di irc come forma 52062306a36Sopenharmony_ciprimordiale di comunicazione è l'assenza di discriminazione basata su genere e 52162306a36Sopenharmony_cirazza. L'ambienti di lavoro Linux accetta donne e minoranze perchè tutto quello 52262306a36Sopenharmony_ciche sei è un indirizzo email. Aiuta anche l'aspetto internazionale nel 52362306a36Sopenharmony_cilivellare il terreno di gioco perchè non è possibile indovinare il genere 52462306a36Sopenharmony_cibasandosi sul nome di una persona. Un uomo può chiamarsi Andrea ed una donna 52562306a36Sopenharmony_cipotrebbe chiamarsi Pat. Gran parte delle donne che hanno lavorato al kernel 52662306a36Sopenharmony_ciLinux e che hanno espresso una personale opinione hanno avuto esperienze 52762306a36Sopenharmony_cipositive. 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_ciLa lingua potrebbe essere un ostacolo per quelle persone che non si trovano 53062306a36Sopenharmony_cia loro agio con l'inglese. Una buona padronanza del linguaggio può essere 53162306a36Sopenharmony_cinecessaria per esporre le proprie idee in maniera appropiata all'interno 53262306a36Sopenharmony_cidelle liste di discussione, quindi è consigliabile che rileggiate le vostre 53362306a36Sopenharmony_ciemail prima di inviarle in modo da essere certi che abbiano senso in inglese. 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ciSpezzare le vostre modifiche 53762306a36Sopenharmony_ci---------------------------- 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ciLa comunità del kernel Linux non accetta con piacere grossi pezzi di codice 54062306a36Sopenharmony_cibuttati lì tutti in una volta. Le modifiche necessitano di essere 54162306a36Sopenharmony_ciadeguatamente presentate, discusse, e suddivise in parti più piccole ed 54262306a36Sopenharmony_ciindipendenti. Questo è praticamente l'esatto opposto di quello che le 54362306a36Sopenharmony_ciaziende fanno solitamente. La vostra proposta dovrebbe, inoltre, essere 54462306a36Sopenharmony_cipresentata prestissimo nel processo di sviluppo, così che possiate ricevere 54562306a36Sopenharmony_ciun riscontro su quello che state facendo. Lasciate che la comunità 54662306a36Sopenharmony_cisenta che state lavorando con loro, e che non li stiate sfruttando come 54762306a36Sopenharmony_cidiscarica per le vostre aggiunte. In ogni caso, non inviate 50 email nello 54862306a36Sopenharmony_cistesso momento in una lista di discussione, il più delle volte la vostra serie 54962306a36Sopenharmony_cidi modifiche dovrebbe essere più piccola. 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ciI motivi per i quali dovreste frammentare le cose sono i seguenti: 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_ci1) Piccole modifiche aumentano le probabilità che vengano accettate, 55462306a36Sopenharmony_ci altrimenti richiederebbe troppo tempo o sforzo nel verificarne 55562306a36Sopenharmony_ci la correttezza. Una modifica di 5 righe può essere accettata da un 55662306a36Sopenharmony_ci manutentore con a mala pena una seconda occhiata. Invece, una modifica da 55762306a36Sopenharmony_ci 500 linee può richiedere ore di rilettura per verificarne la correttezza 55862306a36Sopenharmony_ci (il tempo necessario è esponenzialmente proporzionale alla dimensione della 55962306a36Sopenharmony_ci modifica, o giù di lì) 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ci Piccole modifiche sono inoltre molto facili da debuggare quando qualcosa 56262306a36Sopenharmony_ci non va. È molto più facile annullare le modifiche una per una che 56362306a36Sopenharmony_ci dissezionare una patch molto grande dopo la sua sottomissione (e rompere 56462306a36Sopenharmony_ci qualcosa). 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci2) È importante non solo inviare piccole modifiche, ma anche riscriverle e 56762306a36Sopenharmony_ci semplificarle (o più semplicemente ordinarle) prima di sottoporle. 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_ciQui un'analogia dello sviluppatore kernel Al Viro: 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ci *"Pensate ad un insegnante di matematica che corregge il compito 57262306a36Sopenharmony_ci di uno studente (di matematica). L'insegnante non vuole vedere le 57362306a36Sopenharmony_ci prove e gli errori commessi dallo studente prima che arrivi alla 57462306a36Sopenharmony_ci soluzione. Vuole vedere la risposta più pulita ed elegante 57562306a36Sopenharmony_ci possibile. Un buono studente lo sa, e non presenterebbe mai le 57662306a36Sopenharmony_ci proprie bozze prima prima della soluzione finale"* 57762306a36Sopenharmony_ci 57862306a36Sopenharmony_ci *"Lo stesso vale per lo sviluppo del kernel. I manutentori ed i 57962306a36Sopenharmony_ci revisori non vogliono vedere il procedimento che sta dietro al 58062306a36Sopenharmony_ci problema che uno sta risolvendo. Vogliono vedere una soluzione 58162306a36Sopenharmony_ci semplice ed elegante."* 58262306a36Sopenharmony_ci 58362306a36Sopenharmony_ciPuò essere una vera sfida il saper mantenere l'equilibrio fra una presentazione 58462306a36Sopenharmony_cielegante della vostra soluzione, lavorare insieme ad una comunità e dibattere 58562306a36Sopenharmony_cisu un lavoro incompleto. Pertanto è bene entrare presto nel processo di 58662306a36Sopenharmony_cirevisione per migliorare il vostro lavoro, ma anche per riuscire a tenere le 58762306a36Sopenharmony_civostre modifiche in pezzettini che potrebbero essere già accettate, nonostante 58862306a36Sopenharmony_cila vostra intera attività non lo sia ancora. 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_ciIn fine, rendetevi conto che non è accettabile inviare delle modifiche 59162306a36Sopenharmony_ciincomplete con la promessa che saranno "sistemate dopo". 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_ci 59462306a36Sopenharmony_ciGiustificare le vostre modifiche 59562306a36Sopenharmony_ci-------------------------------- 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ciInsieme alla frammentazione delle vostre modifiche, è altrettanto importante 59862306a36Sopenharmony_cipermettere alla comunità Linux di capire perché dovrebbero accettarle. 59962306a36Sopenharmony_ciNuove funzionalità devono essere motivate come necessarie ed utili. 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ciDocumentare le vostre modifiche 60362306a36Sopenharmony_ci------------------------------- 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_ciQuando inviate le vostre modifiche, fate particolare attenzione a quello che 60662306a36Sopenharmony_ciscrivete nella vostra email. Questa diventerà il *ChangeLog* per la modifica, 60762306a36Sopenharmony_cie sarà visibile a tutti per sempre. Dovrebbe descrivere la modifica nella sua 60862306a36Sopenharmony_ciinterezza, contenendo: 60962306a36Sopenharmony_ci 61062306a36Sopenharmony_ci - perchè la modifica è necessaria 61162306a36Sopenharmony_ci - l'approccio d'insieme alla patch 61262306a36Sopenharmony_ci - dettagli supplementari 61362306a36Sopenharmony_ci - risultati dei test 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ciPer maggiori dettagli su come tutto ciò dovrebbe apparire, riferitevi alla 61662306a36Sopenharmony_cisezione ChangeLog del documento: 61762306a36Sopenharmony_ci 61862306a36Sopenharmony_ci "The Perfect Patch" 61962306a36Sopenharmony_ci http://www.ozlabs.org/~akpm/stuff/tpp.txt 62062306a36Sopenharmony_ci 62162306a36Sopenharmony_ciA volte tutto questo è difficile da realizzare. Il perfezionamento di queste 62262306a36Sopenharmony_cipratiche può richiedere anni (eventualmente). È un processo continuo di 62362306a36Sopenharmony_cimiglioramento che richiede molta pazienza e determinazione. Ma non mollate, 62462306a36Sopenharmony_cisi può fare. Molti lo hanno fatto prima, ed ognuno ha dovuto iniziare dove 62562306a36Sopenharmony_cisiete voi ora. 62662306a36Sopenharmony_ci 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ci---------- 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ciGrazie a Paolo Ciarrocchi che ha permesso che la sezione "Development Process" 63362306a36Sopenharmony_ci(https://lwn.net/Articles/94386/) fosse basata sui testi da lui scritti, ed a 63462306a36Sopenharmony_ciRandy Dunlap e Gerrit Huizenga per la lista di cose che dovreste e non 63562306a36Sopenharmony_cidovreste dire. Grazie anche a Pat Mochel, Hanna Linder, Randy Dunlap, 63662306a36Sopenharmony_ciKay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, 63762306a36Sopenharmony_ciAndi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, 63862306a36Sopenharmony_ciDavid A. Wheeler, Junio Hamano, Michael Kerrisk, e Alex Shepard per le 63962306a36Sopenharmony_ciloro revisioni, commenti e contributi. Senza il loro aiuto, questo documento 64062306a36Sopenharmony_cinon sarebbe stato possibile. 64162306a36Sopenharmony_ci 64262306a36Sopenharmony_ciManutentore: Greg Kroah-Hartman <greg@kroah.com> 643