Archives de catégorie : Réunion

Réunion du 13 juin 2018

Formation Hadrien git

La version originale d’Hadrien sur owncloud avec slides
Elle sera revue et corrigée courant Septembre, en fonction des retours de la 1ère session, puis rejouée en fin d’année.

Le portage « piscine »

https://gitlab.in2p3.fr/MaitresNageurs/GenieLeaugiciel/

  • JIs 2018 à Port-Bail du 1 au 4 octobre
  • dates limites : inscriptions 7/7 et soumissions 30/6
  • qui ? Julien, Antoine, Hadrien
  • contributions du LAL Julien:
    • 1 piscine (Scala) + 1 talk (Analyzing astronomical data with Apache Spark)
    • Antoine: Plongeon Sphinx (David: …et Gitlab Scrum ?)
    • Hadrien: Présentation-éclair (5 min) sur openSUSE Tumbleweed, une distribution Linux qui rend le modèle « Rolling Release » plus utilisable grâce à un accent important sur l’assurance qualité et la restauration système en cas de pépin. Peut-être quelques chose (pres? tuto?) sur le langage Rust.

Le format éclair n’est pas évident… (on doit souvent faire avec 1-2 diapos).

Rencontres Tango à Prague

  • TANGO est un Bus logiciel utilisé sur ThomX, concurrent d’EPICS, apparu en Europe (SOLEIL et ESRF) au moment du schisme survenu entre deux versions de ce dernier
  • il permet de contrôler (lire) et commander (écrire) plusieurs nœuds de plusieurs endroits différents
  • la communauté est composée de 46 institutions, principalement des accélérateurs / synchrotrons, mais aussi la soufflerie de l’Onera à Toulouse, des bouts du laser Mégajoule, le détecteur astro SKA
  • Passé en v9 depuis un an, il utilisait pour la communication entre processus CORBA depuis le début, et a entamé une migration progressive vers ZeroMQ
  • Principaux développeurs du noyau : SOLEIL, ESRF (fondateurs), ALBA, et Elettra. 6 autres institutions font partie des contributeurs de la Fondation TANGO et participent à niveau moindre en temps et en argent pour donner les orientations
  • d’autres institutions proposent des outils clients et interfaces utilisateurs
  • ElasticSearch pour la gestion des journaux contrôle-commande
  • les distributions utilisées sont diverses, et les paquets sont recréés par différentes institutions. Une discussion est en cours pour mutualiser le travail de création et maintenance des paquets sur Debian, CentOS…
  • MaxIV ont proposé eloggy, une évolution de eLog avec des fils de discussion et une base de données pour remplacer la configuration par fichier texte.
  • Des discussions improvisées ont eu lieu sur le rachat de GitHub par Microsoft (l’information est tombée le jour de début des rencontres, et la migration à GitHub de la communauté Tango ne datait que d’un an)
  • La fondation Tango pourrait héberger un GitLab, puisque chaque institut a sa propre instance Gitlab. Mais il y a un compromis avec le côté visibilité, communauté mondiale… de GitHub.

Forges sociales

  • Les forges sociales ont centralisé une partie une partie des usages de gestionnaires de version décentralisé, c’est la visibilité qui semble la raison qui légitime cette centralisation. Quelques systèmes de gestion de version décentralisés intègrent nativement des fonctionnalités de forges sociales comme les tickets (FOSSIL semble le dernier survivant)
  • L’avantage d’une forge centralisée comme GitHub est qu’elle permet d’avoir des nouvelles « triées » sur les nouveaux projets. Mais la manière dont sélection est faite influe sur la communication des projets. Le projet git-federation a été lancé il y a quelques jours afin de permettre de permettre cette synchronisation sans imposer une centralisation. GitTorrent fait du Git par dessus le protocole pair-à-pair BitTorrent. Bridgy sait parler Github aussi, il permet d’afficher des infos Github sur une page web comme les publications des réseaux sociaux. SSB est un projet pour faire une forge pair-à-pair.
  • Les forges (ex: gitlab) hébergent aussi des informations personnelles dans les informations de commits (champ identité qui comporte une adresse électronique et un identifiant, qui peuvent permettre d’identifier l’auteur). Cela a soulevé dans la communauté le problème de comment respecter le droit à la suppression des données personnelles du RGPD. Le changement de l’identité des commits créerait une nouvelle branche, mais cela ne changera rien pour tous les autres dépôts qui ont été créés à partir du dépôt public
  • Pourquoi on doit donner son mail dans un gestionnaire de version ? Historiquement, Linus Torvald (créateur de git) tenait à envoyer les modifications par courrier électronique mais cela n’est qu’une information falsifiable et modifiable.
  • L’adresse électronique est un des moyens naturel d’identifier de manière unique un auteur (ou un commiter), il y en a d’autres. Une évolution possible serait d’utiliser une clé GPG à la place. La possibilité de signer ses modifications est d’ailleurs déjà intégrée à Git et Mercurial.

Nouvelles de PSPA ?

  • Des ingénieurs ergonomes ont commencé à s’entretenir avec les utilisateurs potentiels.
  • La proposition finale ne révolutionne pas, c’est un processus d’amélioration itérative, mais de nombreux détails importants ont été évoqués et améliorés.
  • Ex: pour eux, une bonne interface ne nécessite pas de fonctionnalité pour revenir en arrière, mais va dans le sens d’un avancement continu vers un but. Cette règle n’a cependant pas été suivie tout le temps.
  • Ils ont donc revus plusieurs itinéraires dans l’interface de PSPA en fonction de cette bonne pratique.
  • Maintenant, on passe à la phase implémentation, et c’est une équipe web basée à Bordeaux qui prend le relai.
  • Deux points imposés par le LAL: contrôleur en python et utilisation de frameworks (pas dans leur culture)
  • Différence: l’entreprise travaille dans l’idée qu’on développe une fois et arrête après, le LAL vise plus pour PSPA un modèle de développement continu
  • Démonstrateur en Flask + Vue.js + C encapsulé avec Cython. Dispo sur le Gitlab du CC.
  • Accord de principe du commercial avec ces contraintes techniques (à budget identique).
  • Transition technologique XML vers JSON (pour un meilleur interfaçage JavaScript) et C vers C++
  • Une différence importante: XML est ordonné (plus précisément, les bibliothèques qui le décodent le présentent comme tel), JSON ne l’est pas. Des différences d’interface logicielles existent, il va falloir imposer l’ordre dans le schéma JSON

Nouvelles de GSoC ?

  • les 4 labos français qui participent semblent très contents

Misc

  • NSIP
    • Des soucis ?
    • La vidéo tutoriel indisponible était due à une mauvaise utilisation d’atrium pour créer le lien pérenne
    • La mention légale avait été recopié à la va-vite, sans rayer les mentions à rayer
    • NSIP est utilisé actuellement pour évaluer les ETP sur projets, pas pour comptabiliser précisément le travail. La durée totale ne doit pas excéder la valeur maximum, mais peut être inférieure
  • Serge: Les collègues du CEA souhaitent utiliser l’OpenStack du LAL pour SVOM en attendant que l’infrastructure au CC soit prête.
    • Le LAL fournit pendant la transition, et comme dépannage, dans l’idée de transiter vers le CC dès que c’est prêt.
    • Presque opérationnel, rendez-vous avec les gens du CEA demain pour tester la plate-forme.
    • OpenStack constitue une avancée majeure en terme de fiabilité et documentation par rapport à StratusLab, qui était en phase de R&D.
    • SVOM présent sur le tableau de bord OpenStack depuis ce matin seulement…
  • Christian par mail: « SKA c’est impressionnant 600 x LSST en terme de data flow
    • 700 Pb / year (-> 50 ans)
    • 120000 antennes
    • bof on se sent très petit joueur avec LSST !! »

Réunion du 30 mai 2018

Windows Subsystem for Linux

Avec les dernières mises à jour de Windows 10, il est possible d’ajouter un support de l’API Linux au noyau Windows, le Windows Subsystem for Linux (WSL). Cela rappelera peut-être aux anciens des souvenirs des Windows Services for Unix il y a 20 ans.

WSL permet d’exécuter des applications Linux sous Windows avec des modifications et des coûts en performance très faibles (pas d’émulation matérielle, juste une traduction d’API). Même si l’analogie a ses limites, cette technologie est comparable à Wine, qui permet l’exécution d’applications Windows sous Linux.

Il n’y a pas d’émulation matérielle, donc le système Linux invité (plusieurs distributions Linux sont utilisables) voit les fichiers du système Windows hôte et vice-versa. La traduction d’API peut cependant avoir d’autres coûts, par exemple en termes de performance (émuler un système de fichier Linux a un coût) ou de fonctionnalités (jusqu’à récemment, il n’était même pas possible de lancer une application Linux en tâche de fond).

Malgré ces limites, le Windows Subsystem for Linux est globalement très apprécié par tous les utilisateurs habitués à jongler entre les deux mondes qui l’ont essayé. On a même réussi à y faire tourner Apache Spark !

Spark et LSST

Les utilisateurs LSST sont désormais conscients du problème de passage à l’échelle inhérent à cette expérience, mais ne sont pas encore convaincus que l’outil actuel ne peut pas passer à l’échelle et que si il faut changer d’outil, Spark est la bonne solution.

Un Data Challenge va prochainement être organisé dans LSST.  Il faudra alors démontrer, sur un grand jeu de données  (0.5 milliards de fichier, O(500) TB), que Spark est une alternative viable au pipeline précédemment envisagé.

Actuellement l’injection des données prend 1 semaine, car il faut passer par une conversion en CSV avant injection. Au NERSC, il a été montré qu’on peut traiter 1 To de données en 2 secondes sur 1000 cœurs.

Des jeux d’essais unitaires ont été faits précédemment, à l’époque où la France n’était pas impliquée. Ils permettront de valider que la solution est au moins aussi bonne que l’ancienne et donc rassurer les personnes responsables, mais pour l’instant aucun essai n’a vraiment validé le passage à l’échelle.

Toute personne intéressée souhaitant participer à ce projet est la bienvenue.

Parmi les difficultés attendues, on sait que l’algorithme actuel ne peut être distribué, et que la compression de données n’est pas suffisante pour être utilisable. Un pis-aller actuel est donc de compresser en zip, puis déplacer le fichier vers sa destination.

Julius indique que Grigori a mis en place une compression Hadoop très rapide au niveau 10. Cela pourrait être un argument pour plaider une sortie au format Hadoop.

Evénements

ANF programmation fonctionnelle

La proposition, principalement portée par Antoine, visant à organiser une ANF CNRS en 2019 sur le thème « La programmation fonctionnelle dans notre vie de tout les jours » a été acceptée!

Le programme prévisionnel est de faire 1 ou 2 jours de théorie dans un langage fonctionnel pur (type Haskell/OCaml), et 1 ou 2 jours plus pratiques centrés sur les utilisations du paradigme fonctionnel dans nos environnements et langages de tous les jours (C++, Python…).

La formation inclura notamment des exercices de refactoring de code impératif dans un style plus fonctionnels, ainsi que des études de cas où il est pertinent de le faire.

Prochain café LoOPS

Le café LoOPS du mardi 3 juin sera centré sur la RGPD, une réforme européenne des lois informatique et libertés. Il sera animé par un membre de l’association de libertés civiles La Quadrature du Net.

En parallèle, un webinaire RI3 est organisé la même semaine pour présenter du point de vue institutionnel du CNRS sur cette question.

Formation Git

Hadrien anime ce 30 mai et le 1er juin une formation Git dans le cadre de la formation permanente d’Île de France. Les slides et autres matériaux sont en lignes sur owncloud :
https://owncloud.lal.in2p3.fr/index.php/s/YrK8dADMGEQfaP3

David en a fait un portage « piscine », qui est en ligne sur
https://gitlab.in2p3.fr/MaitresNageurs/GenieLeaugiciel/

A ceux qui se demandaient si ça vaut le coup d’en faire un format plongeon, il a répondu que les TPs « portés » sont déjà presque des « plongeons ».

Piscines aux JIs 2018

L’offre de piscines s’étoffe sur https://gitlab.in2p3.fr/MaitresNageurs/GenieLeaugiciel/ .

Chacun est encouragé à y apporter les contributions qu’il souhaite et à signaler tout sujet manquant.

Ateliers Docker

Les heures Docker se sont bien passées. Les retours des participants sont bons, ils trouvent que David a fait du bon boulot !

Nicolas Leroy a apprécié, et voudrait d’autres formations de ce style sur des sujets informatique.

Une possibilité serait d’organiser une formation Git à partir du matériau produit par Hadrien.

Serge rejoint SVOM

Serge rejoint l’équipe SVOM pour contribuer au segment « au sol » de l’expérience.

Le lancement du satellite est actuellement envisagé courant 2021.

Réunion du 15 mai 2018

LoOPS

  • retour journée Meson ?
    Meson est un outil de compilation et construction de binaires.
    Aucun membre du SI ne s’est déplacé à cette journée.
  • prochains cafés le 1er mardi de juin sur le RGPD et Track ML en juillet par David Rousseau (LAL)

git/GitHub/GitLab

  • formation Hadrien (aura bientôt besoin de relecteurs !)
  • Demandes de présentations locales (exploitation SI / DEPACC)
  • problème actuel de Antoine : sous git, on pousse un commit de PNG, puis on le modifie, puis on le pousse : c’est refusé alors que ça fonctionne sous hg

informatique au CAPES

L’épreuve d’informatique au CAPES de maths, session 2018 !
Il n’y a pas de CAPES d’informatique, mais une option informatique au CAPES de mathématiques.
Par ailleurs, depuis plusieurs années, des informaticiens militent pour une agrégation d’informatique (actuellement, les cours de classes préparatoires sont donnés par les agrégés de mathématiques).

AOB

JIs 2018/piscines
Peu de nouvelles des JIs, les gens sont probablement submergées… mais on n’est plus si loin ! (Voir réunion du 12/06)

RGPD

C’est la directive européenne de protection des données, une sorte de loi informatique et liberté européenne. Elle vient en plus de la loi française, qui sera harmonisée avec plus tard.

  • analyse NextImpact
  • FLOT « Protection des données personnelles : le nouveau droit&#8239»
  • Présentation d’Émilie Masson du service informatique et libertés du CNRS, qui est la correspondante CIL qui s’appellera au 25 mai 2018 la DPD (Déléguée à la Protection des Données, c-à-d la DPO ou Data Protection Officer). «Les données à caractère personnel et leurs traitements: le Règlement européen pour la protection des données (RGPD)&#8239 qui prendra effet le 25 mai 2018 en Europe ;
  • Programme, présentations et vidéos du reste de la journée Inframed2017
  • sur les infrastructures sur les données de santé
  • séminaire Aristote

Prochaine ANF (Action Nationale de Formation)

sujet la programmation fonctionnelle (en proposition) :

  • Idée du programme : 1,5 jours de théorie + 2,5 jours de pratique.
  • Lieu : Aussois ? Cargese ?
  • C’est quoi le fonctionnel?
  • Comment on pense fonctionnel?
  • Le fonctionnel fleurit dans les langages HEP et Astro usuels (Python, C++…), comment en tirer le meilleur parti?

Je dirais plutôt que les langages HEP usuels intègrent des possibilités de faire (un peu) de fonctionnel, et donc en effet, comment en tirer le meilleur parti?

  • Quels cas d’utilisation?
  • Contrôle-commande: Tango intègre une bibliothèque permettant des fonctionnalités fonctionnelles (fandango), par exemple pour les expressions rationnelles

réunion interAG SI

  • faire du SCRUM avec les tickets Gitlab/Gihub
  • On peut avoir une vue des tickets sous forme de tableau Kanban (« colonnes de tickets »). Passer les tickets d’une colonne à l’autre est implémenté avec un jeu de tags sur les tickets (1 tag par colonne).

SVOM s’inspire de Scrum plus qu’il ne l’applique.

Docker

  • Installation de docker sous Windows ? Toujours un peu complexe, différences entre pre-10 et Win10, entre différentes générations/gammes de processeurs (fonctionnalités matérielles liées à la virtualisation)…
  • Permet d’avoir à la fois un outil de démarrage rapide et un guide d’installation locale
  • Permet de tester la portabilité (inter-OS, inter-compilateurs) plus facilement qu’avec des VMs, puisque ça permet au développeur de recréer le même contexte que l’utilisateur
  • intérêt pour cloisonner des installations différentes, pour des projets différents (les dépendances de bibliothèques sont différentes pour chaque projet)

Python

Qui fait du pipenv ? Antoine est convaincu, suite aux exposés de PyCon 2018, personne d’autre ne semble avoir été plus loin que le test isolé pour l’instant.
C’est le remplaçant des virtualenv de python

Qubes OS

OS orienté sécurité et vie privée, qui lance des VMs différentes selon l’activité à laquelle on se livre, et les présente sous la forme d’une interface graphique unifiée.
Bonne vidéo de présentation de 30min sur le site
Utilisation possible dans des contextes où on n’a pas confiance (ex: connexion internet douteuse): si il y a un soucis, il suffit de jeter la VM.

GSoC (google summer of code)

ça démarre doucement
Familiarisation avec l’environnement de travail, les publis, le code…
Les modalités d’évaluation conjointe ont été publiée (ex: questionnnaire des années précédentes)
La formule change tous les ans pour s’adapter aux observations de l’édition N-1.

sécurité

le FLOT ANSSI sur la sécurité des usages est terminé.
Il était très intéressant mais n’aborde pas la sécurité du point de vue développement.

PSPA

On entre dans le vif du sujet : 3 ateliers se sont déroulés avec l’entreprise CGI (qui va s’occuper de l’interface web de l’application)
But: faire émerger les besoins des utilisateurs PSPA
On fait des post-it de besoins, on classe, et il en résulte une idée d’interface, concrétisée en une maquette
Beaucoup d’inspiration de Sirepo
Interfaces différentes selon les besoins et entrées : saisie de données/méta-simulateur avec un bus de données commun

Réunion du 18 avril 2018

 

Prochainement

Pour rappel, une visite de l’installation ThomX (IgleX) se déroulera demain jeudi 19 à 10h, avec rendez-vous à l’entrée du LAL.

Rédaction scientifique collaborative

Sharelatex est une interface web collaborative pour éditer du LaTeX. Une instance sharelatex est proposée par Mathrice et accessible avec un certificat CNRS.

Dask : « Parallel Python with task scheduling »

C’est un Spark en plus léger, Python-only et moins ambitieux, idéal pour des développeur python habitués aux « arrays » de numpy et aux « dataframes » de panda, avec une aide à la parallélisation (structuration des données, création de tâches, etc.).

3 éléments de documentations

Bibliothèque de FITS en Scala

Julien a complété cette bibliothèque avec une interface en Python et R.

« Posit number » et arrondis

L’implémentation de ces posit n’est pas si indépendant de l’architecture d’après Hadrien. En effet, leur encodage de taille variable est économe en place, mais coûteux en performances de calcul, car il nécessite des scans de bits non parallélisables et dont les performances sont très variables selon l’architecture cible.

Expressions rationnelles (regular expression)

Antoine présente l’outil Regxr : « A minimal, beautiful, lightweight MacOS desktop application to check for regular expression pattern matches » (lien disparu)

Voir également txt2regex qui permet de construire son expression de manière interactive :

$> git clone git@github.com:aureliojargas/txt2regex.git

Très pratique en interactif, et dans des programmes qui durent ? Le problème est de gérer la diversité des inputs: en interactif, on voit quand la regex se « trompe » car elle n’est pas assez précise, mais en non-interactif il faut être sûr de soi, donc il faut une bonne base de tests avec des inputs très variés.

outil de comparaison de fichiers

  • plusieurs outils fonctionnent sous les principaux systèmes d’exploitations, utilisable sur des répertoires (récursif) :
  • un outil de comparaison textuelle avancée en ligne : medite

Une présentation de ces outils serait utile, en particulier pour montrer comment les utiliser avec des outils de gestion de version.

Résumé du WLCG-HSF Workshop (Naples)

Personne parmi les développeurs n’a pu s’y déplacer. Un résumé est présent ici

NbGrader, un outil d’aide à l’enseignement

Il s’agit d’une application d’aide à l’enseignement et à la correction.

Une cellule peut être définie comme contenant des instructions « solution » à ne pas distribuer aux étudiants. Cela génère un notebook pour étudiants sans la solution, qui peut être récupéré par les étudiants. Il permet la comparaison entre la solution fournie par l’étudiant avec la solution créé par l’enseignant. La note peut être attribuée automatiquement selon des jeux d’essais fournis par l’enseignant. L’outil est complet semble réellement adapté à l’enseignement au quotidien.

Formations à la gestion de version

formation régionale à git/GitHub/GitLab

Après le succès d’une formation organisée à Grenoble, une seconde session est proposée aux Directions Régionales qui le souhaitent (cf. courriel de Sylvie Falcinelli du 17/04).

Formation à la gestion de version avec Git

Hadrien organise fin mai et les inscriptions sont presque closes (voir courriel sur la liste le 18/04/2018 13h08). Elle n’est pas orientée spécifiquement développeurs mais avec des exemples d’édition parallèle.

Google summer of code

Une fois Google ayant validé le projet, c’est la première personne proposant le stage qui choisir l’étudiant qui se le voit attribué. Une 2de phase de validation par Google a lieu ensuite.

Réunion du 4 avril 2018

Visite au CNES

Il y a eu une réunion au CNES pour SVOM la semaine dernière.

Le CNES impose des contraintes de développement (mais moins que l’ESA) du fait du logiciel embarqué, en particulier. Parmi les bonnes pratiques de développement, la gestion des exigences est vérifiée par une équipe dédiée, en utilisant l’outil Reqtify; les exigences sont décrites textuellement dans un document analysé par l’outil. Au CNES, la pratique habituelle est d’extraire la description des exigences d’un document Word en s’appuyant sur les balises de style ! La documentation de la partition scientifique de l’instrument SVOM-MXT étant au format Markdown, il a été décidé d’introduire des balises HTML5 et de les analyser pour extraire les exigences.

L’ensemble du projet est hébergé au CC sous la forge GitLab, et le processus de développement s’appuie sur l’implémentation du framework Scrum par GitLab.

Café LoOPS CoCalc

Un café LoOPS avait lieu hier sur CoCalc. CoCalc est le projet libre qui prend la suite de SageMathCloud, lui-même basé sur Sage, un logiciel proposant des outils mathématiques allant de l’algèbre au calcul symbolique (résolution d’équation), en passant par la théorie des ensemble et la combinatoire.

CoCalc intègre des notebooks JuPyTer, document LaTeX, et hébergé en ligne. L’intégration d’outils Dropbox, Owncloud, Google docs est possible. Un terminal intégré dans l’interface web pour manipuler les fichiers semble particulièrement pratique.

Une version payante permet d’accéder à des ressources complémentaires (RAM, processeurs, accès réseau, etc.). Le problème de la limitation d’accès réseau est lié au fait que la plateforme a été piratée rapidement. Ils ont répondu en fermant l’utilisation (payer quelques euros pour accéder au réseau).

Une discussion débute sur la difficulté à faire une authentification actuellement sans passer par des acteurs privés (GAFAM, Google, Amazon, Facebook, Apple, Microsoft). Le passage par ces entreprises pose problème car elles ont pour modèle économique la revente d’informations privées (l’affaire Cambridge Analytica le rappelle).

Cependant, des acteurs publics ont prouvé que les entreprises ne sont pas les seuls capable de mettre en place un système efficace. Par exemple, le réseau d’authentification de l’ESR eduroam permet de s’authentifier au niveau européen dans les établissements d’enseignement supérieur et de recherche.

Dans le cas de CoCalc, une authentification ne suffit pas à éviter le piratage puisqu’il n’est pas possible de prévoir ce que va faire un utilisateur. Les authentifications basées sur l’identité réelle peuvent cependant diminuer le risque d’usage malveillant.

Il existe néanmoins un certain nombre d’alternatives pour l’installer soi-même, ou au sein d’une Université sans utiliser l’interface web. Un problème subiste : comment mettre en place un système de certification/authentification fiable et robuste?

Journée Meson

Une journée autour de l’outil de compilation Meson aura lieu le 13/4/2018.

Les dernières versions de Meson permettent d’obtenir un niveau de fonctionnalité équivalent à celui d’autres outils. Ainsi, Xorg 1.20 proposera le même niveau de fonctionnalités quand on compile avec Meson que quand on compile avec autotools.

RGPD et données ouvertes

Un nouveau règlement européen, le Référentiel Général de Protection des Données (RGPD) entre en application le 25 mai 2018. Il cadre la protections des données en Union Européenne en remplaçant la directive de 1995.

Les conditions d’utilisation doivent être raisonnables (adieu les conditions de 20 pages). Les données bénéficient aussi d’un droit de propriété intellectuelle renouvelables pour 15 ans à chaque traitement.

Par ailleurs, et sans lien avec le RGPD, les données de la recherche doivent être accessibles aux concitoyens, sous réserve d’exceptions.

Ces données concernent les données elles-mêmes, les articles (si financés avec plus de 50% de fonds publics), les codes sources. La mise à disposition de ces données doit se faire, sauf exception. Concernant les données de la recherche en physique, cela ne concerne pas la grande partie des citoyens, mais cela peut intéresser des entreprises faisant dans l’analyse de données par exemple.

La mise à disposition de ces données part du principe que le citoyen payeur doit avoir accès aux données. C’est aussi un moyen de faciliter la vérification des articles publiés. Des études ont montré que les articles publiés, tout domaine confondu, sont rarement reproductibles (les sciences humaines et sociales ne sont pas les plus concernées comme on le pense souvent).

SciHub et accès aux publications scientifiques

Le site SciHub permet l’accès aux publications sans passer par les droits d’accès demandés par les maisons d’édition. Ce site kazakhe est décrié par lesdites maisons d’édition, qui remettent en questions sa légalité. La justice française n’a pour l’heure pas rendu de décision allant dans ce sens. Les maisons d’édition faisant leur possible pour empêcher l’accès à ce site, il est principalement publié à travers TOR.

D’autres moyens d’accéder aux publications scientifiques existent ). La liste accesouvert@groupes.renater.fr s’intéresse au sujet de l’accès ouvert en général.

Le collectif Couperin qui négocie de manière coordonnée les tarifs d’accès aux publications scientifiques a récemment pris la décision de ne pas se soumettre aux conditions du groupe SpringerNature, ce qui signifie qu’a priori, les chercheurs publics n’auront plus accès par leur établissement à ces publications.

Cela rejoint la problématique de science ouverte, et l’accès à tous aux données de la recherche pour pouvoir vérifier les résultats obtenus, les critiquer, et les utiliser pour développer la science (dans son sens complet, donc comprenant les sciences humaines et sociales, et donc les arts lettres et langues). Actuellement, un déplacement des frais a été constaté avec l’accès ouvert, ce sont désormais non plus les lecteurs mais les auteurs qui paient pour que les publications soient accessibles, ce qui pose d’autres soucis (éthiques entre autres).

Une grande partie des revues sont passées sous la coupe de deux maisons d’éditions internationales (SpringerNature et Elsevier) qui négocient de manière opaque les frais d’accès pour les institutions. Des établissements comparables peuvent payer des sommes très différentes pour accéder aux mêmes ressources. Les revues qui sont gérées par ces éditeurs ont été cédées par les chercheurs qui souhaitaient se défaire de cette charge administrative (et sans doute mal ou pas valorisée par leurs institutions).

Si des disciplines comme les mathématiques sont devenues rapidement indépendantes des éditeurs, et que la physique a suivi, c’est cependant plus difficile dans d’autres disciplines pour lesquelles il n’existe que des éditeurs privés.

En France, deux articles qui diffèrent dans leur forme de manière raisonnable sont considérés comme deux articles différents, donc une version d’article avant impression peut être publié sur sa page web sans violer une clause d’exclusivité sur l’article lui-même.

Il est rappelé que les clauses illégales ne s’appliquent pas en France (mais le reste du contrat s’applique). Ainsi, une clause qui donne ses droits inaliénables (non patrimoniaux, c’est-à-dire le droit d’être cité comme auteur, de décider de la publication initiale, etc.) de propriété intellectuelle à un éditeur ne vaut rien au sens où le ou les auteur·s disposent de ce droit à vie. Par ailleurs, les droits patrimoniaux appartiennent habituellement à l’employeur et non à l’auteur, mais une exception existe pour les chercheurs, qui restent propriétaires de ces droits pour les articles. Pour les données les droits appartiennent a priori à l’employeur.

Métiers de l’informatique IN2P3

Une première réunion a eu lieu, assez houleuse. Des priorités nationales doivent être prises par le groupe de travail, elles devraient servir à négocier les postes face aux DU.

Réunion du 21 mars 2018

StackOverflow

Présentation

StackOverflow est un site de questions-réponses collaboratif, qui se positionne sur des questions concrètes de développement logiciel. Il se distingue en celà des autres sites de la famille StackExchange, qui sont davantage centrés sur des questions d’ingénérie logicielle, de conception, de qualité… ou bien qui sont plutôt définis par un environnement technologique comme « Android », « Linux », ou « la sécurité informatique » que par la pratique du développement logiciel.

Avantages

Christian trouve que la fréquentation de StackOverflow est un bon complément pratique à l’étude théorique du langage de programmation, car elle est plus adaptée pour répondre aux question que l’on se pose quand on a les mains dans le cambouis. Par exemple « Je veux faire X dans mon code, comment dois-je procéder ? », ou bien « Quelles bibliothèques conseillez-vous dans le langage X pour le domaine métier Y ? ». C’est particulièrement vrai dans un cadre d’autoformation, où on n’a guère l’occasion d’interroger ses enseignants.

Le principal avantage de StackOverflow est sa taille. Il s’agit sans doute de la plus grande communauté de développement logiciel sur internet, et le site a accumulé au fil des années une base de connaissances immenses. Quand on fait une recherche sur un problème de développement logiciel sur internet, il est courant que StackOverflow soit le premier résultat du moteur de recherche, et qu’il contienne effectivement la réponse juste. Et quand la réponse n’est pas encore là, on sait que toute question posée sera vue par une audience gigantesque, au sein de laquelle il y a de fortes chances de tomber sur une personne qui connaît la réponse. Bien entendu, comme dans tout site de questions-réponses, la qualité des réponses dépend aussi beaucoup de celle de la question…

Globalement, les utilisateurs de StackOverflow sont très satisfaits. C’est devenu un outil incontournable dans le monde du développement logiciel, même en tant que « simple lecteur » qui ne pose pas de questions et ne soument pas de réponses. Que l’on tombe dessus par simple recherche web, que l’on contribue directement au site ou que l’on s’abonne à des alertes régulières sur un sujet donné comme Antoine, l’utilisation est facile, le contenu est copieux et de qualité élevé, et le site a globalement tiré chacun d’entre nous de plus d’un mauvais pas.

Inconvénients

Au niveau des défauts, l’utilisation excessive de StackOverflow tend à créer chez le développeur une certaine paresse intellectuelle, où l’on finit par copier-coller du code de réponses que l’on ne comprend pas sans ouvrir la documentation, réfléchir et se demander si il est optimal ou adapté à la situation. La pratique est suffisamment répandue pour avoir gagné le surnom moqueur de « StackOverflow-oriented programming ». Bien entendu, il ne s’agit pas vraiment d’un problème lié au site et que ce dernier pourrait corriger, mais plutôt d’un travers de la société qui s’est construite autour du site.

La grande taille et le long historique de StackOverflow ont aussi quelques inconvénients. Par un système de ludification, le site encourage très fortement les utilisateurs à soumettre des réponses aux questions, mais n’offre qu’un contrôle relativement faible de la qualité des réponses. Quand on combine cela au grand nombre d’utilisateurs, il vient naturellement qu’une question populaire va avoir un grand nombre de réponses, de qualité très variable, et qu’un certain nombre de recherches seront nécessaires pour faire le tri. Et comme le site existe depuis longtemps, et gère mal le vieillissement des réponses, il n’est pas rare de tomber sur des réponses anciennes obsolètes que personne ne s’est chargé de corriger. A ce niveau, l’inertie communautaire liée au système des votes est aussi un problème, car elle s’adapte mal aux changements dans le milieu technologique extérieur.

La gestion des droits utilisateurs et de la modération, basée sur un système de réputation, est très encadrée à un degré qui frise parfois le psychorigide. Les nouveaux utilisateurs ne peuvent faire que peu de choses sur le site, et les habitués ayant accumulé une grande quantité de pouvoir par leur fréquentation régulière du site sont rarement très tendres avec les débutants. On est autant jugé sur la forme que sur le fond, de nombreux sujets de conversation (notamment tout ce qui relève d’un jugement de valeur) sont complètement bannis du site, et la chasse au doublon se fait souvent sans pitié. Globalement, les « experts » historiques ont souvent un comportement peu aimable voire très dominateur, c’est une des principales critiques du site à l’extérieur. Mais bien sûr, il y a des exceptions.

Un mot sur les auteurs

Le site StackOverflow a été cofondé par Jeff Atwood et Joël Spolsky, deux illustres bloggeurs de la première heure dans le monde Microsoft, auteurs respectifs des blogs Coding Horror et Joel on Software. Parmi les autres réalisations de ces développeurs, on peut aussi mentionner:

Conférences

Budget missions du SI

Le service informatique du LAL possède un budget pour financer toutes sortes de missions, qu’il s’agisse d’aller à des conférences ou d’accélérer un projet en passant une semaine avec les développeurs principaux.

Ce budget est géré selon l’idée que si on se déplace principalement pour le compte d’une expérience de physique, il est approprié de mettre la mission sur le compte de l’expérience correspondante, mais qu’il existe tout un tas d’activités du SI qui sont soit trop transverses, soit trop « informatique » pour qu’aucune expérience précise ne s’y identifie. Le SI finance volontiers ce type de missions.

Dans cette optique, Michel recense actuellement qui souhaite se rendre à CHEP et aux JI.

CHEP

Nous avons déjà parlé de CHEP dans des éditions précédentes de cette réunion. C’est sans doute la plus grande conférence d’informatique et de logiciel pour la physique des particules, et elle est organisée tous les deux ans et dont le lieu tourne entre l’Europe, les Etats-Unis, et le reste du monde. Cette année, elle est organisée à Sofia, en Bulgarie.

L’inscription à CHEP est chère par rapport aux habitudes du monde de la physique et du milieu académique (500 €), mais ces frais ne sont pas forcément excessifs si on les met en parallèle avec d’autres conférences d’informatique. Pour donner quelques exemples, l’inscription à la conférence GTC du fabricant de processeurs graphiques NVidia coûte près de 2000 $, et même des conférences informatiques organisées par des sociétés savantes comme l’ACM (SIGGRAPH, Supercomputing…) voient leurs frais d’inscription sans réduction monter à plus de 600 $.

JIs

Les JI sont un autre rendez-vous dont l’esprit est très différent. Il s’agit des Journées Informatiques de l’IN2P3 et de l’Irfu, qui rassemblent à l’échelle nationale des personnels informaticiens du CNRS et du CEA travaillant sur des thématiques « univers et particules », via le réseau RI3. L’atmosphère est plutôt détendue, avec un programme mêlant présentations informelles et ateliers pédagogiques, et les frais sont presque tous pris en charge par les tutelles à l’exception du transport. Le cadre est généralement un centre de vacances du CAES en morte saison, le comité de programme parvient à n’avoir que 2-3 sessions en parallèle sans faire une sélection très stricte, et globalement l’idée est plutôt de prendre un moment pour se poser et voir ce que font les collègues de l’autre bout de la France.

Bien sûr, cela ne veut pas dire pour autant qu’il n’y a rien à préparer. En particulier, les animations pédagogiques comme la piscine (dont on a parlé dans les réunions précédentes) nécessitent une bonne dose de matériau et de main d’oeuvre, dont la préparation est généralement lancée quelques mois à l’avance. A ce niveau, David reconnaît que le nom de « Pépé Nageurs », qu’il proposait pour la prochaine édition des piscines, n’est pas forcément idéal (selon la personne qui le lit, il peut être lu comme sexiste, comme un « sale vioque », etc…). On trouvera mieux. Il rappelle aussi que les JI n’excluent pas des formats de formation plus longs que la piscine, qui sont plus adaptés par exemple à l’exploration en profondeur d’un sujet, ou bien à l’utilisation d’une infrastructure qui ne se VM-ise ou containeur-ise pas.

Avenir d’ACAT

Pour terminer sur le sujet des conférences, Julius s’inquiète du devenir de la conférence ACAT.

Pour ceux qui ne seraient pas familier de cette dernière, il s’agit d’une conférence d’informatique en physique des particules, beaucoup plus petite que CHEP et plus centrée sur les questions de logiciel, avec quelques sous-domaines de prédilection comme l’apprentissage automatique (qu’ils traitaient avant que ce soit la mode). Les habitués trouvent ACAT plus agréable que CHEP, car cette conférence a une atmosphère plus « humaine », moins « usine ».

Le coeur du problème est que l’organisation de la conférence a historiquement été fortement portée par Federico Carminati, or ce dernier…

  • Approche de la retraite et doit passer la main, avec les risques que cela entraîne.
  • Ne serait, selon Julius, actuellement plus en odeur de sainteté dans la communauté des développeurs CERN.

Au coeur du second problème se trouve le projet de simulation HEP parallèle et vectorisée GeantV. Ce dernier se place en concurrence avec le standard actuel de la simulation, Geant4, ce qui fait qu’il n’est naturellement pas vu d’un très bon oeil par les experts de cet outil. Et dans ce contexte tendu, le caractère peu diplomate de Federico ne fait que jeter de l’huile sur le feu.

Ce conflit est devenu particulièrement apparent lors de la revue du projet GeantV par HSF, principalement assurée par des experts Geant4, dont les conclusions n’accordaient de crédit qu’aux seuls aspects du projet qui peuvent être aisément réintégrés à Geant4, et se montraient critiques sur tous les autres aspects. Or, s’il va de soi qu’une telle intégration est extrêmement désirable lorsqu’elle est possible, puisqu’elle permet une validation du code GeantV au sein des simulations des expériences, il est évident que favoriser ces aspects au détriment des innovations de rupture de GeantV est unilatéralement à l’avantage du projet Geant4 dans un contexte de compétition entre ces deux projets.

C’est cette lutte intestine, jusqu’à présent plutôt à l’avantage de Geant4 (qui possède un plus grand soutien des expériences), qui amène Julius à s’interroger sur la capacité de Federico à maintenir une force politique au CERN suffisante pour assurer le devenir d’ACAT. Du côté des éléments plus rassurants, on peut cependant noter que…

  • La section simulation Community White Paper de HSF a été rédigée d’une façon qui respecte davantage le point de vue des développeurs de GeantV, et présente une vision plus conciliante de l’avenir des deux projets.
  • Il y a déjà eu, avec ROOT, un précédent dans l’histoire du CERN où une innovation de rupture logicielle a été d’abord violemment rejetée, en compagnie de son créateur, mais finalement réintégrée.

Système de classement de tutos

Le groupe Dev@Lal souhaiterait recenser les bons didacticiels disponible en ligne et rendre les siens plus visibles. Le classement hérarchique gère mal les sujets « transverses ». Un système de mots-clés semble plus adapté pour ce cas, et David aimerait bien embaucher un stagiaire en développement web pour se fabriquer un tel « trieur de tutos ».

Le sujet a été lancé à l’IUT. Si des membres connaissent d’autres formations en développement web, David est intéressé par l’information. Pour initialiser cet index, un grand nombre de contenus sont disponibles sur la cellule webcast du CC IN2P3, les sites des JDEV (2017, 2015, 2013 et 2011) et le site LoOPS.

Github possède un système de tri par étiquettes intégré, et l’instance Gitlab du CERN et du CC IN2P3 semble proposer une fonctionnalité similaire ( -> Settings -> General). Mais l’information correspondante semble mal intégrée à l’interface actuellement : ajouter des mots-clés à un projet n’a pas d’effet apparent…

Il y a un équilibre entre faire les choses soi-même et utiliser une solution clé-en-main. On peut faire mieux soi-même en y consacrant suffisamment de temps, mais la main-d’œuvre est une denrée très précieuse. Un stage fournit temporairement de la main-d’œuvre, mais la maintenance et l’évolution future sont incertaines. De plus, un stage est court, or les projets logiciels débutent souvent en 5 minutes pour la première version mais nécessitent 10 ans pour la version finale…

C’était aussi un sujet de discussion au dernier café LoOPS sur le développement de jeu vidéo : utiliser un moteur de jeu tout fait a un coût en termes de flexibilité. A ce sujet, Julien et Serge mentionnent qu’un bon compromis est souvent de partir d’un projet tout fait open-source, et de le modifier pour l’amener à ses besoins.

Nouveaux entrants et valorisation

Julien a participé le 20/03 à la journée des nouveaux entrants du CNRS.

Le début n’était pas passionnant, avec une table ronde qui ne tournait pas rond: les questions/réponses étaient clairement préparées et répétées à l’avance. Une intense phase de lobotimisation du type « regardez c’est génial, on s’aime tous et on travaille tous ensemble ».

La suite s’est révélée plus intéressante, avec entre autre des présentations sur la propriété intellectuelle, les brevets, les licences logicielles, … L’accent a été principalement sur les thèmes scientifiques, les sciences sociales étant un peu ignorées. Antoine mentionne tout de même qu’il existe plusieurs projets informatiques en sciences sociales, tels que la constitution de bases de données (par exemple le TGIR huma-num).

Julien note qu’il existe une volonté d’aider et de financer les projets interdisciplinaires, et en lien avec l’industrie, favorisés par la politique actuelle. Ces ressources sont souvent méconnues des agents. En même temps, Julien doute de cette démarche puisque lui même a passé 3 ans dans une équipe interdisciplinaire (physique, stat, info), où la recherche de financement était une difficulté comme partout ailleurs (sempiternelle réponse: pourquoi des physiciens iraient financer des projets informatiques alors qu’ils n’arrivent même pas à financer des projets de physique, et vice-versa?).

Il existe un « pôle CNRS innovation » : c’est une société privée qui travaille pour le CNRS, en faisant du conseil et de l’accompagnement de création d’entreprises. C’est gratuit pour l’utilisateur, il y a un formulaire d’inscription simple et sans engagement avec post-traitement donnant soit une réponse «Non» (refusé), soit «peut-être mais» (on accompagne et on décidera plus tard) soit «Oui».

On peut créer une structure au sein du CNRS ou bien chercher un partenariat avec le privé. Le pôle CNRS innovation (en lien avec le service valorisation) gère les questions de droit d’auteur et s’occupe de faire des études de marché.

Christian se demande d’où vient l’argent qui paye ces gens ? Mais la réponse n’est pas connue… Il y a 45 personnes dans la structure CNRS innovation, et plusieurs antennes dont une à Saclay (en lien avec les SATT).

Nouvelles bases de données

Du côté ATLAS, il y a eu une discussion autour de l’utilisation éventuelle de Kudu dans l’Event Index. Les avis sont partagés: Dario est enthousiaste, mais Torre (le chef du computing ATLAS) n’est pas motivé. Du côté LAL, Julius trouve que c’est de la complexité inutile.

Kudu est une nouvelle BDD pour Hadoop, column-wise, non-relationnelle mais avec une interface SQL. Ça devient courant, probablement davantage pour des raisons de familiarité et de réutilisation que de réelle adéquation au domaine.

Christian voit aussi ça avec les dataframes, qui utilisent de requêtes SQL pour exploiter les optimiseurs existants. Au-delà de quoi Spark optimise aussi le pipeline entier, le réordonne…

David trouve que c’est une discussion intéressante dans le cadre de nos discussions sur les DSL de calcul. SQL, un DSL qui a réussi, serait-il finalement vu comme moins désirable ? Hadrien pense qu’il y a un continuum entre langage généraliste et langage spécifique à une application très précise, et que SQL vire généraliste.

Antoine mentionne qu’un intérêt de SQL, en combination avec le modèle relationnel, est qu’on peut faire des prédictions sur l’utilisation des données, basées sur des modèles mathématiques précis de l’usage. Une raison pour laquelle les BDD orientées objet comme Objectivity n’ont pas eu trop de succès, c’est que SQL a plusieurs propriétés désirables comme la possibilité de prouver la finitude d’une requête.

Julius trouve qu’il y a aussi un problème de l’évolution de schémas : l’objet est fait pour permettre des changements faciles de l’implémentation derrière une interface stable, mais les BDD n’aiment pas les changements de schémas…

Les « anciens » du service, comme Serge et Jean-Noël, se souviennent encore de BaBar, où l’expérience a fini par assumer elle-même la maintenance de la BDD Objectivity. Aujourd’hui, cette peur revient avec MongoDB, où il n’y a pas de garantie que le modèle soit stable…

Divers

Le groupe SVOM récupère l’ancien stagiaire d’Oleg. Ce dernier est en effet perdu pour la science, il partira faire de la blockchain dans l’industrie dans quelques mois.

Il y a pas  mal de musiciens dans le SI, en fait: Oleg joue de la trompette, Guy Barrand et Christian Helft avaient fait une session guitare il y a quelques années, Christian Arnault chante, David a joué du basson, Hadrien du piano et de la flûte…

Réunion du 7 mars 2018


Présentation de JupyterLab

Le 06/03/2018, une demi-journée de présentation des outils du projet Jupyter a été organisée conjointement par les étudiants et une équipe d’ingénieurs et d’enseignant-chercheurs de l’X. Antoine, David et Philippe y ont participé.
Elle était bien organisée, et faisait appel à des développeurs du noyau mais aussi des utilisateurs.
Le matériel est accessible, et une instance Jupyter a été démarrée au LAL, Adrien R. peut y donner accès.

Pour information, Paris-Sud travaille sur un JupyterHub pour l’Université. Un noyau Spark (Scala) est envisagé.
Pour rappel, le noyau Xeus pour C++ a été développé dans l’Université, par Loic Gouarin, et est déjà utilisé à des fins pédagogiques (cf. café LoOPS sur Xeus).

Une session hackathon est organisée ces deux prochaines journées à l’Université.

Formation Symfony

Symfony est le framwork le plus répandu pour développer des applications web dans le monde PHP.
Les développeurs Symfony sont très demandés.
Sur le même créneau, le principal concurrent est le framework Python Django.

Au LAL, la base des applications web se basaient généralement sur PHP mais aussi FileMaker et Perl. Cette base a été progressivement refondue sur une base unique PHP/MySQL. Le choix du framework Symfony était donc évident dans ce contexte.
Le framework Django est aussi utilisé au LAL pour le monde python.

Depuis 2011, Symfony est utilisé par Justine et Serge pour développer les nouvelles applications pour l’administration et certaines demandes provenant des expériences.
Ils se sont formés avec les didacticiels gratuits qui existaient déjà à l’époque (après avoir raté une première formation IN2P3 à Aussois en 2008).
L’offre des formations gratuites en français est maintenant bien fournie (openclassrooms.com, mooc-francophone.com) mais ne concerne que les versions 2 et 3 de Symfony.
Une formation CNRS à Symfony 4 se déroulera du 4 au 8 juin à Marseille.

Le formulaire de pré-inscription est disponible.
Les informations sont disponibles.

Distribution d’un format de donnée FITS pour le calcul réparti

Un travail a lieu avec Julien et Christian au SI, et Stéphane, un physicien, pour traiter les données d’astrophysique à l’aide d’outils du domaine "Big Data".
L’idée est de distribuer les données pour pouvoir les traiter avec Spark, autour duquel s’est déroulé une formation en début d’année.
Un connecteur SparkFITS a été développé.
La spécificité est que Spark est beaucoup utilisé pour des données textuelles peu structurées (JSON, CSV, logs…), alors que le format FITS est très structuré.
Spark est principalement écrit en Scala. Son utilisation est donc plus intuitive depuis ce langage (bien que d’autres passerelles existent), et il est préférable de passer par Scala pour étendre l’implémentation.

Une bibliothèque FITS a donc été développée en Scala, ainsi qu’un connecteur Spark pour distribuer les données.
Ce dernier découpe un fichier FITS lu par la bibliothèque pour l’envoyer à différentes machines qui feront le calcul. Le format d’entrée-sortie du format FITS est actuellement implémenté en C dans CFITSIO. La lecture-écriture y est séquentielle et en accès direct, il n’est pas pensé pour avoir plusieurs pointeurs d’accès aux données sur le même fichier.
La bibliothèque a été développée avec à l’esprit de permettre un usage facile à une personne sachant utiliser les interfaces Spark habituelles.

Les essais actuels de performances montrent qu’un téraoctet de données ont pu être réparties et traitées au LAL, avec un total de 200 Go de RAM disponible (100 coeurs à 2 Go de RAM).
Spark permet en effet de gérer facilement une quantité de données supérieure à la capacité de la mémoire vive de l’hôte.
Les données sont découpées aléatoirement, mais réparties autant que possible de manière proches afin de faciliter les échanges si besoin.
Les données sont d’abord déposées sur le système de fichier, puis découpées de manière indépendantes.
L’envoi des données peut se faire en flux, et elles peuvent alors être découpées et calculées au fur et à mesure, ou être disponibles sur le système de fichier.
Par exemple, dans le cas d’un calcul de matrice, il faut une description de la structure de données qui permette d’appliquer le calcul sur chaque morceau de cette matrice, même si le flux arrivant est au milieu d’une ligne.
Il est possible de découper les blocs de données de manière fainéante, au fil de leur arrivée, mais cela nécessite que la structure des données soit adaptée à cette façon de traiter les données.

Les prochaines étapes sont de contacter l’autre laboratoire de l’IN2P3 qui travaille sur ces mêmes données, puis une présentation en conférence est prévue dans les prochains mois. Un exemple d’application immédiat est LSST, qui traite 15 To/jour (mais cela peut se ramener à 0,5 à 1To/jour réellement après nettoyage et réduction des données): le logiciel actuellement utilisé n’est pas suffisant pour gérer cette quantité de données.

Avantages du développement en langage fonctionnel

La bibliothèque cfitsio a été en partir réécrite en scala, pour être utilisée en calcul réparti. Cela représente un mois de travail et 1000 lignes, mais comme les langages fonctionnels sont plus expressifs que les langages impératifs, cela correspond à un nombre de lignes bien supérieur en langage impératif.

Julien en profite pour recommander la formation Scala car elle est très bien faite et lui a été très utile. Christian indique que les interfaces de développement sont très bien faites en Spark aussi. Le mariage entre orienté objet et fonctionnel ajoute la possibilité d’héritage, qui est efficace :

  • les données FITS étant en N dimensions (pas forcément 2D), la méthode de découpage en lui-même a pris plusieurs jours ;
  • le fait que Spark soit libre (licence Apache) a fait gagner 15 ans de développement. Cela encourage les entreprises à participer au développement de manière visiblement efficace. Exemple : SOLEIL discutait par exemple hier avec Quant, qui travaille sur le développement de jupyter, pour adapter jupyter à leur besoins pour les acquisitions des expériences ;
  • Jupyter peut être interfacé avec Scala pour être utilisé avec matplotlib ;
  • on peut interfacer du Python dans du Scala grâce à JEP, l’équivalent de JNI en Java.

PSPA

Un prestataire extérieur a été choisi pour définir l’ergonomie de l’interface de PSPA, et proposer une solution.
Cela obligera à reprendre les interfaces internes comme publique.
Le bus pourra se faire en Flask, mais l’outil n’est pas encore défini.
Marika, l’experte machine, a rencontré l’ergonome. D’autres entrevues sont prévues avec des utilisateurs (Laurent Nadolski de SOLEIL, un utilisateur de l’IPNO…).
3 mois de travail est prévu, l’échéance est un peu plus longue pour découpler l’interface du moteur, ce qui nécessite de refaire du développement.

SVOM

Marc porte du code Python 2 en Python 3. Une première partie du travail consiste à nettoyer le code grâce à auto pep8 et pylint. Une seconde étape consistera au portage de python 2 à 3 lui-même, avec des outils comme « six », « modernize » et « 2to3″…
Le travail avec le CNES va se baser sur la méthode de gestion de projet agile Scrum.
Antoine demande quelle solutions existent pour un calendrier à distance. Philippe a eu un retour de Valérie pour éviter le calendrier de owncloud.lal.in2p3.fr et préférer celui de zimbra, car le premier est complexe à gérer: les noms des utilisateurs avec lequel on partage le calendrier ne s’affichent pas clairement.
D’autres outils déjà évoqués donnent accès à ce genre d’outils (Philippe indique https://framaboard.org/ qui est une instance kanboard, Antoine indique que Trello aurait des modules similaires).

Réunion du 21 février 2018

Avenir des piscines

Lors des dernières JI (Journées Informatiques de l’IN2P3 et de l’IRFU), en 2016, un nouveau format pédagogique avait été essayé: la « piscine ». C’est un format dont on a entendu parler car il est pratiqué à l’EPITA, qui a inspiré par la suite l’école 42. Il s’agit de proposer des tutoriels sur un format de 20-25 minutes, appelés « plongeons », ayant vocation à être utilisables de manière plus ou moins autonome, chacun travaillant sur sa propre machine. L’idée n’est pas de faire un cours, mais de se familiariser rapidement avec une nouvelle technologie à laquelle on ne souhaite pas accorder un grand budget temps. La limite de temps d’environ 20 minutes est choisie pour coller au temps maximal pendant lequel une personne peut se concentrer en continu : si l’on a davantage de choses à dire que cette limite de temps ne le permet, il faut découper en plusieurs plongeons.

Les prochaines JI ayant été annoncées pour octobre 2018, il est temps de se demander ce que l’on va faire de ces tutoriels, actuellement disponibles sur le dépôt « PiscineJI » du Gitlab du CCIN2P3. Est-ce qu’on se contente d’un nettoyage des tutoriels existants, sans rien changer d’autre ? Est-ce qu’on renomme le dépôt existant en « PiscineJI2016 » et on crée un nouveau dépôt pour les plongeons 2018 ? Est-ce qu’on conserve une organisation basée sur un dépôt unique, ou est-ce qu’on change d’organisation pour l’occasion ?

La première chose à faire semble être de tester les plongeons existants pour voir si ils fonctionnent encore. A priori, on souhaite préserver tous ceux qui sont fonctionnels, ou que l’on peut remettre en service facilement. Par la suite, il serait peut-être pertinent d’avoir plusieurs dépôts de plongeons thématiques à l’avenir, au lieu d’un dépôt unique, car ce dernier est rapidement devenu un grand fatras, tant dans sa hiérarchie de fichiers que dans son historique Git. Dans cette optique, David a déjà lancé deux nouveaux projets GitLab liés au Master-Projet IN2P3 DécaLog :

  • Le premier projet est centré sur les conteneurs (ex: Docker, Singularity…). Il s’appelle « EnBarque » car l’idée est que l’on essaie d’aller dans l’eau en se mouillant moins. Ce dépôt de tutoriels est lié par ses thématiques au projet IN2P3 ComputeOps et à l’école d’informatique en cours d’organisation par Cécile Cavet (voir ci-après).
  • Le second projet est centré sur les problématiques et technologies liées au calcul numérique (ex: kokkos, xtensor…). Il s’appelle « NatationSynchronisee » et se rapproche, dans ses thématiques, du projet IN2P3 Reprises.

Une autre piste serait de développer de nouveaux plongeons. Par exemple, Julien et Christian sont attendus au tournant pour le développement d’un plongeon Scala/Spark. Pour ceux qui seraient intéressés, les activités liées à la piscine sont regroupées au sein du groupe « MaitreNageurs » sur le GitLab du CCIN2P3, et il suffit de contacter David pour en devenir membre.

Il existe aussi, depuis la création du format piscine, une ambiguïté quand à sa mise en pratique. Veut-on, au-delà de son utilisation présentielle dans une session dédiée des JI, le promouvoir comme un didacticiel en ligne utilisable à tout moment de l’année ? Sur le principe, ça semble être désirable, mais le diable est dans les détails :

  • Que veut-on faire des sujets qui ne peuvent pas être enseignés à distance parce qu’ils nécessitent une infrastructure ou un matériel dédié ? (ex: Arduino)
  • À partir du moment où l’on prévoit cette utilisation ex-situ, au rythme de l’apprenant, l’utilisation d’un format segmenté par 20 minutes ne devient-elle pas une contrainte arbitraire ? En effet, il a déjà été observé que ce format peut décourager certains enseignants potentiels, car il n’est pas toujours simple de faire tenir un savoir dans un ou plusieurs blocs de 20 minutes…
  • Si l’on se dirige vers de l’enseignement à distance, n’existe-t-il pas des technologies plus adaptées que notre combinaison image Docker + dépôt GitLab actuelle (ex : notebooks, plate-formes MOOCs) ? Et à l’inverse, un tutoriel pensé pour un usage autonome est-il optimal en présentiel ? N’est-il pas difficile de préparer un tutoriel qui soit adapté aux deux situations ?
  • Si l’auto-formation est jugé préférable, doit-on continuer à préserver un créneau horaire dédié pendant les JI pour les piscines « présentielles » ? Ou bien est-ce que les JI pourraient n’être qu’un point de ralliement pour fixer une date limite à la préparation des plongeons et faire de la pub pour ces derniers ? En d’autres termes, les avantages du format présentiel compensent-ils ses inconvénients ?

Plus généralement, on se rend compte dans cette discussion qu’il y a un important besoin de veille technologique, de formation, et d’assistance autour de l’enseignement en ligne et de l’auto-formation. C’est un sujet complexe, qui part des questions de portabilité du code (machines virtuelles, conteneurs, et leurs limites dans des scénarios nécessitant un contrôle fin sur le matériel et le système), et s’étend jusqu’aux nouvelles technologies pour l’enseignement en ligne comme les notebooks et les MOOCs. Sur ces dernières technologies, il y a aussi des questions d’infrastructures: on ne peut plus se contenter de dire aux gens d’installer Docker ou VirtualBox et de télécharger une image, il faut aussi souvent préparer et maintenir des serveurs équipés de plate-formes logicielles complexes avec la charge supplémentaire que ça implique pour l’exploitation. Un exemple type à ce niveau est celui du notebook en ligne: derrière son apparente simplicité, ce format nécessite l’installation et la maintenance d’un logiciel dédié par langage de programmation supporté (voire un système de notebook à part comme dans le cas de Zeppelin pour Scala + Spark), ainsi qu’une infrastructure de machines virtuelles pour les TPs nécessitant des manipulations shell.

En parlant de machines virtuelles, d’ailleurs, un autre problème que l’on doit régler dans le cadre de nos activités d’enseignement est le trafic réseau occasionné par l’utilisation des VMs et des conteneurs. En effet, l’emploi de ces technologies est à la base guidé par un constat, qui est que les apprenants dans un TP d’informatique n’ont souvent ni l’envie, ni les connaissances techniques, pour mettre en place l’environnement logiciel parfois complexe d’un enseignement sur leurs machines. Mais en répondant à ce besoin par l’utilisation d’une grosse boîte noire contenant la quasi-totalité d’un système d’exploitation moderne, on se retrouve avec des téléchargements de plusieurs gigaoctets que les apprenants n’essaient souvent de récupérer qu’au moment du cours. Par conséquent, le jour J, on fait face à des dizaines de machines qui cherchent simultanément à télécharger d’énormes fichiers depuis internet, via une connection souvent peu performante, ce qui entraîne naturellement une énorme contention réseau et de longs délais avant le démarrage des TPs. Le moins que l’on puisse dire, c’est que ça ne semble pas encore optimal.

On peut envisager différentes stratégies :

  • encourager les maîtres-nageurs à partir d’un socle logiciel commun (VM ou image docker de référence bien remplie) afin de mutualiser davantage de données entre les plongeons ;
  • encourager les maîtres-nageurs à mettre leurs images à disposition avec une bonne avance, afin qu’un téléchargement préalable soit possible ;
  • encourager les apprenants à préparer l’environnement logiciel des plongeons à l’avance, idéalement par simple installation de docker et « docker pull » ;
  • reconnaître qu’aucune de ces mesures ne sera un remède à l’inattention et à la paresse des apprenants, et fournir sur place des serveurs de fichiers performant et une bonne bande passante locale pour éviter de trop dépendre de la connexion Internet.

À la fin de cette discussion, l’on s’est aussi interrogé sur la pertinence de créer une zone de piscine dédiée aux langages de programmation. D’un côté, c’est très clairement une thématique populaire et un peu à part par rapport aux autres. Mais de l’autre, il peut être maladroit de trop vouloir séparer les langages de programmation de leurs écosystèmes. En effet, il est très courant qu’une technologie ne soit aisément utilisable que depuis un seul langage de programmation, ainsi l’utilisation de Spark est bien plus naturelle depuis Scala que depuis les autres langages, la majorité des bibliothèques de vectorisation et de parallélisme de la dernière décennie ne sont utilisables que depuis C++, le développement web front-end n’est pas envisageable sans avoir un minimum de notions de HTML/CSS/Javascript, et Python et R détiennent un monopole absolu sur les bibliothèques libres d’informatique scientifique pour non-spécialistes. Peut-être qu’une solution possible serait de faire ce qu’Olivier Girardot a fait dans la formation Spark, et de proposer une formation « langage » et une formation « techno » en expliquant clairement que la première est un préalable nécessaire à la seconde ?

Autres activités de formation

École informatique sur les conteneurs en production

La prochaine école informatique sera sur les conteneurs en production. Elle se déroulera du 4 au 8 juin au Centre de Calcul de l’IN2P3. Elle est piloté par Cécile Cavet, qui a proposé un programme, mais depuis que tout le monde est tombé d’accord, il n’y a plus de nouvelles. Il reste encore à définir le programme, trouver des intervenants, et lancer les inscriptions. Vu le calendrier, le délai est court est la question se pose de relancer Cécile.

Des sujets variés pourraient être abordés, tels que l’orchestration de conteneurs et Singularity. David a proposé de rejouer sa piscine, déjà jouée aux Journées Informatiques de l’IN2P3, mais il risque d’être indisponible, il cherche donc un renfort pour le remplacer en cas d’absence. Toute bonne volonté est aussi bienvenue pour faire évoluer ce plongeon sur https://gitlab.in2p3.fr/MaitresNageurs. Plus globalement, ce peut être l’occasion de réutiliser des piscines des JI précédentes Cela a été proposé à Gérard, intéressé par les sujets Docker et Singularity, mais il est un peu trop occupé.

Liste de formations en ligne

L’intérêt d’une liste de formations disponibles en ligne pourrait être utile, autour du développement. Le format plongeon de 20 minutes peut s’avérer adapté mais tout format est utile. Actuellement, sont disponibles plusieurs types de ressources :

Cette liste pourrait apparaître dans le wordpress sous forme de page statique recensée dans le site du SI, pour rassembler toutes les informations utiles au même endroit, et faciliter la découverte des outils par les nouveaux arrivants.

Petite formation à Python au LAL

On a noté qu’il existe un besoin de formation python au LAL. Un cas d’utilisation basique serait le début d’un développement python, quand on ne connaît pas la langage. Christien remarque qu’au delà de la syntaxe d’un langage, les outils de l’environnement (maven, SBT, etc.) sont une base importante pour aborder un langage. Le réflexe d’Antoine est de créer un environnement virtuel avec virtualenv avant tout. On pourrait aussi y ajouter l’interface de développement PyCharm.

En résumé, un guide de démarrage qui voit plus large que le langage lui-même serait nécessaire. L’idée serait d’adopter un format court, informel, pour mettre le pied à l’étrier pour des personnes qui n’ont pas le temps et les références. À la fin d’un tel cours, d’autres ressources seraient comme toujours données, pour aller plus loin.

Questionnaires dans le cadre pédagogique

Un séminaire du café pédagogique de Paris-Sud a abordé les quizz dans le cadre de l’enseignement.

  • Les questionnaires pré-formation permettent de s’assurer que les pré-requis sont maîtrisés. C’est un effort immense mais cela peut valoir le coup dans certains cas.
  • Les questionnaires post-formation se révèlent aussi utiles après une formation : les retours d’expériences montrent qu’une révision quivie d’un questionnaire est plus efficace que deux révisions.

C’est une manière différente de réfléchir au matériel pédagogique, les questionnaires peuvent être vus comme le TD en présentiel. Pour créer de tels questionnaires, les services limesurvey de l’IN2P3 ou du LAL pourraient être utilisés.

Formation à Git

Hadrien prépare une formation Git pour la DR4 du CNRS. Elle se déroulera les 31 mai et 1er juin 2018. La question du format piscine s’est posée, mais semblait ici moins adapté : l’ambition n’est pas seulement de donner une liste de commandes utiles, mais aussi que les participants sortent avec une bonne compréhension du fonctionnement de l’outil.

Le principal prérequis demandé est la connaissance des commandes de gestion de fichier de base d’Unix (cd, mkdir, ls, touch, etc.), puisque les TPs sont sous Linux et utilisent principalement la ligne de commande. Aucun prérequis ne sera demandé en gestion de version, et le contenu pourra peut-être être adapté à l’expérience des participants.

Les deux types de didacticiels (les «tutorials») ont leur utilité, mais il existe déjà de nombreux didaticiels introductifs à Git, ce qui laisse songeur quand à la nécessité d’en créer un de plus. Quelques exemples pour les intéressés:

Par ailleurs, la documentation de référence est complémentaire de ces didacticiels, c’est une différence dont il faut être conscient.

Communauté dev@LAL et outils

Idées d’animation

Tout part du constat suivent: nous ne sommes pas nombreux aux réunions développeurs du LAL par rapport au nombre total de développeurs au laboratoire. Il a été proposé plusieurs idées pour palier à ce problème.

  • Faire des petites présentations d’outils de 20 min. ? Ou encore des annonces brèves sur des outils récemment découverts ?
  • Partager régulièrement des URLs intéressantes collectées durant les deux semaines de travail écoulées ?
  • Fournir enfin, après l’avoir souvent évoqué, un annuaire  des listes de diffusion utiles ?

La question du partage d’URL a été plus longuement discutée. Par exemple, un format possible serait que chacun présente deux URLs par réunion. Ces URLs apparaîtraient sur le compte rendu, et pourraient éventuellement être intégrées à un annuaire plus pérenne sous forme de page statique.

Dans ce dernier cas, il faudrait cependant gérer le problème de l’accumulation des actualités et de leur obsolescence. Sans maintenance régulière, une page statique a tôt fait de devenir un fatras.

On pourrait, à la place, préférer partager nos trouvailles au fur et à mesure. Se pose alors la question du moyen de communication. L’e-mail est peut-être un peu sur-utilisé, dans la mesure où il ne passe pas bien à l’échelle : quand on est abonné à des listes de diffusion très actives, les retours de vacances sont difficiles…

A ce niveau, on pourrait préférer des outils davantage basés sur la notion de flux continu d’information qu’on peut aisément ignorer pendant un temps, à la manière de Twitter ou des chats persistants comme Slack et son clone libre Mattermost. Sur ce sujet, il est d’ailleurs intéressant de noter qu’il existe un groupe Slack RI3 et que le CCIN2P3 s’interroge sur la pertinence d’héberger une instance de Mattermost.

Outil: Trello

Un des exemples d’utilisation de l’outil Trello fourni par les développeurs, c’est un tableau dédié à l’accueil des nouveaux entrants. Cela semble être une bonne idée dont nous pourrions nous inspirer.

Les intégrations pour Github, Bitbucket, ou encore des outils de workflow Scrum sont potentiellement intéressantes, mais il peut y avoir besoin de développements custom pour ajouter les intégrations désirées, comme celles avec les services du CC par exemple.

Plus généralement, un problème existant avec les intégrations Trello par défaut, c’est qu’elles concernent principalement des logiciels qui ne sont pas très utilisés dans notre communauté.  Pour en tirer profit, il faut peut-être avoir pensé le projet dès le départ pour un workflow Trello et avoir choisi les outils de gestion de projet en fonction.

Il existe un clone libre de Trello, Kanboard (service gratuit : Framaboard), qui dispose de modules similaires (module bitbucket, module gitlab).

Outil: Framework Python Dash

Dash est un outil qui sert à construire des applications web orientées Data Science. Il est basé sur Plotly, et est lié à PyData.

En le présentant, son auteur citait Guido von Rossum: « Python a été créé comme langage d’enseignement, pour combler le vide entre bash et C ».

Du point de vue de l’auteur de Dash, PyData est la prochaine page de l’histoire du Python numérique, après l’ère SWIG et l’ère Numpy/Matplotlib.

Journal: Software and Computing for Big Science

Software and Computing for Big Science est un nouveau journal, créé en Septembre 2017, pour des publications ayant trait au logiciel scientifique.

Michel, qui fait partie de son Editorial Board, a confié un exemplaire du premier numéro de la revue à Antoine. Ce dernier est désormais disponible dans la salle détente !

Réunion du 24 janvier 2018

Cafés LoOPS

Le prochain café LoOPS parlera de notebooks C++ avec xeus et cling. Mais sur la page de LoOPS, ce n’est pas très clair qui va présenter. On peut juste soupçonner que sera Loïc Gouarin, qui travaille pas mal sur ce genre de sujets.

Le café LoOPS précédent parlait de l’outil d’intégration continue TeamCity de JetBrains. Pour l’instant, ce dernier n’est pas open-source, il offre juste des versions closed-source gratuites et payantes. A ce niveau, la politique de JetBrains n’est pas forcément très claire: certains de leurs projets sont open-source (les « community editions » de IDEA et PyCharm et le plugin Rust), mais la plupart ne le sont pas…

Le café LoOPS du 6 mars sera probablement organisé en collaboration avec le LLR, sur le thème « coder pour le jeu ». On y invitera des développeurs du LLR qui travaillent sur des jeux scientifiques.

Certains se demandaient si on ne devrait pas y inviter nos anciens collaborateurs de l’école Cnam-ENJMIN (Angoulême), avec qui on avait précédemment travaillé sur « Quark Clash », un jeu vidéo qui aurait dû être la version numérique du jeu de cartes « Quark Poker », mais qui a finalement été quelque chose d’assez différent. Un des regrets de cette expérience est en effet qu’on n’ait jamais réussi à en faire un séminaire technique.

Les méthodes de travail des développeurs du jeu étaient intéressantes, car différentes de ce qu’on observe habituellement dans les labos, avec notamment diverses spécialisations inhabituelles (graphisme, son…). Les locaux de l’école eux-même, une ancienne usine papier à cigarette, ont une esthétique assez unique: murs à base de palettes, rails d’éclairage d’usine au plafond…

Les EDIs / IDEs

Il y a eu une longue discussion sur les environnements de développements intégrés (EDIs, plus connus sous l’abbréviation anglaise IDEs), avec des points de vue allant de la révolutions de productivité à l’usine à gaz insupportable.

Un point qui a été mentionné est que les IDEs sont particulièrement utiles quand on ne connaît pas très bien le langage de programmation qu’on utilise ou le projet logiciel sur lequel on travaille, l’avantage sur d’autres environnements étant moins prononcé quand on est déjà un expert des deux.

Un autre point qui a été soulevé par les participants de l’école de fonctionnel et de Spark, c’est que dans des langages utilisant l’inférence de type comme Scala, un bon IDE aide beaucoup à comprendre ce qui se passe dans du code touffu. Et quand dans des codes complexe, il aide à naviguer rapidement d’un module à l’autre, ou à comprendre l’architecture et trouver la documentation.

Antoine mentionne aussi que l’intégration des outils d’analyse statique et des linters dans les IDEs est particulièrement plaisante, puisque ces derniers sont capable de signaler les erreurs détectées directement dans le code, sans indirection. En Python, l’intégration des lints PEP8 est particulièrement plaisante. Une autre fonction classique de IDEs est l’application automatique d’un style de code.

Un inconvénient des IDEs est qu’ils sont souvent, au moins pour partie, spécifiques à un langage. Cela complique la vie des programmeurs qui travaillent dans plusieurs langages, et tend à encourager à l’inverse une certaine hyper-spécialisation. A ce niveau, on peut saluer l’effort de Jetbrains pour fournir des IDEs d’interface relativement uniforme pour de nombreux langages. Ils ont réussi à en cela à détrôner Eclipse, qui avait tenté la stratégie de l’IDE qui fait tout, mais qui s’avérait finalement moyen hors de son domaine d’expertise du Java.

Serge en profite pour mentionner que les développements web du labo se font beaucoup avec Eclipse, et qu’il s’interroge sur la pertinence de passer à PHPStorm, l’IDE PHP de Jetbrains. Cet IDE ayant une version gratuite, il a été proposé qu’on fasse des tests avec et achète quelques licence au LAL si l’essai est concluant.

Comme souvent, il faut de tout pour faire un monde: certaines personnes se sentent beaucoup plus confiantes et plus productives avec un IDE, tandis qu’à l’autre extrême certains développeurs du LAL ont du mal avec la coloration syntaxique. Et bien sûr, il ne faut pas oublier que quoi qu’il arrive, l’outil ne remplace pas la compétence.

Formation Fonctionnel/Spark

La réunion développeurs s’est tenue entre les deux parties de la formation de programmation fonctionnelle et Apache Spark, donc après la partie « programmation fonctionnelle en Scala ».

A ce stade, l’impression était que c’était un très bon début, avec toutefois quelques regrets sur l’équilibrage du troisième jour, où Olivier avait passé un peu trop de temps sur la gestion des erreurs, et trop peu sur la concurrence et le parallélisme.

Un autre sujet peut-être trop développé était la question du lien entre Java et Scala. C’est certes un point important pour comprendre certains points malheureux de la conception de Scala, mais dans notre communauté globalement peu portée sur le Java, ça tournait assez rapidement à la discussion d’expert opaque.

On pourrait sans doute faire mieux sur ce point la prochaine fois en faisant circuler un petit questionnaire lors de l’inscription à la formation pour se faire une meilleure idée du public cible.

Un exemple de point où l’héritage Java a influencé Scala, c’est la taille maximale des tableaux (et des collections), qui est fixée à 2 milliards d’éléments (231 – 1 pour être précis). L’origine de ça, c’est que Java stocke les indices et tailles de tableaux dans des entiers signés 32-bit. A l’époque où le langage a été conçu, sur du matériel nettement moins performant qu’aujourd’hui, et avec une audience beaucoup plus faible, ça avait dû paraître suffisant, mais aujourd’hui on est gêné par cette limitation dans des projets comme LSST où on a bien plus que deux milliarde de données à traiter.

Dans le cas de LSST, Christian a contourné le problème en utilisant des tableaux de tableaux, dont l’organisation interne est cachée au programmeur par l’API de Spark qui n’expose que des pipelines et des itérateurs. C’est une solution globalement satisfaisante, mais qui a quelques inconvénients, notamment quand on manipule des éléments voisins dans le tableau global (qui ne sont pas forcément voisins dans le tableau de tableau qui le simule) ou quand on modifie le tableau.

Le modèle de programmation fonctionnel où les données sont immutables nous sauve cependant ici, car il élimine la question de la modification du tableau, et simplifie la gestion du voisinage par mise en cache des voisins.

Un autre aspect qui est remarquablement facile à aborder en Spark, c’est la non-commutativité de certaines opérations sur les données du point de vue de la performance. Pour donner un exemple, il est généralement préférable de filtrer les données avant de les transformer, pour ne pas effectuer des transformations inutiles. C’est un problème connu des utilisateurs de SQL, où l’ordre des conditions dans une clause WHERE a aussi son importance. Or, avec un modèle de programmation à base d’itérateurs comme celui de Spark, il est nettement plus facile de raisonner sur ce type de considération, car l’ordre des opérations effectuées sur les données apparaît assez naturellement dans la chaîne d’itérateurs.

Autres événements

Une visite de l’IgleX avait préalablement été proposée par Antoine, qui trouve que c’est important de voir l’évolution de l’igloo avant l’installation de ThomX. Le groupe contrôle-commande a donné un accord de principe, il n’y a donc maintenant plus qu’à programmer la chose. La mise en service de ThomX est actuellement prévue pour cet été (mais sera potentiellement retardée par des problèmes avec les électro-aimants), et Antoine propose une visite en février.

C’est aussi le moment pour proposer des sujets de stages pour le Google Summer of Code. PSPA n’y participera pas cette année en raison du refactoring en cours, par contre on a une proposition d’astrophysique par Julien et Christian et deux propositions de tracking pour la physique des particules par Hadrien et David.

Les inscriptions sont ouvertes pour CHEP 2018, la grande « conférence-usine » (8 sessions parallèles avec une présentation intéressante par demi-journée dans chacune…) sur l’informatique pour la physique des particules. Elle se tiendra à Sofia, en Bulgarie, entre le 9 et le 13 juillet. Le conflit avec les stages GSoC est regrettable, mais on s’en tirera probablement par des mails rapides entre deux sessions. HSF organise également un workshop appelé PyHEP sur le Python en physique des particules le week-end d’avant. Hadrien devrait y présenter une étude des caractéristiques de stabilité numérique d’ACTS avec l’outil Verrou.

Pour ce qui concerne la formation Symfony 3 préalablement proposée sur Devlog, Serge et Justine sont malheureusement sans nouvelles. Pour rappel, l’idée serait de discuter des nouveautés de cette version du framework PHP, que l’on utilise beaucoup au LAL pour des applications de gestion du personnel.

Une réunion de fonctionnement du SI se tiendra le 25 janvier à 14h30. L’une des questions auxquelles elle devra répondre est la pertinence de poursuivre cette série de réunions. En effet, elles ont déjà eu un impact positif net (comme la création de la salle relax), mais on va peut-être vouloir passer à un autre format pour la suite.

Réunion du 10 janvier 2018

Développement au LAL

Présentations

La réunion a commencé par quelques présentations, car beaucoup rencontraient Julien, nouvelle recrue du SI, pour la première fois. Julien a été recruté sur des thématiques de calcul scientifique distribué, et va dans un premier temps travailler sur le logiciel de LSST avec Stéphane, Réza, Sylvie et Guillaume.

Serge s’est présenté comme ayant un pied dans le développement logiciel et un autre dans l’exploitation. Il est courant pour les développeurs web de contribuer ainsi à l’exploitation au LAL, mais ce n’est pas nécessairement le cas dans le reste de l’industrie où ces corps de métiers peuvent, de son expérience, être davantage séparés.

Accueil des nouveaux entrants

Julien mentionne qu’il ne reçoit pas les comptes-rendus de réunions. C’est lié au fait qu’on a oublié de l’inscrire sur la liste de diffusion DEV-LAL. Ce qui réveille la vielle question de l’accueil des nouveaux entrants et de l’intégration de ces derniers à l’infrastructure informatique : pour l’instant, cela reste un processus assez fastidieux et manuel, peut-on l’automatiser davantage ou au moins centraliser une liste de ce qu’il faut faire à chaque fois ?

Serge propose aussi la rédaction d’un guide des nouveaux entrants, qui présente à ces derniers les ressources informatiques disponibles, par exemple les mailing-lists importantes. La question de la maintenance d’un tel guide doit être préalablement élucidée, surtout dans un contexte de fusion de laboratoires où il est probable que les règles de fonctionnement informatique vont changer prochainement et de façon importante.

Organisation des réunions

Les développeurs du LAL organisent une réunion toutes les deux semaines, le mercredi matin à 10h30, qui dure une heure. L’un des buts de cette réunion est d’échapper au cloisonnement naturellement créé entre les différentes activités du LAL par le grand nombre de collaborations avec des manips « hors-sol ».

Le format de cette réunion change régulièrement. Actuellement, la formule choisie n’utilise pas d’ordre du jour, préférant une organisation à base de parole libre. Ce format a des avantages et des inconvénients: il donne plus de place aux sujets de conversation imprévisibles (ex: actualités) et aux personnes d’un naturel spontané, mais il convient moins aux personnes qui préfèrent préparer un sujet et au suivi sur la durée de sujets précis (ex: retours des café LoOPS annoncés à une réunion précédente).

Peut-être faudrait-il envisager un format plus hybride, où chaque réunion a une partie cadrée et une partie non-cadrée. A minima, on pourrait envisager de définir une structure guidée par la trame récurrente des réunions libres, Philippe propose par exemple :

  • Actualités et futur proche
  • Suivi des annonces précédentes (ex: retours des cafés LoOPS)
  • Parole libre

Comme première expérience, on pourrait allouer 15 minutes à la partie cadrée et 45 minutes à la partie libre, et voir comment ça se passe.

Pour aller plus loin, on pourrait aussi envisager la rédaction d’un ordre du jour collaboratif avec un outil « léger » de type Etherpad. Le document serait pré-rempli avec la structure ci-dessus, et les gens pourraient librement y ajouter des points de discussion entre deux réunions. La structure ainsi définie pourrait aussi être réutilisée lors de la rédaction de comptes-rendus, et il en résulterait un gain de temps.

Une autre possibilité, préalablement évoquée mais qui n’a pour l’instant pas été mise en pratique, est de tourner entre les différents développeurs au fil d’une année, laissant à chacun l’occasion de présenter son activité à tour de rôle.

Serge mentionne qu’un travers du format actuel est qu’il peut souvent tourner au débat d’expert. Antoine rappelle que de tels débats sont aussi utiles, mais approuve qu’il vaut mieux qu’ils ne monopolisent pas la réunion pour autant…

Autre question: doit-on parler davantage de projets dans les réunions développeurs ? Christian popose pour ça de partir du compte rendu mensuel de la réunion ASPRO que nous envoie Michel, et de mettre nos questions sur ce dernier à l’ordre du jour. Pour rappel, ASPRO est une réunion mensuelle des chefs de projets du LAL, sur un format préparé à l’avance avec éventuellement un tour de table si le temps le permet.

Comptes-rendus

Hadrien sonne l’alarme: le format actuel des comptes-rendus, qu’il a inauguré, structuré et rédigé, est très apprécié mais il lui coûte aussi cher en termes de temps de rédaction. Typiquement, il faut compter entre un et deux jours à temps partiel pour produire un compte rendu, et à fréquence de toutes les deux semaines ça finit par représenter une part non négligeable de son temps de travail.

Plusieurs possibilités sont envisageables:

  • On continue avec le format actuel, mais on répartit la charge entre plusieurs personnes. Par exemple, on pourrait alterner entre deux secrétaires de séance d’une réunion à l’autre. Cela aurait aussi pour avantage de fournir une solution évidente pour les réunions où Hadrien n’est pas présent.
  • On reste avec un secrétaire de séance unique, mais on sacrifie la qualité du document, par exemple en passant à un format moins rédigé ou moins structuré. C’est moins satisfaisant en termes de résultat final, mais ce sera l’approche la plus facile à adopter si personne ne se manifeste pour aider.
  • On essaye d’abandonner complètement le concept de secrétaire de séance unique au profit d’une approche plus collaborative de type Etherpad. Celle-ci reste cependant à définir:
    • Si tout le monde est responsable pour prendre des notes, personne ne l’est, et de l’information sera perdue. De plus, l’activité de prise de notes freine grandement la participation à la réunion, donc on ne veut pas forcer tout le monde à prendre les siennes de façon redondante.
    • Quel outil de prise de notes utiliser ? Mieux vaut éviter une prolifération des ordinateurs en réunions, qui tendent à être distrayants et à freiner la communication entre personnes (au profit de tâches individuelles comme la gestion des e-mails). Mais les notes manuelles doivent être recopiées, ce qui induit aussi une charge de travail conséquente.
    • Comment centraliser les notes à la fin et s’assurer qu’elles soient mutuellement intelligibles ?
    • Qui se charge de la mise en page et de la rédaction finale ?

Cette discussion sera poursuivie prochainement, par exemple en faisant un petit sondage par e-mail sur les avis du groupe de développement à ce sujet.

Distribution de binaires

La question de la distribution de binaires pour le contrôle-commande demeure encore irrésolue. C’est en effet actuellement un peu complexe quand on utilise le Gitlab du CCIN2P3.

Philippe essaye actuellement de distribuer les binaires via l’ownCloud du LAL, mais il y a des erreurs à l’upload avec de gros fichiers (~3 Go) même quand il y a assez de place dans le dépôt. Gérard essaye actuellement d’examiner les quotas du serveur afin de comprendre ce phénomène. Si le problème n’est pas là, une autre possibilité serait que quelqu’un ait encore fait la boulette d’utiliser un entier signé 32-bit pour stocker des tailles de fichier quelque part dans le code source d’ownCloud ou de ses dépendances. Ce serait loin d’être la première fois…

Idéalement, il n’y aurait pas besoin de séparer les binaires du code source versionné, et on pourrait directement gérer ces derniers depuis l’interface Gitlab à la manière des pages « releases » de Github. Une possibilité serait de faire appel à la fonctionnalité Git LFS (Large File Storage), mais cette dernière ne pourra pas être introduite au CC tant que ce dernier n’aura pas effectué la mise à jour à Gitlab 10…

Christian propose d’utiliser Atrium à la place d’ownCloud. Il dit que grâce à l’API de ce dernier, on peut automatiser les transferts de fichiers vers Atrium tout aussi facilement. Philippe s’interroge sur la question de l’authentification: sans certificats de groupe, auxquels la politique d’administration est généralement hostile, comment permettre à tout membre du groupe contrôle-commande de récupérer les binaires depuis un compte utilisateur unique sur une machine partagée ? Une solution possible, si les données ne sont pas secrètes, est d’autoriser un accès public sans authentification.

Il est intéressant de noter que ces problèmes d’authentification reviennent à chaque fois qu’on utilise une machine ou un compte utilisateur partagé, que ce soit pour faire des sauvegardes ou installer des logiciels. Il serait peut-être intéressant d’y trouver une solution de long terme générale au lieu de toujours procéder au cas par cas.

Un avantage à l’utilisation d’Atrium est son contrôle d’accès plus fin, qui permet par exemple de distinguer entre versions de développement privées et versions de production publiques.

On peut envisager d’automatiser l’export de binaires depuis Gitlab vers la solution choisie via les hooks de déploiement de l’intégration continue.

Café LoOPS sur Vue.js

Les deux derniers cafés LoOPS ont été consacrés au framework Javascript Vue.js et à l’outil d’intégration continue TeamCity.

Le style était assez différent: le café sur Vue se rapprochait davantage d’un tutoriel expliquant comment utiliser le framework, celui sur TeamCity tenait plus de la description de l’outil. Il est intéressant de noter que le format préféré dépend des affinités de chacun.

Serge voulait savoir si l’IAS, qui ont de l’expérience d’Angular.js, ont émis des commentaires et déclarations d’intention concernant Vue. Les personnes présentes ne se rappellent de rien de tel.

La personne qui a effectué la présentation de Vue l’utilise de façon intensive dans ses développements. Il l’utilise essentiellement pour des besoins d’interface homme-machine généralistes (administration d’une infrastructure).

Est-ce que Vue pourrait intéresser PSPA ? Ce point sera discuté avec le contracteur quand on le connaîtra. Il est plus probable que PSPA utilise une combinaison de plusieurs technologies, intégrant outils d’interface hommes-machine généralistes et bibliothèques plus spécialisées dans la visualisation de données scientifiques (ex: D3.js).

Projet PSPA

Pour rappel, PSPA (Platform for Simulation of Particle Accelerators) est un projet qui vise à fournir une interface unifiée vers les nombreux logiciels de simulation utilisés lors de la mise au point d’accélérateurs de particules. L’idée est d’en finir avec les interfaces utilisateur incohérentes et les formats de données non documentés et incompatibles, en proposant une IHM et un bus de données unifié pour l’ensemble des outils concernés.

L’outil a été utilisé avec succès dans le cadre du projet PHIL, et le prochain défi auquel on va le consacrer est la source de rayonnement synchrotron compacte ThomX. Dans ce cadre, PSPA a récemment acquis la capacité de modéliser l’injection d’un paquet d’électrons dans un anneau de stockage et son mouvement au sein de ce dernier.

PSPA se présente à l’utilisateur via une interface web. Initialement, cette dernière avait été réalisée via le framework Wt, un générateur de code HTML/CSS dont l’API est similaire à celle de Qt. Mais le développeur qui s’occupait initialement de l’interface de PSPA, Laurent Garnier, a quitté le LAL depuis, et plus personne dans le projet PSPA n’a les connaissances et la volonté requis pour régler les problèmes ergonomiques de l’IHM.

Face au manque de compétences internes du LAL et à la difficulté de trouver des collaborateurs extérieurs, une solution à base de sous-traitance a finalement été choisie. Il a été prévu, dans ce cadre, de collaborer avec le sous-traitant sur la conception de l’interface et de recevoir des formations de ce dernier afin de pouvoir à terme reprendre la maintenance de PSPA en main au LAL.  Le code source du front-end PSPA sera aussi libéré à terme.

Au-delà de cette gestion des compétences IHM, Antoine pense que cette réécriture sera aussi une bonne occasion de revoir l’architecture de PSPA, par exemple pour mieux séparer le front-end du back-end et mieux spécifier les interfaces logicielles entre ces composants.

Meltdown et Spectre

Le sujet des deux failles de sécurité qui ont défrayé la chronique en ce début d’année, Meltdown et Spectre a été brièvement évoqué.

Pour résumer, des défauts de conception dans les CPU modernes permettent à un attaquant qui peut exécuter du code sur une machine d’avoir un accès en lecture seule à des informations qui lui seraient normalement inaccessibles:

  • L’attaque Meltdown permet à un processus non privilégié d’avoir accès aux données du noyau d’un système d’exploitation.
  • Les attaques Spectre permettent à du code sensé être isolé du reste du système, par exemple qui s’exécute dans l’interpréteur Javascript d’un navigateur web, d’avoir accès aux données privées de son processus hôte, voire d’autres processus.

Ces failles proviennent de couches très basses du matériel (éxécution spéculative), donc la seule manière de les éliminer est de revoir la conception de ce dernier, ce qui prendra très longtems. En attendant, des solutions de contournement logiciel qui évitent d’utiliser la portion vulnérable du matériel ont été proposées.

Comme la spéculation est une optimisation de performance très importante dans les processeurs modernes, ces solutions ont un impact fort sur les chemins de code concernés: les patches pour Meltdown augmentent le coût d’un appel système, avec pour résultat des pertes de performances allant jusqu’à ~30% dans les applications qui font beaucoup d’appels système (ex: bases de données), ceux pour Spectre ont un coût en performance dans tout code qui effectue des branchements (if / else, méthodes virtuelles…), dont l’impact exact n’a pas encore été mesuré précisément.

Tout programme qui stocke des données secrètes et exécute du code potentiellement malveillant est concerné par cette faille. Cela inclut par exemple les noyaux des systèmes d’exploitation, les hyperviseurs (hôtes de machine virtuelles), les navigateurs web, et les interpréteurs de code en général (Python, Java…).

Les administrateurs systèmes du LAL et du CERN sont actuellement très affairés à déployer les correctifs de sécurité pour ces failles dans les services centraux. En parallèle, d’autres administrateurs de systèmes plus spécialisés s’interrogent: l’impact de performances de ces patches se justifie-t-il vraiment sur des systèmes qui ne manipulent pas de données secrètes et n’exécutent que du code de confiance, comme les machines d’acquisition de données des expériences ? Ne devrait-on pas les désactiver au cas par cas sur les systèmes où ils ne sont pas nécessaires ?