Matthieu Caneill Lundi 17 mars 2014 RICM5 - Polytech Grenoble _,met$$$$$gg. ,g$$$$$$$$$$$$$$$P. ,g$$P"" """Y$$.". ,$$P' `$$$. ',$$P ,ggs. `$$b: `d$$' ,$P"' . $$$ Debsources: $$P d$' , $$P Live and Historical Views on $$: $$. - ,d$$' Macro-Level Software Evolution $$; Y$b._ _,d$P' Y$$. `.`"Y$$$$P"' `$$b "-.__ `Y$$b `Y$$. `$$b. `Y$$b. `"Y$b._ `"""" _________________ < cool slides bro > ----------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || Sommaire : 1/ Debsources : contexte 2/ Améliorations 3/ Framework de recherche 4/ Métriques observées 5/ Écriture de l'article 6/ Résultats 0 -- Introduction - étude sur l'évolution du code source libre - niveau macroscopique - au contraire de l'étude du code d'un projet - système d'exploitation Debian - environ 20 000 paquets source - environ 1000 développeurs "officiels", et beaucoup d'autres contributeurs - existant depuis 1993 - it just works™ (upstream d'Ubuntu, Linux Mint, TAILS ...) > combien y a-t-il de lignes de code derrière un système Debian complet ? > quels langages de programmation évoluent les plus rapidement ? > quel est le fichier le plus dupliqué dans l'archive Debian ? 1 -- Debsources : contexte - infrastructure + application web - visualisation du code source des paquets Debian - http://sources.debian.net - instance officielle du service - distributions: oldstable, stable, testing, unstable, experimental, ... - technologies : python (flask, sqlalchemy), postgresql, debian tools - quelques chiffres - taille sur le disque : 600 Go - base de données : 50 Go - requêtes par mois : 90 000 - nombre de versions de paquets : 81 582 - nombre de fichiers : 33 525 546 2 -- Améliorations Depuis septembre 2013 : - suite de tests complète - recrée un sous-ensemble de l'archive Debian, recrée une base de données - l'updater et l'application web sont testés dans cet environnement - intégration continue, l'ensemble du processus est testé - système de plugins - modèle - classe File : chaque fichier a une entrée dans la base de données - classes Suite* : les différentes versions de Debian - classes Binary* : les correspondances avec les paquets binaires - application - affichage de statistiques (http://sources.debian.net/stats/) sur le système - affichage de statistiques sur les paquets sources - nombre de lignes de code par langage - taille - diverses modifications 3 -- Framework de recherche - majorité des logiciels libres réunis au même endroit - mis à jour 4 fois par jour - dans un format standard (paquets Debian) - système de plugins - permet de produire des données statistiques sur les paquets - ajouter un plugin = quelques lignes de Python - plugins courants : sloccount, ctags, metrics (disk usage, #files), checksums - environnement de recherche simple à utiliser $ git clone https://alioth.debian.org/anonscm/git/qa/debsources.git $ cd debsources $ git apply myplugin.patch $ bin/dbadmin --create postgresql:///debsources $ bin/update-debsources # creates the environment and computes the plugin data $ web/run_webapp.py # starts the web application 4 -- Métriques observées Pour chaque paquet : - taille sur le disque - nombre de paquets, nombre de fichiers, évolution entre les suites - lignes de code par langage, et évolution (absolue, relative) - nombre de ctags 5 -- Écriture de l'article - (en cours d'écriture) - conférence Empirical Software Engineering and Measurement - 18/19 septembre 2014 - Turin, Italie - les résultats sont - reproductibles : en installant une instance de Debsources - à jour : les tableaux et graphiques sont créés à la volée et inclus dans l'article à chaque recompilation - calculs : scripts Python, requêtes SQL 6 -- Résultats (1/2) - conformes aux précédentes études réalisées sur Debian - corrélation entre espace disque, nombre de paquets, nombre de fichiers, nombre de ctags et nombre de lignes de code - le langage C continue d'évoluer, mais moins vite que C++, Java, Python, ... - l'organisation des paquets dans Debian est - souple : différentes sources de l'archive, paquets externes, ... - résistante à l'augmentation du nombre de paquets - système de dépendances complexe mais qui évite la redondance - 20 000 paquets source = 20 000 briques de Lego compatibles entre elles 6 -- Résultats (2/2) - combien y a-t-il de lignes de code derrière un système Debian complet ? > presque 1 milliard (!) dans Debian unstable - quels langages de programmation évoluent les plus rapidement ? > Java, Python, Ruby - quel est le fichier le plus dupliqué dans l'archive Debian ? > la licence GPL-3 ___________________________ / Merci de votre attention. \ | | \ Questions ? / --------------------------- \ \ .--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/