Ce que j’ai appris pendant mes 6 mois de stage sur Koha

Hea, Koha usage statistic gathering platform

 

 

Chaque été à BibLibre nous accueillons des développeurs stagiaires qui travaillent directement pour les différentes communautés dont nous faisons partie. Julian Fiol, un étudiant de Polytech Marseille, a ainsi passé 6 mois chez nous pour travailler sur Koha.

J’ai effectué mon stage de fin d’études d’ingénieur Informatique à Polytech Marseille chez BibLibre entre le 9 mars 2015 et le 28 août 2015 (6 mois) au sein du pôle développement et voici un petit récapitulatif de mes travaux.

J’ai travaillé sur Koha, le SIGB libre (Système Intégré de Gestion de Bibliothèque) utilisé par plusieurs centaines de bibliothèques à travers le monde.

Mon stage s’est orienté sur 3 points :

Tests Unitaires

Une partie des modules de Koha manque de tests unitaires pour valider complètement le code.

Pendant les 2 premiers mois de ce stage, j’ai ajouté 1623 nouveaux tests unitaires à Koha, dans 8 modules différents, permettant de valider le code déjà écrit. Ces tests ont permis de passer la couverture totale de Koha de 48,4% à 59,1%.

Ces modules sont les suivants :

Modules Bug (Bugzilla)
C4::Boolean 13814
Koha::Borrower 13882
C4::OAI::Sets 13940
C4::Accounts 13942
C4::Review 13969
C4::Creators::Lib 14059
C4::UsageStats 14097
C4::External::OverDrive 14147

Cela a été un bon moyen pour moi de découvrir le code de Koha, de comprendre l’importance de chaque module et surtout de prendre en main le Perl que je ne connaissais pas avant de commencer ce stage.

J’ai également réalisé un script de coverage (bug 13899), permettant de voir facilement et précisément quels modules et quelles lignes de codes ne sont pas encore couverts à 100% par les tests.

Je me suis ensuite intéressé à l’automatisation de ces tests avec Selenium, Selenium IDE et Cucumber. En effet, pour simuler certaines actions via l’interface de Koha, il est nécessaire de faire un certain nombre d’actions et de clics pouvant rapidement devenir fastidieux.

Cucumber a été retenu par la communauté pour une meilleure lisibilité des tests. J’ai ainsi mis en place l’automatisation de scénarios de tests avec Cucumber (bug 13849) permettant par exemple de créer une biblio.

Optimisation des performances

La deuxième partie de mon stage a consisté en l’étude de l’amélioration des performances de Koha.

J’ai ainsi pu gagner (sur ma machine) :

  • 2 secondes sur le module C4::Circulation en mode Plack (wiki).
  • entre 120 et 1400 ms sur la page de recherche de l’OPAC (bug 14476) en fonction du nombre de résultats trouvés. J’ai également repris un peu le code pour éviter qu’il calcule inutilement les ‘notes’ et ‘subject’ des biblios alors que XSLT s’en occupe déjà (bug 14496).
  • 500 ms sur les pages utilisant des fichiers YAML en mettant en cache ces fichiers (bug 14207).

Cette partie m’a permis de prendre conscience de l’importance d’optimiser son code et de découvrir des outils de profiling tel que Devel::NYTProf.

Hea

La dernière partie de mon stage a été de promouvoir l’utilisation d’Hea, une plate-forme de récupération des statistiques d’utilisation de Koha à travers le monde qui avait été initiée pendant la hackfest Koha à BibLibre en 2014.

J’ai ainsi ajouté la possibilité d’activer ce partage de données dans les paramètres de Koha et dans l’installeur de Koha (bug 14608) et ajouté un cronjob envoyant automatiquement ces statistiques tous les mois (bug 13585).

J’ai également complété le wiki d’Hea pour expliquer quelles données étaient récupérées, prouvant ainsi qu’activer le partage de ses données n’entravait ni l’anonymat des bibliothèques ni de ses utilisateurs.

Pour finir j’ai ajouté le traitement de 4 préférences système à Hea :

  • UsageStatCountry (Pays de la bibliothèque)
  • UsageStatType (Type de la bibliothèque)
  • UsageStatName (Nom de la bibliothèque)
  • UsageStatUrl (Url de la bibliothèque)

UsageStatCountry et UsageStatType ont été ajoutés aux statistiques existantes, tandis que UsageStatName et UsageStatUrl ont été placés sur une page séparée car ce ne sont pas des statistiques en tant que telles.

Ces améliorations ont permis d’augmenter le nombre d’utilisateurs d’Hea de 75 à 251 (au 1er septembre 2015).

Bilan

Ce stage chez BibLibre m’a énormément apporté en termes d’autonomie et de compétences techniques.
N’ayant eu à utiliser quasiment que des logiciels et des langages que je ne connaissais ou ne maîtrisais pas, j’ai beaucoup appris sur Perl, JavaScript, jQuery, AJAX, MySQL, Git (dont je suis devenu totalement fan !), Vim, Bugzilla…

J’ai également pu me rendre compte de l’importance des tests et de l’optimisation de son travail, ce qui sera très utile pour la suite, pour produire du code propre et performant.

Ces 6 mois m’ont permis d’approcher le monde du logiciel libre et du développement communautaire avec ses avantages et inconvénients.

Il permet d’accomplir plus de travail, plus rapidement avec l’aide précieuse de la communauté. Il permet également une meilleure maintenance du logiciel car tout le monde peut y participer. Un certain nombre de lignes directrices ont quand même été mises en place pour que l’ont puisse se repérer dans un code plus facilement, que chacun ne code pas “à sa manière”.

Par contre, l’inconvénient est que le travail communautaire est basé sur le partage d’idées et d’opinions ce qui peut ralentir le développement de nouvelles fonctionnalités, le temps que tout le monde se mette d’accord sur la direction à prendre.

En tout cas j’ai été ravi de rejoindre la communauté Koha, et de rencontrer les gens de BibLibre, tous très sympathiques et toujours présents pour nous aider ! Je recommande vivement cette entreprise en espérant que d’autres étudiants de Polytech continueront à venir faire leur stage chez BibLibre 🙂

Share

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *