Skip to content
Tags

,

Nombre de paquets et délai de publication dans Debian

5 avril 2012

Tout philosophe écologiste conviendrait aisément qu’il est plus difficile de bouger une baleine obèse qu’un canari chétif. Il en va des projets informatiques comme de mère Nature : plus la taille augmente et moins l’animal est véloce. Appliqué à une distribution Linux, le problème pourrait se résumer ainsi : plus le nombre de paquets est grand, plus les dépendances sont complexes et plus il y a des chances d’avoir des bugs. Cela provoque des délais de mise au point qui s’allongent. Pour les dernières publications de Debian, le délai entre deux verssions a été en moyenne de 2 ans mais il a grandement varié par le passé.

délai = f(paquets) ?

Voici le nombre de paquets et la temps passé entre la sortie et la sortie de la version suivante :

Buzz (1.1) : 474 paquets – 178 jours
Rex (1.2) : 848 paquets – 175 jours
Bo (1.3) : 414 paquets – 974 jours
Hamm (2.0) : 1.500 paquets – 228 jours
Slink (2.1) : 2.250 paquets – 502 jours
Potato (2.2) : 2.600 paquets – 703 jours
Woody (3.0) : 8.500 paquets – 1053 jours
Sarge (3.1) : 15.000 paquets – 671 jours
Etch (4.0) : 18.000 paquets – 679 jours
Lenny (5.0) : 28.000 paquets – 721 jours

Après le traumatisme de la douloureuse publication de Sarge (la durée de Woody est très importante parce qu’il a été difficile de sortir Sarge), ne pas faire trop durer la préparation des versions futures était dans toutes les têtes. Une image valant mille mots et économisant mon clavier, je vous invite à regarder ci-dessous.


Les croix rouges sont les premières publications (jusqu’à Woody incluse) ; les croix bleues sont Sarge, Etch et Lenny. Les courbes sont des estimations de régression pour chacun des deux ensembles.

Première période :

g(x) = 19,29 * sqrt(x * 0,45) - 113,34

Seconde période :

h(x)= 0,004 * x + 610

(En réalité, le logiciel ayant fait les calculs a ajouté plein d’autres chiffres après la virgule mais c’est probablement pour permettre au processeur de chauffer un peu plus. Ou pour tenter de m’impressionner.)

J’ignore si des résolutions officielles ont été prises après la publication de Sarge. En revanche, la volonté d’améliorer la communication entre des développeurs a été considérée comme une voie d’amélioration par plusieurs chefs de projet Debian successifs : par exemple, la volonté d’avoir des équipes pour maintenir des ensembles de logiciels plutôt qu’un personne seule, la facilitation des NMU. De même, certaines personnes a des postes clé ont été épaulées par d’autres développeurs Debian car c’était un goulot d’étranglement. À ma connaissance (qui est très parcellaire sur le sujet), les réponses se sont concentrées sur l’organisation humaine plutôt que sur les critères techniques, avec succès.

Sources

Le nombre de paquet et le calcul des durées de chaque version a été calculé à partir de l’historique de la distribution sauf pour Lenny. Le nombre de paquet étant absent de l’annonce lors de sa sortie, le nombre de paquets de Lenny a été récupéré en enregistrant la page listant l’ensemble des paquets de Lenny et un bon vieux grep "<dt><a href=" allpackages.htm |wc -l sur le fichier enregistré. Soit 28.057, arrondi à 28.000.

Les calculs de régression et la création du graphique ont été faites avec gnuplot (version 4.4 patchlevel 0, disponible dans testing actuellement) et le contenu des fichiers suivants :

Fichier de données pour la première période (debstat1.dat)

# stats Buzz à Woody
#nbre_paquets	délai_en_jours
474	178
848	175
974	414
1500	228
2250	502
2600	703
8500	1053

Fichier de données pour la seconde période (debstat2.dat)

# stats Sarge Etch Lenny
#nbre_paquets	délai_en_jours
15000	671
18000	679
28000	721

Script Gnuplot

set output "debian_relation_paquets_temps.png"

set xlabel 'Nombre de paquets'
set ylabel 'Délai de publication (en jours)'

g(x)=a*sqrt(x*b)+c
fit g(x) 'debstat1.dat' using 1:2 via a,b,c

h(x)=d*x+e
fit h(x) 'debstat2.dat' using 1:2 via d,e

plot "debstat1.dat" using 1:2 notitle, g(x) notitle, "debstat2.dat" using 1:2 notitle, h(x) notitle

Si certains sont intéressés par des informations supplémentaires sur les résultats de gnuplot (on ne sait jamais, il y a des malades partout) :

Pour la première fonction :
degrees of freedom (FIT_NDF) : 4
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 135.908
variance of residuals (reduced chisquare) = WSSR/ndf : 18470.9

Final set of parameters Asymptotic Standard Error
======================= ==========================

a = 19.294 +/- 1.858e+13 (9.629e+13%)
b = 0.453438 +/- 8.735e+11 (1.926e+14%)
c = -113.345 +/- 184.2 (162.5%)

Pour la seconde fonction :
final sum of squares of residuals : 7.61151
rel. change during last iteration : -2.9989e-14

degrees of freedom (FIT_NDF) : 1
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 2.7589
variance of residuals (reduced chisquare) = WSSR/ndf : 7.61151

Final set of parameters Asymptotic Standard Error
======================= ==========================

d = 0.00393525 +/- 0.0002866 (7.283%)
e = 610.317 +/- 6.041 (0.9899%)

About these ads

From → Debian

3 Commentaires
  1. olberger permalink

    Dommage de ne pas faire une version en anglais de ton post, ça diffuserait mieux auprès des développeurs non-francophones…

  2. Sytoka permalink

    Squeeze -> 6 février 2011
    Lenny -> 14 février 2009

    Soit vite fait 722 jours, avec ta méthode pour le nombre de paquet appliqué à squeeze, j’arrive à : 35902

    Bref, cela aurait fait un point intéressant sur ta courbe !

    • Avec la façon dont j’ai procédé, il faudra attendre la sortie de la prochaine version (Wheezy) pour pouvoir afficher un nouveau point.
      Les 722 jours sont la durée de vie de Lenny et sont associés aux 28.000 paquets de Lenny. Le point est donc déjà sur la courbe.

      Par contre, on peut se risquer à prédire la sortie de Wheezy :
      h(x) = 0,004 * x + 610 avec x valant 35.900
      h = 753.6

      En arrondissant à 754 jours, on obtient une sortie de Wheezy au 1er Mars 2013.
      (date de sortie de Squeeze + 754 jours)

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d bloggers like this: