Dans le cadre de l'activité d'Antelink, nous avons dû utiliser le MetaCPAN afin d'indexer et qualifier le contenu CPAN dans Antepedia, notre base de connaissance de composants open source.
Nous proposons cette présentation afin de montrer :
* une utilisation concrète du MetaCPAN à une grande échelle dans un environnement de production
* l'intêret d'un tel projet par rapport à l'API officielle de CPAN
* comment nous avons travaillé de pair avec la communauté Perl autour de ce projet.
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
1. Journée Perl 2012 - Strasbourg
Retours d'expérience sur une utilisation
avancée du MetaCPAN
Erwan 'Labynocle'' Ben Souiden - erwan@aleikoum.net - @labynocle - Antelink
2. ■▪▪▪▪▪▪▪▪▪▪
Plan
Antepedia
CPAN
MetaCPAN
BackPAN
La communauté
Exemple avec Dancer
Pour quelques stats en plus...
Insolites vu dans CPAN
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 2
3. ▪■▪▪▪▪▪▪▪▪▪
Antepedia
La plus grande base de
connaissance de composants
Open Source
+1M de projets (+2M avec les projets Github)
+500M de fichiers
+1k projets ajoutés quotidiennement
+44To de données stockées
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 3
4. ▪■▪▪▪▪▪▪▪▪▪
Antepedia
De quelles informations avons nous besoin ?
Une description du projet
L'URL du projet
La licence du projet
Les archives des releases avec leurs numéros de
version et leurs dates
L'adresse du repository
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 4
5. ▪■▪▪▪▪▪▪▪▪▪
Antepedia
Le cas Perl
Diagramme des langages
les plus utilisés
stats venant du Tiobe Index 2011 (par Tiobe Software)
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 5
6. ▪▪■▪▪▪▪▪▪▪▪
CPAN
Comprehensive Perl Archive Network - www.cpan.org
héberge tous les modules et distributions Perl...
… ainsi que des informations/métadonnées les
concernant
maintenu par la communauté et soutenu par de
nombreuses entreprises
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 6
7. ▪▪■▪▪▪▪▪▪▪▪
CPAN
Comment récupérer les informations automatiquement ?
via le site : www.cpan.org
via l'API CPAN : search.cpan.org/api
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 7
8. ▪▪■▪▪▪▪▪▪▪▪
CPAN
Y'a t'il toutes les informations dont nous avons besoin ?
Exemple avec Dancer :
Une description du projet
A minimal-effort oriented web application framework
L'URL du projet
???
La licence du projet
The Perl 5 License (Artistic 1 & GPL 1)
Les archives des releases avec leurs numéros de
version et leurs dates
Dancer-1.3095.tar.gz - version ??? – 2012/04/01
Dancer-1.3094.tar.gz - version ??? – 2012/03/31
L'adresse du repository
http://github.com/sukria/Dancer
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 8
9. ▪▪■▪▪▪▪▪▪▪▪
CPAN
API « officielle »
Support du format JSON et XML
Certaines informations ne sont pas retournées (license,
repository) par l'API...
… et certaines informations manquent (URL du projet)
API moins souple au niveau des requêtes (3 types de
requêtes)
Ne retourne pas les informations sur les distributions
qui ont un status « backpan »
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 9
10. ▪▪▪■▪▪▪▪▪▪▪
MetaCPAN
Alternative Open Source et gratuite à search.cpan.org
… s'appuyant sur les données déclarées
… ainsi que les données provenant d'autres sites
(ex : Github)
Depuis 2010
2 contributeurs principaux mais plus de 40 participants
Un frontend : www.metacpan.org
Et une API MetaCPAN dédiée : api.metacpan.org
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 10
11. ▪▪▪■▪▪▪▪▪▪▪
MetaCPAN
Pourquoi l'API MetaCPAN a des résultats plus riches ?
Toutes les informations sont présentes... et même plus !
Retourne les informations sur des distributions qui ne sont
plus sur le CPAN
L'API est beaucoup plus souple en permettant de lancer
des requêtes très complexes et pointues
Support de la recherche *
Support du format JSON
Le contenu du MetaCPAN est mis à jour toutes les heures
et regarde le contenu des distributions (META.json)
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 11
12. ▪▪▪■▪▪▪▪▪▪▪
MetaCPAN
illustration de xkcd.org
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 12
14. ▪▪▪■▪▪▪▪▪▪▪
MetaCPAN
Passage à l'échelle ?
Une seule règle d'utilisation : BE POLITE
Problèmes avec les requêtes qui retournent beaucoup de résultats
Les requêtes de type search * sont trop lourdes
Tuning des paramètres (size, fields)
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 14
15. ▪▪▪■▪▪▪▪▪▪▪
MetaCPAN
www.elasticsearch.org
Moteur de recherche distribué, RESTful
écrit en JAVA
MetaCPAN s'appuie sur elasticsearch pour la recherche
paginée et permettre le passage à l'échelle
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 15
16. ▪▪▪▪■▪▪▪▪▪▪
BackPAN
Ce qui est sur le CPAN n'y reste pas forcément !
BackPAN – backpan.perl.org – est un mirror CPAN où
aucun contenu n'est effacé
En mergeant le contenu BackPAN et celui de notre mirroir
CPAN, on couvre toute l'histoire de Perl !
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 16
17. ▪▪▪▪▪■▪▪▪▪▪
CPAN dans Antepedia
Le process d'intégration du CPAN dans Antepedia :
Découverte de tous les projets – via l'API MetaCPAN
Récupération des informations pour chaque projets trouvés – via
l'API MetaCPAN
Download des distributions associées à chaque projet – via le
miroir CPAN d'Antelink
Extractions des distributions
Si déclaré : dump du repository (GIT,SVN ou CVS)
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 17
18. ▪▪▪▪▪▪■▪▪▪▪
La communauté
Un travail continu avec la communauté
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 18
19. ▪▪▪▪▪▪▪■▪▪▪
Exemple avec Dancer
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 19
20. ▪▪▪▪▪▪▪■▪▪▪
Exemple avec Dancer
Archive d'une distribution
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 20
21. ▪▪▪▪▪▪▪■▪▪▪
Exemple avec Dancer
Fichier provenant d'une distribution
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 21
22. ▪▪▪▪▪▪▪■▪▪▪
Exemple avec Dancer
Fichier provenant du repository déclaré
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 22
23. ▪▪▪▪▪▪▪▪■▪▪
Bilan
Le projet MetaCPAN a permis
d'avoir un point d'entrée unique et efficace pour découvrir le contenu
du CPAN...
… mais aussi de qualifier complètement ce contenu
… de façon automatique
ce process tourne aujourd'hui dans notre production
sans interruption
pour les contributeurs Perl, il reste un moyen simple pour la
déclaration et la récupération d'informations
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 23
24. ▪▪▪▪▪▪▪▪■▪▪
Bilan
P o u r A m e lio r e r la q u a lit e d e s
in fo r m a t io n s ,
U t ilis e z E t a b u s e z d u ME TA C PA N
illustration de xkcd.org
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 24
25. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 25
26. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 26
27. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 27
28. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 28
29. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 29
30. ▪▪▪▪▪▪▪▪▪■▪
Pour quelques stats en plus...
Stats d'exploitation
illustrations par Hasni Alamat
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 30
31. ▪▪▪▪▪▪▪▪▪▪■
Insolites dans CPAN
Notre analyse a révélé plus de 200 distributions en doublon avec les
cas particuliers suivants :
CGI.pm-3.02_alpha.tar.gz et CGI.pm-3.02.tar.gz sont en réalité
identiques : une alpha qui devient la vraie release ?
Gtk2-TrayIcon-0.03.tar.gz est retrouvé en doublon sous le nom Gtk2-
TrayIcon-0.03_foo.tar.gz avec une version 0.02. Version déclarée pas
en phase avec la version de la release ?
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 31
32. Questions
illustration issue de The Big Bang Theory
Retours d'expérience sur une utilisation avancée du MetaCPAN – Journée Perl 2012 32