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