Projet de spécialité - Binarisation des contenus XML/HTML

De Ensiwiki
Aller à : navigation, rechercher

L'explosion du secteur de l'informatique à la fin des années 90 a provoqué une pénurie d'informaticiens qui a été en partie résorbée par des formations monoculturelles autour de formats peu efficients mais faciles à enseigner: XML et HTML.

Cette monoculture s'est installée durablement au détriment des formats préexistants et plus efficients. À périmètre fonctionnel constant, XML est un handicap tant du point de vue de la volumétrie, de la complexité des bases de code, de l'efficacité des phases de sérialisation et désérialisation.

XML et HTML font pèsent de tout leur poids dans de nombreux domaines: les middleware reposant encore sur SOAP et XML-RPC, les pages web, les formats des livres électroniques (epub, mobi, ...), les formats bureautiques (openxml, opendocument, ...), les formats d'échange de notices bibliographiques (MARCXML, ...) et bien d'autres secteurs.

Nous ne pouvons réécrire toutes les bases de code et encore moins l'histoire mais toute amélioration significative de l'efficacité des bibliothèques gérant du XML peut avoir un impact sur l'intégralité du secteur.

L'objectif de ce projet est de :

  • proposer une stratégie de serialisation efficiente des noeuds XML permettant si possible
    • de s'affranchir de la version textuelle
    • de permettre une navigation dans la structure sans parsing préalable de celle-ci. Il est possible de s'inspirer ou d'utiliser des protocoles binaires existants : ASN.1, ISO2709, cbor, Sereal.
  • proposer une implémentation
  • mesurer les impacts en terme de volumétrie et d'efficience énergétique de la sérialisation et de la désérialisation.
  • d'estimer un gain énergétique pour un parcours de bout en bout de la donnée sur des cas d'usage connus :
    • génération des pages dynamiques depuis une base de données
    • échange via le réseau, désérialisation et extraction de données (par exemple : titre d'une page web)
  • juger de la pertinence d'une intégration dans des outils existants (navigateurs web, e-reader, suite bureautique).

Projet connexe

Partant du constat que :

  1. l'édition de contenus XML via un éditeur a toujours été fastidieuse
  2. en plus de la serialisation/désérialisation, les éditeurs XML passent par des outils pour "minifier" et "prettyfier" les contenus ;
  3. l'introduction d'une alternative "binaire" rendra le premier point encore plus inconfortable et le second totalement obsolète ;

mais aussi que pour la production de templates et l'édition manuelle, il est nécessaire de passer par un transpilateur bidirectionnel vers un format adapté (qui peut être XML format texte lui-même, mais nous réintroduisons le problème), le langage PUG (pugjs.org/) constitue un excellent langage d'édition.

Cependant :

  • l'implémentation de référence est en JS (donc très lent)
  • les autres implémentations sont incomplètes
  • aucune implémentation n'est bidirectionnelle
  • aucune ne prend une version binaire d'XML en compte

Un objectif secondaire du projet serait de compléter ou réaliser une implémentation de PUG

  • permettant d'utiliser un sous-ensemble de la syntaxe
  • qui répondre aux besoins fonctionnels

Une telle implémentation va entre autre permettre de travailler sur la transition des contenus sans avoir à attendre une binarisation complète d'une chaîne. il est donc possible de paralléliser le travail d'une équipe de développement.

Encadrants : Sylvain Bouveret, Marc Chantreux

Taille de l'équipe : 3 à 4 étudiants