Questo è il primo articolo di una serie per spiegare le basi dello sviluppo di Ubuntu in un modo che non lo fa richiedono enormi quantità di background e passano attraverso concetti, strumenti, processi e infrastrutture passo dopo passo fare un passo. Se ti piace l'articolo o hai domande o hai riscontrato bug, lascia un commento.
Ubuntu è composto da migliaia di componenti diversi, scritti in molti linguaggi di programmazione diversi. Ogni componente, sia esso una libreria software, uno strumento o un'applicazione grafica, è disponibile come pacchetto sorgente. I pacchetti sorgente nella maggior parte dei casi sono costituiti da due parti: il codice sorgente effettivo e i metadati. I metadati includono le dipendenze del pacchetto, le informazioni sul copyright e sulla licenza e le istruzioni su come creare il pacchetto. Una volta che questo pacchetto sorgente è stato compilato, il processo di compilazione fornisce pacchetti binari, che sono i file .deb che gli utenti possono installare.
Ogni volta che viene rilasciata una nuova versione di un'applicazione o quando qualcuno apporta una modifica alla fonte codice che va in Ubuntu, il pacchetto sorgente deve essere caricato sulle macchine di compilazione di Launchpad per essere compilato. I pacchetti binari risultanti vengono quindi distribuiti all'archivio e ai suoi mirror in diversi paesi. Gli URL in
/etc/apt/sources.list puntare a un archivio o a un mirror. Ogni giorno vengono create immagini CD per una selezione di diverse versioni di Ubuntu. Ubuntu Desktop, Ubuntu Server, Kubuntu e altri specificano un elenco di pacchetti richiesti che si trovano sul CD. Queste immagini del CD vengono quindi utilizzate per i test di installazione e forniscono il feedback per un'ulteriore pianificazione del rilascio.Lo sviluppo di Ubuntu dipende molto dalla fase attuale del ciclo di rilascio. Rilasciamo una nuova versione di Ubuntu ogni sei mesi, il che è possibile solo perché abbiamo stabilito delle date di congelamento rigorose. Con ogni data di congelamento raggiunta, gli sviluppatori dovrebbero apportare meno modifiche e meno invadenti. Feature Freeze è la prima grande data di congelamento dopo che è trascorsa la prima metà del ciclo. In questa fase le funzionalità devono essere ampiamente implementate. Il resto del ciclo dovrebbe essere focalizzato sulla correzione dei bug. Dopodiché l'interfaccia utente, quindi la documentazione, il kernel, ecc. sono congelati, quindi viene pubblicata la versione beta che riceve molti test. Dalla versione beta in poi, vengono corretti solo i bug critici e viene rilasciata una release candidate che, se non contiene problemi seri, diventa la versione finale.
Migliaia di pacchetti sorgente, miliardi di righe di codice, centinaia di contributori richiedono molta comunicazione e pianificazione per mantenere elevati standard di qualità. All'inizio di ogni ciclo di rilascio abbiamo l'Ubuntu Developer Summit in cui sviluppatori e contributori si riuniscono per pianificare le funzionalità delle versioni successive. Ogni caratteristica viene discussa dai suoi stakeholder e viene scritta una specifica che contiene dettagli informazioni sulle sue ipotesi, attuazione, i cambiamenti necessari in altri luoghi, come testarlo e presto. Tutto questo viene fatto in modo aperto e trasparente, quindi anche se non puoi partecipare all'evento di persona, puoi partecipare da remoto e ascolta uno streamcast, chatta con gli assistenti e iscriviti ai cambiamenti delle specifiche, così sei sempre aggiornato Data.
Tuttavia, non ogni singolo cambiamento può essere discusso in una riunione, in particolare perché Ubuntu si basa su modifiche apportate in altri progetti. Questo è il motivo per cui i collaboratori di Ubuntu rimangono costantemente in contatto. La maggior parte dei team o dei progetti utilizza mailing list dedicate per evitare troppo rumore non correlato. Per un coordinamento più immediato, sviluppatori e contributori utilizzano Internet Relay Chat (IRC). Tutte le discussioni sono aperte e pubbliche.
Un altro strumento importante per quanto riguarda la comunicazione sono le segnalazioni di bug. Ogni volta che viene rilevato un difetto in un pacchetto o in una parte dell'infrastruttura, viene archiviata una segnalazione di bug in Launchpad. Tutte le informazioni sono raccolte in quel rapporto e la sua importanza, stato e assegnatario aggiornati quando necessario. Questo lo rende uno strumento efficace per tenere sotto controllo i bug in un pacchetto o progetto e organizzare il carico di lavoro.
La maggior parte del software disponibile tramite Ubuntu non è scritta dagli stessi sviluppatori Ubuntu. La maggior parte è scritta da sviluppatori di altri progetti Open Source e quindi integrata in Ubuntu. Questi progetti sono chiamati "Upstream", perché il loro codice sorgente scorre in Ubuntu, dove lo integriamo "solo". La relazione con Upstreams è di fondamentale importanza per Ubuntu. Non è solo il codice che Ubuntu ottiene da Upstreams, ma è anche che gli Upstream ottengono utenti, segnalazioni di bug e patch da Ubuntu (e altre distribuzioni).
L'upstream più importante per Ubuntu è Debian. Debian è la distribuzione su cui si basa Ubuntu e molte delle decisioni di progettazione riguardanti l'infrastruttura di packaging vengono prese lì. Tradizionalmente, Debian ha sempre avuto manutentori dedicati per ogni singolo pacchetto o team di manutenzione dedicati. In Ubuntu ci sono anche team che hanno interesse per un sottoinsieme di pacchetti e, naturalmente, ogni sviluppatore ha uno speciale area di competenza, ma la partecipazione (e i diritti di caricamento) è generalmente aperta a chiunque dimostri capacità e buona volontà.
Ottenere un cambiamento in Ubuntu come nuovo contributore non è così scoraggiante come sembra e può essere un'esperienza molto gratificante. Non si tratta solo di imparare qualcosa di nuovo ed eccitante, ma anche di condividere la soluzione e risolvere un problema per milioni di utenti.
Lo sviluppo open source avviene in un mondo distribuito con diversi obiettivi e diverse aree di interesse. Ad esempio, potrebbe verificarsi il caso in cui un particolare Upstream potrebbe essere interessato a lavorare su una nuova grande funzionalità mentre Ubuntu, a causa del ristretto programma di rilascio, potrebbe essere interessato a fornire una versione solida con solo un bug aggiuntivo aggiustare. Questo è il motivo per cui utilizziamo lo "sviluppo distribuito", in cui il codice viene elaborato in vari rami che vengono uniti tra loro dopo le revisioni del codice e una discussione sufficiente.
Nell'esempio sopra menzionato avrebbe senso spedire Ubuntu con la versione esistente del progetto, aggiungi il bugfix, inseriscilo in Upstream per la loro prossima versione e spediscilo (se adatto) nella prossima Ubuntu pubblicazione. Sarebbe il miglior compromesso possibile e una situazione in cui tutti vincono.
Per correggere un bug in Ubuntu, dovresti prima ottenere il codice sorgente per il pacchetto, quindi lavorare sulla correzione, documentalo in modo che sia facile da capire per altri sviluppatori e utenti, quindi crea il pacchetto da testare esso. Dopo averlo testato, puoi facilmente proporre la modifica da includere nell'attuale versione di sviluppo di Ubuntu. Uno sviluppatore con diritti di caricamento lo esaminerà per te e poi lo integrerà in Ubuntu.
Quando si cerca una soluzione, di solito è una buona idea controllare con Upstream e vedere se il problema (o una possibile soluzione) è già nota e, in caso contrario, fai del tuo meglio per rendere la soluzione concordata sforzo.
Ulteriori passaggi potrebbero comportare il backport della modifica su una versione precedente di Ubuntu ancora supportata e l'inoltro a Upstream.
I requisiti più importanti per il successo nello sviluppo di Ubuntu sono: avere un talento per "far funzionare le cose di nuovo", non aver paura di leggere la documentazione e fare domande, essere un giocatore di squadra e godersi un po' di detective lavoro.
I posti migliori per porre le tue domande sono [email protected] e #ubuntu-motu sopra irc.freenode.net. Troverai facilmente molti nuovi amici e persone con la tua stessa passione: rendere il mondo un posto migliore realizzando un software Open Source migliore.
Aggiornare: Ecco Parte 2 di Introduzione allo sviluppo di Ubuntu.
Tutto Ubuntu, tutti i giorni. Dal 2009.