Journal : L'âge moyen d'une ligne de code d'XviD
Posté par Edouard Gomez (page perso, ) le 20 juillet 2005
Le fait d'exporter xvidcore vers un dépôt de source Mercurial (voir mon précédent journal) m'a permis de sortir des stats sur l'âge moyen d'une ligne de code du projet.
Le projet est a 25% constitué de code provenant du premier patchset de la branche devapi4 (branche forké a partir de la version 0.9.0). Je me suis un peu senti vexé par cette statistique qui semble signifier qu'on s'est un peu branlé la nouille sur le projet depuis, car on a touché qu'a 75% du code source depuis la patchset 0.
J'ai un peu modifié Mercurial pour me sortir des temps Unix dans la sortie de la commande log, et j'ai donc calculé l'âge moyen d'une ligne de code (c|asm|h) d'xvid. Le résultat est sans appel:
Thu Jun 3 21:13:20 2004
XviD a drôlement peu évolué depuis le cycle de versions 1.0.x. J'en suis d'autant plus touché que j'ai quitté ce projet en Janvier il me semble, et que depuis, c'est un peu le néant coté commit. Il semblerait que les développeurs restant ne font plus rien. Plutôt dommage étant donné que le projet est intéressant et que le travail ne manque pas.
Addendum: les scripts me permettant de déduire l'âge moyen d'une ligne de code.
La date obtenue n'est pas super précise (erreur d'arrondi flottant), mais ça permet de donner au moins le triplet année/mois/jour moyen sans trop d'incertitude.
Biensûr tout ceci aurait pu être fait en Python, mais je ne connais pas Python :-)
Mon dépôt xvid converti utilisé pour ce test est disponible sur http://ed.gomez.free.fr/vrac/xvidcore-mercurial.tar.bz2(...)
Le projet est a 25% constitué de code provenant du premier patchset de la branche devapi4 (branche forké a partir de la version 0.9.0). Je me suis un peu senti vexé par cette statistique qui semble signifier qu'on s'est un peu branlé la nouille sur le projet depuis, car on a touché qu'a 75% du code source depuis la patchset 0.
J'ai un peu modifié Mercurial pour me sortir des temps Unix dans la sortie de la commande log, et j'ai donc calculé l'âge moyen d'une ligne de code (c|asm|h) d'xvid. Le résultat est sans appel:
Thu Jun 3 21:13:20 2004
XviD a drôlement peu évolué depuis le cycle de versions 1.0.x. J'en suis d'autant plus touché que j'ai quitté ce projet en Janvier il me semble, et que depuis, c'est un peu le néant coté commit. Il semblerait que les développeurs restant ne font plus rien. Plutôt dommage étant donné que le projet est intéressant et que le travail ne manque pas.
Addendum: les scripts me permettant de déduire l'âge moyen d'une ligne de code.
# Annoter toutes les lignes.
$ (for i in `hg manifest |grep -E "\.(c|h|asm)$" | awk '{print $3 }'` ; do hg annotate $i |cut -d ':' -f 1 ; done ) > annotations.txt
# Chopper la date de chaque commit (j'ai patché mercurial/commands.py pour me donner un temps unix au lieu de time.asctime)
$ hg log | grep ^date: | awk 'BEGIN{i=0;} { printf("date[%3s] = %s;\n", i, $2); i++;}' |less > patches-date.dat
# Ecrire le script awk qui va faire le calcul
$ cat > losc-age.awk << EOF
BEGIN {
EOF
$ cat patches-date.dat >> losc-age.awk
$ cat >>losc-age.awk << EOF
for (i=0; i<444; i++) {
patch[i] = 0;
}
average = 0;
lines=0
}
{
patch[$1]++;
lines++;
}
END {
for (i=0; i<444; i++) {
average += patch[i]*date[i]/lines;
}
printf("%s\n", average);
}
EOF
# Et on trouve l'age moyen
$ awk -f losc-age.awk annotations.txt
La date obtenue n'est pas super précise (erreur d'arrondi flottant), mais ça permet de donner au moins le triplet année/mois/jour moyen sans trop d'incertitude.
Biensûr tout ceci aurait pu être fait en Python, mais je ne connais pas Python :-)
Mon dépôt xvid converti utilisé pour ce test est disponible sur http://ed.gomez.free.fr/vrac/xvidcore-mercurial.tar.bz2(...)
> Lire le journal (23 commentaires, moyenne: 3,8).
Vous avez demandé le commentaire #603046.



les jeunots sont des feignasses, c'est bien connu (no joke)
Je ne ricane pas je fais allusion à ma propre expérience militante. Après mon départ, le changement générationnel a été très net dans une association dans laquelle j'étais fichtrement investi. A mes yeux, après mon départ, la recherche du bénéfice immédiat (notoriété, activité de représentation) est passé au premier plan par rapport au boulot de grouillot (mises sous plis, composition de tracts, tractages) qui me semblait essentiel.
Il y a peut-être un anti-effet de Stockholm aussi, avec le recul, on mesure les heures et semaines consacréss (gâchées ?) qui ne reviendront plus et on s'estime toujours un peu floué.
Un plus vieux con que moi encore me dit aussi que la bataille des enjeux collectifs est perdu, et qu'un danger public que sarko a un boulevard devant lui, l'individualisme n'est plus seulement "contemporain", il est généralisé et enraciné dans les consciences.
Pour moi, la solution a été radicale : je me suis éloigné significativement demon ancienne structure pour ne pas 1°) me causer du chagrin bétement 2°) être tenté d'invectiver mes successeurs qui faisaient ce qu'ils pouvaient/voulaient. Par contre, je ne suis toujours pas passé à autre chose, un rien d'appréhension peut-être...
Bref, je n'ai pas de commentaire à faire sur la mêthode d'évaluation mais je voulais te communiquer mes sentiments sur ce sujet. Mixed feelings, indeed.
Ceci étant dit, méga clap-clap-clap àtoi sur la qualité de Xvid !! C'est un codec brillant et je pense m'en servir abondamment prochaîenement pour les videos de mon mariage (dv --> avi//Xvid).
bref, merci pour tout Edouard !!
Fraternellement,
Yoj'
[^]Re: les jeunots sont des feignasses, c'est bien connu (no joke)
Je suis pas tout a fait d'accord avec toi, je vois pas mal de gens après quelques années partir sans avoir fait l'effort d'expliquer leur projet, leur vision. Un peu comme : "tiens voila le bébé et tu te demerdes".
je pense qu'il est plus facile de repartir de 0 que de continuer un travail sans avoir intégré le contexte.
Je ne sais pas comment ca s'est passé avec toi Edouard mais si tu veux que ton projet continu a vivre, il faut que tu trouves surtout une personne hyper motivée pour apprendre et pas forcement un dieu du code car coder ca s'apprend. Une personne peu suffir pour fédérer un ensemble de compétence autour d'un projet.
[^]Re: les jeunots sont des feignasses, c'est bien connu (no joke)
>Je ne sais pas comment ca s'est passé avec toi Edouard mais si tu veux que ton projet continu a vivre, il faut que tu trouves surtout une personne hyper motivée pour apprendre et pas forcement un dieu du code car coder ca s'apprend. Une personne peu suffir pour fédérer un ensemble de compétence autour d'un projet.
Bah on a un chan IRC #xvid@freenode.org qui se voulait orienté developpeur. Au final, la notoriété d'XviD faisant son chemin, le chan s'est plutot orienté "utilisateur fan de la premiere heure". Donc de ce coté là, j'ai pas pu en tirer grand chose. Ensuite dans la communauté Doom9.org, y'a un tas de fanatiques lunatiques (je suis un peu méchant, mais je trouve que ces geeks butinent un peu tous les codecs, et n'hesitent pas à changer au lieu de fournir des efforts pour améliorer leur préféré du moment) qui s'extasient sur XviD mais qui dès qu'il s'agit de contribuer, hop deviennent invisibles. Donc parmi les gens plutôt môtivés auquels j'avais accès, personne n'était apte a reprendre.
Apres plus de 6mois où je disais a qui le voulait que j'allais partir, j'ai commencé à prévenir les gens qui m'envoyaient des patchs regulierement: "je vais arréter de maintenir XviD, merci de commencer a forwarder systèmatiquement sur xvid-devel pour que quelqu'un prenne en charge le patch". Puis biensur, appel aux autres dev de la xvid-team pour qu'une reprise du flambeau s'opère...
Au vu des maigres résultats, j'ai fais ma derniere release pour ne pas partir comme un sauvageon en laissant un CVS dans un état inconnu. Je pouvais pas faire beaucoup mieux.