I grandi risultati prodotti dal progetto Debian sono dovuti contemporaneamente al lavoro svolto sull'infrastruttura dagli esperti sviluppatori di Debian, dal lavoro individuale o collettivo degli sviluppatori sui pacchetti Debian, e dalle opinioni degli utenti.
1.3.1. Gli Sviluppatori Debian
Debian developers have various responsibilities, and as official project members, they have great influence on the direction the project takes. A Debian developer is generally responsible for at least one package, but according to their available time and desire, they are free to become involved in numerous teams and projects, thus acquiring more responsibilities within the project.
La manutenzione dei pacchetti è un'attività molto documentata e regolamentata. Devono, infatti, essere rispettate tutte le norme stabilite dalla
Debian Policy. Fortunatamente, sono disponibili molti strumenti che agevolano il lavoro dei manutentori. Lo sviluppatore può quindi concentrarsi sulle specifiche del proprio pacchetto e su compiti più complessi, come la correzione degli errori.
Le Policy, un elemento essenziale del progetto Debian, stabiliscono le norme che garantiscono la qualità dei pacchetti e la loro perfetta interoperabilità con il resto della distribuzione. Grazie a queste politiche, Debian rimane coerente nonostante le sue dimensioni gigantesche. Queste Policy non sono scritte sulla pietra, ma sono in continua evoluzione grazie alle proposte formulate sulla mailing list
[email protected]
. Gli emendamenti che sono stati approvati da tutti sono accettati e applicati al testo da un piccolo gruppo di manutentori che non hanno responsabilità editoriale (loro includono solamente le modifiche concordate dagli sviluppatori Debian che sono membri della suddetta lista). È possibile consultare le attuali proposte di modifica sul sistema di tracciamento dei bug:
The Policy provides considerable coverage of the technical aspects of packaging. The size of the project also raises organizational problems; these are dealt with by the Debian Constitution, which establishes a structure and means for decision making. In other words, a formal governance system.
This constitution defines a certain number of roles and positions, plus responsibilities and authorities for each. It is particularly worth noting that Debian developers always have ultimate decision making authority by a vote of general resolution, wherein a qualified majority of three quarters (75%) of votes is required for significant alterations to be made (such as those with an impact on the Foundation Documents). However, developers annually elect a “leader” to represent them in meetings, and ensure internal coordination between varying teams. This election is always a period of intense discussions. The Debian Project leader's (
DPL) role is not formally defined by any document: candidates for this post usually propose their own definition of the position. In practice, the leader's roles include serving as a representative to the media, coordinating between “internal” teams, and providing overall guidance to the project, within which the developers can relate: the views of the DPL are implicitly approved by the majority of project members.
In particolare, i leader hanno un potere reale: i loro voti risolvono le votazioni in pareggio, loro possono prendere ogni decisione che non sia già assegnata ad un'altra autorità e possono delegare parte delle proprie responsabilità.
Since its inception, the project has been successively led by Ian Murdock, Bruce Perens, Ian Jackson, Wichert Akkerman, Ben Collins, Bdale Garbee, Martin Michlmayr, Branden Robinson, Anthony Towns, Sam Hocevar, Steve McIntyre, Stefano Zacchiroli, Lucas Nussbaum, Neill McGovern, Mehdi Dogguy, Chris Lamb, Sam Hartman, and Jonathan Carter.
La costituzione definisce anche il "comitato tecnico". Il principale ruolo di questo comitato è quello di derimere dispute in materia tecnica quando gli sviluppatori interessati non hanno raggiunto un accordo tra di loro. Oltre a ciò, questo comitato svolge un ruolo consultivo per qualsiasi sviluppatore che non riesce a prendere una decisione di cui è responsabile. È importante notare che deve essere comunque interpellato da una delle parti in questione.
Infine, la costituzione definisce la posizione del "segretario del progetto", che si occupa dell'organizzazione delle votazioni relative alle varie elezioni e risoluzioni generali.
The “general resolution” (
GR) procedure is fully detailed in the constitution, from the initial discussion period to the final counting of votes. The most interesting aspect of that process is that when it comes to an actual vote, developers have to rank the different ballot options between them and the winner is selected with a
Condorcet method (more specifically, the Schulze method). For further details see:
Even if this constitution establishes a semblance of democracy, the daily reality is quite different: Debian naturally follows the free software rules of the do-ocracy: the one who does things gets to decide how to do them. A lot of time can be wasted debating the respective merits of various ways to approach a problem; the chosen solution will be the first one that is both functional and satisfying… which will come out of the time that a competent person put into it.
Questo è l'unico modo per guadagnarsi i galloni: fare qualcosa di utile e dimostrare di aver lavorato bene. Molti team "amministrativi" di Debian operano per designazione, preferendo i volontari che hanno già contribuito ed efficacemente dimostrato la loro competenza. Questo metodo è pratico, perché la maggior parte del lavoro fatto da questi team è pubblico, quindi accessibile a tutti gli sviluppatori interessati. Questo è il motivo per cui Debian è descritta come una "meritocrazia".
Questa efficace modalità operativa garantisce la qualità dei contributi forniti dai team Debian «chiave». Questo non è un metodo perfetto e di tanto in tanto qualcuno non accetta questo modo di operare. La scelta degli sviluppatori accolti nei team può apparire un po' arbitraria, o addirittura sleale. Inoltre, non tutti hanno la stessa idea sul servizio richiesto a questi team. Per alcuni, è inaccettabile dover aspettare otto giorni per l'inclusione di un nuovo pacchetto Debian, mentre altri aspettano pazientemente senza problemi anche per tre settimane. Di conseguenza capita spesso ci siano lamentele dagli scontenti sulla «qualità del servizio» di alcuni team.
1.3.2. Il ruolo attivo degli utenti
Ci si potrebbe chiedere se sia rilevante citare gli utenti tra coloro che lavorano all'interno del progetto Debian e la risposta è, definitivamente, si: svolgono un ruolo fondamentale nel progetto. Lungi dall'essere «passivi», alcuni dei nostri utenti utilizzano versioni di Debian in fase di sviluppo inviando, regolarmente, segnalazioni di bug e problemi. Altri vanno anche oltre e propongono idee e miglioramenti, presentando una segnalazione con un livello di gravità "wishlist" (lista dei desideri) o inoltrando correzioni al codice sorgente, dette "patch" (vedi
Sezione 1.3.2.3, «Invio di correzioni»).
1.3.2.1. Segnalazione di bug
Lo strumento fondamentale, utilizzato da gran parte del progetto, per l'invio di bug è il Sistema di Tracciamento dei Bug di Debian (Debian BTS). La parte pubblica (l'interfaccia web) consente agli utenti di visualizzare tutti i bug segnalati, con l'opzione per visualizzare un elenco ordinato di bug selezionati in base a vari criteri, come: pacchetto che ne è affetto, gravità, stato, indirizzo del segnalatore, indirizzo del manutentore incaricato, tag, ecc. È anche possibile consultare l'elenco storico completo di tutte le discussioni riguardanti ciascun bug.
Contemporaneamente, il BTS Debian cbasato su e-mail: tutte le informazioni che memorizza derivano dai messaggi inviati dalle persone coinvolte. Ogni e-mail inviata a
[email protected]
sarà assegnata alla cronologia del bug numero 12345. Le persone autorizzate possono "chiudere" un bug scrivendo un messaggio che descrive i motivi della decisione di chiusura a
[email protected]
(un bug viene chiuso quando il problema indicato è risolto o non è più rilevante). Un nuovo bug viene segnalato inviando una e-mail a
[email protected]
secondo un formato specifico che identifica il pacchetto in questione. L'indirizzo
[email protected]
permette la modifica di tutte le «meta-informazioni» relative a un bug.
Il Debian BTS ha altre caratteristiche funzionali, come ad esempio l'uso di tag per l'etichettatura dei bug. Per maggiori informazioni, vedere
Users can also use the command line to send bug reports on a Debian package with the reportbug
tool. It helps making sure the bug in question hasn't already been filed, thus preventing redundancy in the system. It reminds the user of the definitions of the severity levels, for the report to be as accurate as possible (the developer can always fine-tune these parameters later, if needed). It helps writing a complete bug report, without the user needing to know the precise syntax, by writing it and allowing the user to edit it. This report will then be sent via an e-mail server (by default, a remote one run by Debian, but reportbug
can also use a local server).
Questo strumento si rivolge prevalentemente alle versioni di sviluppo, e con il solo scopo di risolvere i bug. In effetti, i cambiamenti non sono benvenuti in una versione stabile di Debian, con la sola eccezione degli aggiornamenti di sicurezza oppure altri importanti aggiornamenti (se, per esempio, un pacchetto non funziona affatto). La correzione di un bug minore in un pacchetto Debian, aspetterà, perciò, il rilascio della successiva versione stabile.
1.3.2.2. Traduzione e documentazione
Inoltre, i numerosi utenti soddisfatti del servizio offerto da Debian sono interessati a dare un proprio contributo al progetto. Poiché non tutti hanno adeguati livelli di competenza nella programmazione, possono scegliere di aiutare con la traduzione e la revisione della documentazione. Ci sono specifiche mailing list specifiche per varie lingue che coordinano questo lavoro.
1.3.2.3. Invio di correzioni
Gli utenti più avanzati potrebbero essere in grado di fornire una correzione ad un programma inviando una patch.
Una patch è un file che descrive le modifiche da apportare ad uno o più file di riferimento. In particolare, conterrà la lista delle righe da rimuovere o aggiungere al codice, e (talvolta) le righe ricavate dal testo di riferimento, per permettere di identificare nel contesto la modifica da riportare (permettono l'identificazione della posizione delle modifiche se i numeri di riga dovessero essere cambiati).
Lo strumento utilizzato per applicare le modifiche scritte in questo tipo di file si chiama semplicemente patch
. Lo strumento che le crea è chiamato diff
, e si utilizza in questo modo:
$
diff -u file.vecchio file.nuovo >file.patch
Il file file.patch
contiene le istruzioni per modificare il contenuto del file file.vecchio
trasformandolo nel file.nuovo
. Possiamo inviarlo a qualcuno, che lo può quindi utilizzare per ricreare file.nuovo
dagli altri due, in questo modo:
$
patch -p0 file.vecchio <file.patch
Il file, file.vecchio
, è ora identico a file.nuovo
.
In practice, most software is currently maintained in Git repositories and contributors are thus more likely to use git
to retrieve the source code and propose changes. git diff
will generate a file in the same format as what diff -u
would do and git apply
can do the same as patch
.
Mentre l'output di git diff
è un file che può essere condiviso con altri sviluppatori, di solito ci sono modi migliori per inviare le modifiche. Se gli sviluppatori preferiscono ottenere patch via e-mail, solitamente vogliono che tali patch vengano generate con git format-patch
in modo che possano essere integrate direttamente nel repository con git am
. Questo preserva le meta-informazioni dei commit e rende possibile la condivisione di più commit in una volta sola.
Questo flusso di lavoro basato sulle email è ancora popolare, ma la tendenza è quella di sostituito con merge requests (o pull requests) quando il software è ospitato su una piattaforma come GitHub o GitLab — e Debian sta usando GitLab sul suo server salsa.debian.org
. Su questi sistemi, una volta creato un account, si può fare un fork del repository, creando effettivamente una copia del repository nel proprio account, quindi clonando quel repository ed inserendovi le proprie modifiche. Da lì, l'interfaccia web vi suggerirà di inviare una richiesta di fusione, notificando agli sviluppatori le vostre correzioni, facilitando la revisione e l'accettazione delle vostre modifiche con un solo clic.
1.3.2.4. Altri modi per contribuire
Non solo gli utenti stessi sono di aiuto su argomenti tecnici che li riguardano direttamente, ma discutono anche relativamente ai modi migliori per contribuire al progetto Debian e aiutarlo a progredire — discussioni che spesso portano a proposte di miglioramento.
Dal momento che Debian non spende fondi per auto-promuoversi con campagne di marketing, i suoi utenti svolgono un ruolo essenziale nella sua diffusione, garantendo la sua fama attraverso il passaparola.
Questo metodo funziona piuttosto bene, dal momento che i fan di Debian si trovano a tutti i livelli della comunità del software libero: a partire dalle feste di installazione (workshop in cui gli utenti esperti assistono i nuovi arrivati nell'installazione del sistema) organizzate dai locali
LUG o «Linux User Group» (gruppi di utenti Linux), fino agli stand di associazioni ai grandi convegni tecnologici che si occupano di Linux, ecc.
I volontari realizzano poster, opuscoli, adesivi ed altro materiale promozionale utili al progetto, che mettono a disposizione di tutti e che Debian fornisce, gratuitamente, sul proprio sito web e sul suo wiki:
1.3.3. Teams, Blends, and Sub-Projects
From the start, Debian has been organized around the concept of source packages, each with its maintainer or group of maintainers. Many work teams have emerged over time, ensuring administration of the infrastructure, management of tasks not specific to any package in particular (quality assurance, Debian Policy, installer, etc.), with the latest series of teams growing up around sub-projects and blends.
1.3.3.1. Existing Debian Sub-Projects and Blends
A ciascuno la sua Debian! Un sottoprogetto è un gruppo di volontari interessati ad adattare Debian ad esigenze specifiche. Oltre alla selezione di un sottogruppo di programmi destinati ad un particolare ambito (istruzione, medicina, creazione di contenuti multimediali, ecc.), i sottoprogetti si occupano anche di migliorare i pacchetti software esistenti, creare quelli mancanti, adattare il programma di installazione, creare documentazione specifica ed altro ancora. Sebbene una "miscela" potrebbe non essere esattamente la stessa, funziona in modo abbastanza simile e cerca di fornire una soluzione pronta all'uso per gruppi di persone con esigenze specifiche. Si potrebbe dire che "Debian Pure Blends" è il successore dei sottoprogetti.
Here is a small selection of current released Debian Pure Blends:
Debian Junior, by Ben Armstrong, offering an appealing and easy to use Debian system for children;
Debian Edu, by Petter Reinholdtsen, focused on the creation of a specialized distribution for the academic and educational world;
Debian Med, di Andreas Tille, dedicata al settore medico;
Debian Multimedia, which deals with audio and multimedia work;
Debian GIS, which takes care of Geographical Information Systems applications and users;
Debian Astro, per astronomi professionisti e hobbisti;
Debian Science, lavora per fornire a ricercatori e scienziati una migliore esperienza nell'utilizzo di Debian;
Freedombox, realizzato per sviluppare, progettare e promuovere server personali con software libero per comunicazioni private e personali;
Debian Games, fornisce giochi in Debian, da quelli arcade e di avventura a quelli di simulazione e strategia;
DebiChem, indirizzata alla chimica, fornisce suite e programmi per chimici.
The number of projects will most likely continue to grow with time and improved perception of the advantages of Debian Pure Blends. Fully supported by the existing Debian infrastructure, they can, in effect, focus on work with real added value, without worrying about remaining synchronized with Debian, since they are developed within the project.
1.3.3.2. Team amministrativi
La maggior parte dei team amministrativi sono piuttosto chiusi e reclutano nuovi volontari solo per cooptazione. Il modo migliore per poter entrare a far parte di uno di questi team è quello di assistere in modo intelligente i componenti attuali, dimostrando di aver capito gli obiettivi ed i metodi operativi del team.
Gli ftpmasters hanno il compito di gestire l'archivio ufficiale dei pacchetti Debian. Essi gestiscono il programma che riceve e memorizza automaticamente i pacchetti trasmessi dagli sviluppatori, dopo alcuni controlli, sul server di riferimento (ftp-master.debian.org
).
Essi devono anche verificare le licenze di tutti i nuovi pacchetti, per garantire che Debian possa distribuirli, prima della loro inclusione nell'elenco dei pacchetti esistenti. Quando uno sviluppatore vuole rimuovere un pacchetto, si rivolge a questo team attraverso il sistema di tracciamento dei bug e lo "pseudo-pacchetto" ftp.debian.org.
Il team
Debian System Administrators (
DSA) (
[email protected]
), come ci si potrebbe aspettare, è responsabile dell'amministrazione dei server utilizzati dal progetto. Assicura il funzionamento ottimale di tutti i servizi di base (DNS, Web, e-mail, shell, ecc.), installa i software richiesti dagli sviluppatori Debian e prende tutte le precauzioni necessarie per garantire la sicurezza dei sistemi.
I listmaster amministrano il server di posta che gestisce le mailing list. Essi creano nuove liste, gestiscono i messaggi rimbalzati (segnalazioni di mancata consegna) e mantengono i filtri antispam (e-mail indesiderate).
Each specific service has its own administration team, generally composed of volunteers who have installed it (and also frequently programmed the corresponding tools themselves). This is the case for the bug tracking system (BTS), the package tracker,
salsa.debian.org
(GitLab server, see sidebar
STRUMENTO GitLab, Git repository hosting e molto altro), the services available on
qa.debian.org
,
lintian.debian.org
,
buildd.debian.org
,
cdimage.debian.org
, etc.
1.3.3.3. Team di sviluppo, Team trasversali
A differenza dei team amministrativi, quelli di sviluppo sono decisamente più aperti, anche a collaboratori esterni. Anche se Debian non ha una vocazione per creare software, il progetto ha bisogno di alcuni programmi specifici per raggiungere i suoi obiettivi. Naturalmente sviluppati sotto una licenza per software libero, questi strumenti fanno uso di metodi provati in altri settori del mondo del software libero.
Debian ha sviluppato da sé poco software, ma certi programmi hanno assunto un ruolo importante, e la loro fama si è diffusa ben oltre i confini del progetto. Buoni esempi sono dpkg
, il programma Debian per la gestione dei pacchetti (è, infatti, l'abbreviazione di Debian PacKaGe, e generalmente si pronuncia "dee-package"), e apt
, uno strumento per installare automaticamente qualsiasi pacchetto Debian e i pacchetti dai quali dipende, garantendo la coesione del sistema dopo un aggiornamento (il suo nome è l'acronimo di Advanced Package Tool, Strumento avanzato di gestione dei pacchetti). I loro team sono, tuttavia, molto più piccoli, poiché per la comprensione complessiva delle operazioni svolte da questo tipo di programmi è necessaria una capacità di programmazione di livello piuttosto elevato.
Il team più importante è probabilmente quello del programma di installazione di Debian,
debian-installer
, che dal suo concepimento nel 2001 ha compiuto un lavoro gigantesco. Sono stati necessari numerosi collaboratori, poiché è veramente difficile scrivere un programma unico in grado di installare Debian su una dozzina di architetture differenti. Ognuna con un proprio meccanismo per l'avvio e un proprio bootloader. Tutto questo lavoro è coordinato dalla mailing list
[email protected]
, sotto la direzione di Cyril Brulebois.
Il team (molto piccolo) del programma debian-cd
deve perseguire un obiettivo ancora più modesto. Molti "piccoli" collaboratori sono ognuno responsabile della propria architettura, dal momento che lo sviluppatore principale non può conoscere tutte le particolarità, né il modo esatto per avviare il programma di installazione dal CD-ROM.
Molti team devono collaborare con gli altri in attività di impacchettamento:
[email protected]
cerca, ad esempio, di assicurare la qualità del progetto Debian a tutti i livelli. La mailing list
[email protected]
sviluppa le Policy Debian secondo tutte le proposte ricevute. I team incaricati di ogni architettura (
debian-architettura@lists.debian.org
) compilano tutti i pacchetti, adattandoli se richiesto, alle particolarità di ogni architettura.
Altri team gestiscono i pacchetti più importanti al fine di garantirne la manutenzione in modo da non assegnare un carico troppo pesante su un solo paio di spalle; questo è il caso della libreria C
[email protected]
, del compilatore C sulla mailing list
[email protected]
oppure di Xorg sulla
[email protected]
(questo gruppo è anche conosciuto come X Strike Force).