Intercept Interview 01: développeur utilisant un jeu de données

2019-11-10T23:00:00Z
Script de l’interview

A propos de toi

Q: Quel est ton background ?

R: Je suis développeur depuis la naissance (classe de 4ième) et je suis spécialisé dans le logiciel libre. Après j’ai évolué tranquillement vers les données ouvertes.

Q: Quel est l’intitulé de ton métier ?

R: Artisan Logiciel Libre est mon principal métier. J’ai pas mal travaillé avec l’administration ou le monde politique, ce qui me permet de voir cela sous un autre angle.

Q: Est-ce que tu travailles pour une organisation ?

R: Je travaille pour une société qui répond à un appel d’offre et ça commence demain. J’ai plein de projet personnels. Celui pour lequel je travaille actuellement est [proj], mais il n’est plus personnel parce que d’autres personnes sont impliquées. Je ne travaille pas pour une association, je lance une association informelle, un collectif informel.

Q: Est-ce que tu peux me décrire comment ta journée de travail se déroule ?

R: Déjà je peux commencer par la recherche de données. On a des entrepôts d’open data en France et un peu partout dans le monde mais en fait je ne les utilise pas. Pour ma recherche de données je passe par les moteurs de recherche qui, au bout du compte, me renvoient sur des dépôts de données comme data.gouv.fr. Mais ce n’est parce qu’une donnée est sur data.gouv.fr qu’elle est fraîche. J’essaye d’abord de trouver la source de la donnée la plus upstream, la plus fraîche. Et ça passe forcément par un moteur de recherche, pour trouver la source de la donnée originelle. Je lis deux trois lignes sur ce que contient ce dépôt mais tout de suite je regarde la tête des données (tableur, CSV, etc.). Et la licence. C’est les deux choses que je regarde en premier. Quand c’est un fichier tableur et que tu sens qu’il a été généré manuellement et qu’il n’y a pas d’historique, tu te dis “oulala”. Il y a deux types de travail: un import one shot ou des imports réguliers. Si c’est un besoin instantané tu prends la dernière version et c’est tout. C’est le début de ma découverte d’un jeu de données.

Q: Tu fais ça régulièrement ?

R: Oui, pas tout les jours quand même. Est-ce que je lis la doc ? [pause] Je vais principalement regarder le jeu de données. Ça pourrait être des extraits et si je ne comprends pas j’irais vers la doc. Mais je ne vais pas naturellement vers la doc si je comprends la donnée ou tel champ. Si tu vois DEPCOM tu te dis, tiens, c’est un code INSEE de commune. Il y a plein de choses qui ne sont pas dans la doc mais qui sont intéressantes. Par exemple le champ INSEE d’une commune peut changer tout les ans. Donc c’est intéressant de savoir la date de validité de ces codes et c’est un bon indicateur de la fraîcheur des données. Tu plonge dans les données, tu ne comprends pas un champ, tu vas chercher.

Q: Tu essayes d’analyser la donnée, d’évaluer leur fraîcheur, la cohérence.

R: Avec l’aide de la doc, mais je ne pars pas de la doc.

Q: Une fois que tu t’es dit que tu allais pouvoir l’utiliser, tu en fais quoi ?

R: Soit je les met dans une base. Par exemple actuellement je récupère des données ouvertes et des données non ouvertes. C’est un suivit des mesures politiques (non documenté mais c’est un CSV qu’on comprend rien qu’en le lisant) que je récupère quotidiennement depuis un disque partagé et que j’importe dans un forum Discourse, après les avoir stocké dans une base postgres. Je fais deux scripts: un pour la base et l’autre pour mettre en forme dans Discourse. Je cite cet exemple parce que j’ai plusieurs fois fait des trucs de ce genre la.

Q: Tu as expliqué ce que tu faisais depuis la découverte de la donnée jusqu’à sa fourniture à un utilisateur. Est-ce qu’il y a d’autre types d’activités ?

R: Dans les prochains jours j’ai besoin du contour géographique des circonscriptions. C’est intéressant parce que ça n’est pas publié. Ils sont donnés par l’INSEE/IGN. La version gratuite a une résolution assez faible et ressemblent plus à un polygone qu’à une carte. Mais un datatouilleur a repris ces données et les a fait coïncider avec les contours des communes. Et comme les circonscriptions ont pas mal de point communs avec les contours des communes, ce qui permet de les extraire d’OpenStreetMap. En l’occurrence ce n’est pas tellement le jeu de données qui m’intéresse, parce qu’il n’a pas été mis à jour depuis 2015. C’est surtout la méthode par laquelle il a produit ces contours de circonscription et je vais reprendre le script et le rejouer toutes les semaines ou tout les mois. C’est une reprise et adaptation de scripts, en essayant de revenir à la source de la donnée. Avec ces données j’en ferais des couches au dessus d’OpenStreetMap (layers ou tiles, je ne sais pas encore).

Q: Quel langage de programmation est-ce que tu utilises ?

R: Je viens du monde python, depuis 1998. Et je bascule vers JavaScript / TypeScript.

A propos des jeux de données

Q: Pourrais tu définir ce qu’est un jeu de données ?

R: C’est un ensemble cohérent de données. Ce qui forme un tout. C’est comme la différence entre un fichier source et un projet logiciel. Par exemple c’est plusieurs tables mais qui forment un ensemble de données cohérent, autosufisant. Mais il y a autant de définition que d’utilisateurs. Au lancement de data.gouv.fr le jeu de données de l’INSEE a été découpé en 37,000 jeux de données, chacun d’une ligne et la France était le leader mondial avec 135,000 jeux de données au lancement. Il a fallu ensuite regrouper ces jeux de données pour passer de 37,000 à quelque centaines.

Q: Pourrais-tu définir ce que signifie données ouvertes ?

R: Il y a deux sens. Soit on dit que “open data” c’est l’ouverture des données publiques, soit on dit que c’est les “données ouvertes”. Je vais définir les “données ouvertes”: c’est des données qu’on peut prendre, réutiliser, modifier et toujours en les sourçant et en essayant de documenter ce qu’on a changé. On retrouve les même définitions que dans le logiciel libre. D’ailleurs le monde de l’open data est arrivé après et s’en est beaucoup inspiré. Avec des licences qui permettent tout ou des licences qui disent “si vous utilisez ces données dans une base, alors ces données dérivées devront elle même être ouvertes”, du copyleft de la données. Ça fait des licences très compliquées (ODBL par exemple, utilisée par OpenStreetMap). Il y aussi des licences comme celle d’Etalab qui disent: faites en ce que vous voulez, du moment que vous nous citez. Sur les logiciels il y a les distribution GNU/Linux qui sont passées par la et qui ont dit “ça c’est du shareware, ça passe pas”, il y a eu tout un filtre et des logiciels n’ont pas survécus parce qu’ils n’avaient pas les bonnes licences. Sur la donnée il y a un peu tout et n’importe quoi. Et quand on te parle de smart data alors c’est sur qu’il faut regarder les licences. Je crois que ça a été lancé par la ville de Lyon et c’est en général de la donnée non libre.

A propos de l’utilisation des jeux de données

Q: Ça fait combien de temps que tu travailles avec des jeux de données ?

R: La ou j’ai vraiment commencé à utiliser des données ouvertes c’est au début des années 2010. Quand j’étais contractuel pour [organisation] on utilisait des fiches de service public, disponible pour l’état et qui ont ensuite été mises en open data. Et on redistribuait ces fiches aux collectivités pour qu’elles puissent les adapter à leurs cas particulier mais sans re-écrire la législation à chaque fois. Chaque ville avait des formalités différentes pour l’obtention du passeport. Parce qu’elles les reécrivait et c’est la caisse des dépôts qui a été chargé d’homogénéiser tout ça. C’est comme ça que j’ai commencer a travailler sur les données, au moment ou elles commençaient à devenir publiques. C’était aussi à l’époque ou l’état ne voulait pas que la donnée soit publique. Il y avait au contraire des organismes créés pour valoriser la donnée et donc la vendre très cher. Cette agence de valorisation existe toujours et est plus grosse qu’Etalab.

Q: Quels autres usage des jeux de données connais tu ?

R: Par exemple https://wikilex.seb35.fr/ qui consiste à mettre les données dans une base sémantique (wikibase) pour permettre la contribution. Les mettre dans git pour garder l’historique. C’est fait pour les logiciels mais ça fonctionne pas si mal pour les données. Wikibase est un peu compliqué.

Q: Est-ce que tu travailles sur des logiciels qui manipulent des jeux de données, par opposition a utiliser des logiciels existant ?

R: Je récupère des données du parlement et je fais des logiciels et des APIs pour exploiter ces données. Dans le cadre du projet [projet] ces logiciels font plusieurs choses: ils récupèrent les données, les archivent, les nettoient. Parce que les données en rapport avec la loi (on a beaucoup tapé sur ce que fait la DILA, l’assemblée, le sénat etc. mais finalement ce sont de bons élèves grâce au travail éducatif de RegardsCitoyens) sont mises a jour quotidiennement et c’est presque complet. Ils le font tous de manière différente. Mais ni le sénat ni l’assemblée ne conservent l’historique.

Q: Donc tu écris des logiciels qui complètent ce qui manque ?

R: Oui mais je fais ça parce que j’en ai besoin. Pas parce que ça peut servir a d’autres. Quand la donnée ne fonctionne plus, j’aime bien savoir pourquoi elle marchait la veille et donc je dois pouvoir récupérer ce qui existait la veille. De la même façon que RegardsCitoyens garde l’historique. Et puis j’ai pris l’habitude de conserver mes données dans git et j’ai continué à le faire, sans trop réfléchir. Le nettoyage … dans le cas des données de l’assemblée, elles sont de bonne qualité mais le format l’est un peu moins. Donc il y a besoin de simplifier le format, sans dénaturer les données. Après les avoir récupérées je fais une simplification de ces données et je les remet dans git. Après ces deux étapes (historisation, nettoyage) je m’en sert réellement. Par exemple pour une application que je fais, je les met en base. Ou pour récupérer les URLs des photos des députés et des sénateurs.

Q: Tu agrège des jeux de données hétérogènes ?

R: Voila, je les met dans ma base, construite pour mon besoin et j’exploite cette base.

Q: Est-ce que tu publie des jeux de données ?

R: Oui, les jeux de données nettoyées de l’assemblée. Moi en tant que tel je ne suis pas un producteur de données, je ne suis pas une source primaire. Je suis un intermédiaire de la donnée, je la transforme.

Q: Tu publie de façon privée ou publiquement ?

R: Par défaut je ne fais que du public (données et logiciel) mais quand je mélange des données ouvertes avec des données qui sont privées, je ne peux pas publier en open data.

Q: Est-ce qu’il y a des logiciels que tu n’as pas écrit et qui te sont particulièrement utiles pour manipuler ou publier de la donnée ?

R: Je ne fais pas d’analyse de données. Pour l’assemblée ce sont des JSON très compliqués et il n’y a pas vraiment de logiciel qui aide, a part ceux qu’on peut écrire soit même. Pour le sénat, comme ce sont des bases de données postgres, j’utilise postgres. Un logiciel que j’aime bien est OpenRefine (anciennement GoogleRefine) qui est une sorte de super tableur mais qui travaille sur des données qui ne tiennent pas totalement en mémoire.

Q: Donc tu dirais qu’il n’y a pas de logiciel particulier ?

R: J’aime bien comprendre ce que je fais et donc je vais plutôt faire les choses moi même lorsque ça parait simple plutôt que chercher une librairie

Q: Que fais tu lorsque le format des données que tu exploite change ?

R: Ça dépend. Je me lève tôt et je corrige. On vient de mettre en production quelque chose qui est utilisé à peut près tout les jours ouvrés par des députés. Le format des données de l’assemblée évoluant (pas beaucoup) plusieurs fois par mois, la chaîne de production est hautement fragile. Ce que j’ai fait ces jours ci est de la rendre un peu plus robuste et que je puisse m’absenter quelque jours et ne pas me lever à 8h pour voir si la données chargée dans la nuit n’a pas fait planter toute ma chaîne de production.

Q: Donc une intervention manuelle ?

R: Oui, on essaye d’automatiser au maximum en ce moment, mais la c’est des interventions manuelles, dans le code source. Je génère une bibliothèque qui dépend de ces données, je l’utilise dans d’autres applications donc … Ça peut aussi avoir un impact sur l’interface utilisateur, même si c’est très rare. L’objectif est de faire en sorte que ces interventions manuelles ne soient pas sur un chemin critique. Il faut un mode dégradé si la donnée ne marche pas. Par exemple s’il y a une évolution du format des scrutins, l’agenda de l’assemblée nationale peut être mis à jour. Auparavant la chaîne de production s’arrêtait dans son ensemble lorsqu’un jeu de donnée posait problème mais c’est en train de changer ces jours ci. Actuellement je passe plusieurs heures par semaine a corriger les changement de format.

Q: Comment sais-tu qu’une nouvelle version du jeu de données a été publiée ?

R: Dans le cas de l’assemblée je ne sais pas. Je viens de me rendre compte que la donnée évolue même lorsque la date de publication ne change pas. L’avantage d’utiliser git: après avoir re-trié les données pour être sur que les différences ne sont pas dues à un ordre différent, on voit ce qui a réellement changé. S’il n’y a aucun changement alors la donnée n’a pas été mise à jour.

Q: Est-ce que d’autres jeux de données demandent une autre stratégie ?

R: La DILA met la date de leurs données dans le nom de fichier donc c’est facile. Le sénat c’est un dump postgres donc pas d’indication sur les mises à jour. En général tout les producteurs de données sont assez mauvais a informer sur les changements. A l’opposé les données OpenStreetMap sont bien historisées.

Q: Est-ce que tu lis les éventuelles release notes qui vont avec les jeux de données ?

R: Il n’y a pas de release notes. Pour les logiciels je lis parfois les release notes, pour les release majeures. Pour la données je ferais pareil.

Q: Quand il n’y a pas de documentation…

R: Le cas le plus fréquent c’est de la documentation de mauvaise qualité

Q: … comment tu fais pour obtenir de l’information que tu ne parviens pas a deviner ?

R: Les données de l’assemblée et du sénat sont complexes. Je connaissais un petit peu et j’ai un peu galèré mais je ne me suis jamais adresse au producteur de données.

Q: Ça ne t’a jamais bloqué ?

R: Non, en fait ça bloque pas. On peu perdre une journée ou deux mais on arrive à s’en sortir. Ou alors, s’il y a des données que tu ne comprends pas, tu ne t’en sert pas.

Q: Est-ce que tu as souvent besoin de nettoyer les jeux de données avant de les utiliser ?

R: Forcément. Et même si ce n’est pas du nettoyage, c’est au moins du filtre, pour ton usage.

Q: Est-ce que tu veux ajouter quelque chose ?

R: Pour un nouveau travail que j’entame, je devrais aller chercher de la donnée. Ce sont des données qui n’existent pas, il faut aller récolter l’information auprès de sources et constituer un jeu de données. Et si on ne trouve pas les données dont on a besoin, essayer de les déduire à partir de données “proxy”, c’est à dire des indicateurs assez fiables.

1 J'aime