Qu est ce qu un Développeur Debian? Comment le devient on?
Présentation du speaker : Utilisateur de Debian depuis 2001 Impliqué depuis 2006 Aussi Ubuntu Developer Développeur de Scilab depuis 2006 Co-fondateur de Scilab Enterprises Community manager pour IRILL
C'est quoi une distribution (Linux ou autre)?
Dans le passé Deux acteurs : Upstream L'utilisateur La compilation était faite sur chaque machine par chaque utilisateur
Dans le passé 1) 2) 3) 4) 5) Téléchargement de l'archive Décompresser l'archive./configure make make install Pénible Dépendences de compilation non disponible Souvent des erreurs (symbol not found) Bug de compilation Ca ne passe pas à l'échelle (Debian = 3000 nouvelles versions par mois)
Maintenant
Grâce aux distributions Trois acteurs : Upstream La distribution L'utilisateur
Simplification de la gestion des logiciels Le travail de compilation est fait en amont par des packagers Offre un contexte d'installation et de configuration Le packager, «expert», sert d'interface avec upstream.
C'est quoi Debian?
Un logo super cool!
Distribution créée en 93 par Ian Murdock Objectifs : Rendre GNU/Linux compétitif face aux OS commerciaux
Ca, c'est fait!
Autres objectifs : Facile d'installation Construit de manière collaborative par des experts logiciels Conçu en respectant l'esprit GNU
Une des plus grande bibliothèque : 49 317 packages binaires Source packages Binary packages 30000 25000 20000 15000 10000 5000 0 2.0 2.1 2.2 3.0 3.1 4.0 5.0 6.0
Une release tous les ~24 mois Une douzaine d'architectures officielles : alpha, amd64, arm, armel, armhf, hppa, hurdi386, i386, ia64, kfreebsd-amd64, kfreebsdi386, m68k, mips, mipsel, powerpc, ppc64, s390, s390x, sh4, sparc, sparc64
Prochaine release : wheezy Probablement début de l'année 2013 Actuellement en freeze
Organisation du projet
Debian est une entitée indépendante : Pas d'employé Pas de contraintes liés à un supérieur ou d'intérêts supérieurs Décentralisé => Seule distribution majeure dans ce cas (Ubuntu, Fedora, OpenSuse,...)
Organisation du projet
Mélange de démocratie (DPL) et de doocratie (c'est celui qui fait qui décide)
Régi par trois documents principaux :
Le contrat social Debian restera un projet entièrement libre. Tous les nouveaux développements reviendront à la communauté. La transparence est un bien acquis. Les utilisateurs et le logiciel libre sont les priorités du projet. Exceptions aux principes du logiciel libre (ie : non-free) prévus pour répondre à tous les besoins
Debian Free Software Guidelines (DFSG) Free redistribution. Inclusion of source code. Allowing for modifications and derived works. Integrity of the author's source code (as a compromise). No discrimination against persons or groups. No discrimination against fields of endeavor, like commercial use. The license needs to apply to all to whom the program is redistributed. License must not be specific to Debian, basically a reiteration of the previous point. License must not contaminate other software. The GPL, BSD, and Artistic licenses are examples of licenses considered free.
Constitution Règles définissants les pouvoirs de chacun Responsabilités Rôles Décris les méthodes de vote (Concordet)...
Derivatives
Debian : Source de nombreuses derivatives ~ 140 distributions basées sur Debian Assurances en terme de qualité et de licence Système de base solide Enorme base de packages Un système universel, parfait pour les adaptations
Un exemple : Ubuntu Cible : le desktop Très populaire (beaucoup plus que Debian) Se synchronise après chaque release contre Debian (testing ou unstable) De nombreux DD sont aussi dev Ubuntu Nouveaux packages uploadés dans Debian avant Ubuntu
Des nouvelles problématiques
Debian Maintainer? Contributeur?
Projet ouvert et accessible à tous mais qui nécessite des compétences (et savoir RFTM)
Contributeur «lambda» Soumettre des bugs = contribuer! (surtout avec un patch associé) Command : reportbug
Contributeur «lambda» Traduction (site web, debconf, etc) Communication (DPN, etc)...
Quelques statistiques DD : 963 DD (no-upload) : 5 DM : 167
Web of trust? Signature GPG Clé signée par deux membres du projet Permet un correspondance entre l'identité Internet et réelle nécessaire
Debian Maintainer Donne un status officiel à des contributeurs débutants ou occasionnels Relativement facile et rapide à obtenir mais Ne peut uploader que sur les packages dont il a autorité
Debian Maintainer Doit passer par un DD pour un nouveau package N'a pas accès aux porterboxes Pas d'adresse mail @debian.org Pas de droit de vote
Debian Maintainer On devient DM sur recommandation d'un Debian Developer après avoir fait ses preuves
Devenir Processus : New Member (NM) http://nm.debian.org/
Devenir Avoir été DM précédement Besoin d'être recommandé officiellement par un DD
Devenir Vérifications sur le travail précédement réalisé dans Debian
Série de questions : Licences Organisationnelles => Philosophy and Procedures
Série de questions (suite) : Techniques Exercices => Tasks and Skills
Acceptation (ou refus) par l'application Manager (AM) Validation par le DAM Création des comptes => Bien joué, vous êtes DD!
En quoi consiste le travail de Debian Developer?
Packaging de nouvelles bibliothèques et programmes
Maintenance de ses packages : Nouvelles versions Correction de bugs (packaging ou upstream) Ajout de fonctionnalités (ex : options enablejupiler) Mise à jour des dépendances (transitions) Mise à jour du packages suite aux changements de la policy
Reprise de packages orphelins (RFA) $ wnpp-alert grep ^O O 487125 apt-rdepends -- Recursively lists package dependencies O 580680 enchant -- a wrapper library for various spell checkers O 636410 flip -- convert text file line endings between Unix and DOS formats O 479397 gutenprint -- printer drivers for CUPS O 543847 libcdaudio -- library for CDDA playback control O 555893 libdiscid -- Library for creating MusicBrainz DiscIDs O 674880 libgii -- General Input Interface runtime libraries O 509815 libiodbc2 -- iodbc Driver Manager O 628474 libofa -- Library for acoustic fingerprinting O 646655 libvisual -- Audio visualization framework O 641060 libvisual-plugins -- Audio visualization framework plugins O 658774 openhackware -- OpenFirmware emulator for PowerPC O 668201 php-elisp -- emacs support for php files O 358521 sgml-data -- common SGML and XML data O 666490 svgalib -- console SVGA display libraries O 674887 vbetool -- run real-mode video BIOS code to alter hardware state O 652225 zvbi -- Vertical Blanking Interval (VBI) utilities
Aider d'autres DM/DD (RFH) $ wnpp-alert grep ^RFH RFH 567955 apt-xapian-index -- maintenance tools for a Xapian index of Debian packages RFH 583826 chromium-browser -- Chromium browser RFH 660685 gnupg -- GNU privacy guard - a free PGP replacement RFH 248397 grub2 -- GRand Unified Bootloader RFH 679249 libburn -- library to provide CD/DVD writing functions RFH 534999 libcap2 -- support for getting/setting POSIX.1e capabilities RFH 678382 libept -- High-level library for managing Debian package information RFH 679254 libisofs -- library to create ISO9660 images RFH 419523 libreoffice -- office productivity suite RFH 527482 mtr -- Full screen ncurses and X11 traceroute tool RFH 354174 nas -- The Network Audio System RFH 512360 openldap -- OpenLDAP server, libraries, and utilities RFH 332498 openssl -- Secure Socket Layer (SSL) binary and related cryptographic tools RFH 664595 php5 -- server-side, HTML-embedded scripting language RFH 589632 ppp -- Point-to-Point Protocol (PPP) - daemon RFH 543541 quilt -- Tool to work with series of patches RFH 654116 screen -- terminal multiplexor with VT100/ANSI terminal emulation RFH 640976 serna-free -- Graphical XML editor RFH 676314 spamassassin -- seeking co-maintainers RFH 660687 xml-core -- XML infrastructure and XML catalog file support
Porter Debian sur de nouvelles architectures. Travaux récents sur s390x (ou raspberry, non officiel) Problématique intéressante de bootstrap
Intégrer des nouveaux kernels dans Debian Kfreebsd, HURD Travaux autour du kernel Illumos (anciennement OpenSolaris)
Travail sur l'assurance qualité (QA) Améliorer les outils de QA Améliorer les sites web Debian Rebuild de l'archive périodique (GRID 5000 ou Amazon EC2)...
Participer à la Release Team Travail sur la prochaine release Correction de bugs critiques Gestion des transitions...
Infrastructure Maintenir l'ensemble de la plateforme Porterbox Services du projet
Exemples de tâches dans Debian
Maintenance de Scilab et de ses dépendances Packages : atlas, blas, lapack, arpack-ng, flexdock, jgraphx, jogl{1,2}, etc... Bonne connaissance de leur fonctionnement et bugs Plus d'impact d'utiliser mon adresse @debian.org Profite des outils de QA de Debian Intéressant pour mon employeur
Un de mes toy projects Recompiler l'ensemble de Debian avec un nouveau compilateur C/C++/ObjC Gcc : compilateur principal (unique?) dans Debian Propose d'utiliser clang à la place (basé sur LLVM)
Mise en place d'une infrastructure parallèle
Mise à jour des build chains pour recompiler les packages avec un autre compilateur : /usr/bin/cc / /usr/bin/c++
Découplage de gcc dans Debian Discussion pour faire un objectif officiel du projet : Intégration dans la policy Debian En faire un release goal pour Jessie ou Jessie+1
Comment commencer?
Start small! Aider sur des packages RFA/RFH Corriger des bugs Proposer des nouveaux packages (mentor) Trouver un mentor dans le projet Et surtout : Don't panic! Ne pas complexer!
Pour celà Lire les docs S'inscrire sur des listes de diffusion Regarder comment Debian fonctionne (technique et social) Participer à des conférences Debian
Pub : mini debconf à Paris 24 et 25 novembre 2012 A l'epita Plus d'infos sur : http://wiki.debconf.org/wiki/miniconf-paris/2012 FOSDEM : Cross distro room Debconf 13 / Juillet 2013 : en Suisse
Questions? Remarques? Troll? (+1) Remerciement à Stefano Zacchiroli