CKAN et WordPress, un mariage de raison

15 novembre 2013

Les coulisses du portail de données ouvertes de Montréal

par Stéphane Guidoin, Nord Ouvert.

Le rôle de Nord Ouvert dans la mise en place de la nouvelle mouture du portail de données ouvertes était de servir de support aux équipes internes travaillant sur le sujet. Nous souhaitions apporter nos connaissances de l’outil tout en développant une expertise au sein des équipes de la Ville. Cette approche correspond aussi à une vision souhaitable pour le développement d’outils numériques gouvernementaux : profiter des outils libres existants, développer ces outils grâce à une forte communauté, développer les compétences internes des gouvernements tout en faisant participer les acteurs locaux. Le projet, qui n’est pas terminé, est une belle réalisation de ces objectifs.

La technologie

Le but du projet était de déployer CKAN pour la gestion du catalogue de données tandis que la gestion de contenu (billets de blogue, documentation relative au processus d’ouverture des données, etc.) resterait dans WordPress qui jusqu’ici gérait l’ensemble du fonctionnement. Si plusieurs portails de données utilisent CKAN en conjonction avec Drupal, la combinaison avec WordPress est moins fréquente. Nous avons donc du faire nos devoirs pour faire fonctionner ces deux outils ensemble.

En terme de cohabitation, deux options étaient possibles :

  • Faire de WordPress le maître à bord, ayant le contrôle sur l’ensemble des requêtes et incorporant le contenu CKAN. Cette option avait l’avantage de n’avoir à maintenir qu’un canevas et de tirer profit de certaines fonctionnalités de WordPress comme les commentaires. Cela venait au coût d’appels répétés à l’API de CKAN et d’une interdépendance potentiellement difficile à gérer entre les deux outils.
  • Mettre les deux outils côte à côte avec en amont un serveur web en charge de diriger les requêtes en fonction de l’adresse web demandée (fonction de proxy inverse | reverse proxy). Par exemple, les requêtes correspondant à une certaine forme d’adresse URL seraient dirigées vers CKAN, les autres vers WordPress.

Sur la base d’autres exemples, notamment de l’instance de CKAN au Royaume-Uni, nous avons choisi la seconde option et installé le serveur web Nginx en proxy inverse (reverse proxy) pour faire la circulation entre CKAN et WordPress.

CKAN et WordPress ont chacun leurs modèles (templates) et fichiers CSS respectifs. Cela s’est avéré moins difficile à intégrer que prévu.

Les commentaires ont été unifiés avec l’outil de commentaires Disqus. Tous les membres de l’équipe auraient préféré une solution qui ne repose pas sur un prestataire externe, mais dans les circonstances il était difficile de faire autrement. De plus, une solution comme celle implémentée pour les gouvernements du Canada et du Royaume-Uni est peu ergonomique (les commentaires sont sur une autre page) et plus difficile à réaliser avec WordPress qu’avec Drupal.

La suite

Bien que CKAN soit désormais l’outil supportant le portail de données ouvertes, le projet n’est pas terminé. Travailler sur sa mise en oeuvre a permis de souligner combien un portail de données ouvertes est bien plus que de copier des données sur un serveur. Tandis que certains jeux de données évoluent peu dans le temps, d’autres sont mis à jour régulièrement, parfois avec des contraintes particulières.

La suite du projet va donc se pencher sur l’automatisation de la mise à jour des données. Là encore plusieurs options sont possibles, par exemple
l’API de CKAN permet autant de lire le contenu que de le modifier. Il est donc envisageable de voir des applications externes “pousser” du contenu vers CKAN ou déposer des fichiers au besoin.

Un module optionnel de CKAN permet de mettre en oeuvre une stratégie de moissonnage automatique des données, notamment via le standard CSW. Il est également possible de faire des modules de moissonnage spécifiques pour répondre à des besoins particuliers.

Les prochaines étapes viseront donc à évaluer ces options et les mettre en place, et ce dans un objectif de gérer un plus grand volume de données sans pour autant augmenter l’effort de travail.

Suite au prochain épisode…