Pourquoi la nouvelle interface web de Scenari 5 n'est toujours pas compatible avec Firefox?

La nouvelle interface de Scenari 5 ne fonctionne actuellemennt que dans les navigateurs fondés sur Chromium : Brave, Chrome, Opera, Iridium ou Edge. On nous demande souvent pourquoi elle n’est pas encore disponible sur Firefox. Voici quelques éléments de réponse :

  • Depuis plus de 15 ans, l’interface graphique Scenari a été fondée sur XulRunner, le moteur de Firefox en utilisant massivement la technologie XBL, ancêtre des WebComponents et du ShadowTree. En 2015, face aux annonces répétées de Mozilla d’abandonner XulRunner, nous décidons d’enclencher l’ambitieux projet de développer une nouvelle interface de Scenari 5 avec les technologies web. Perdre les principes de modularité des XBL aurait constitué une régression inacceptable. Nous avons donc attendu qu’émerge le standard WebComponent qui en reprenait les concepts. Malheureusement, alors que nous commencions le développement de l’interface graphique, paradoxalement, seul Chromium implémentait ce nouveau standard ce qui nous a obligé à démarrer les développements avec ce navigateur.
  • Ce projet s’inscrit dans un temps long, la charge développement de cette nouvelle interface web se chiffre aujourd’hui à près de 10 années-homme et doit devenir notre socle technologique pour au moins les 15 ans à venir. Le code doit rester le plus maintenable et épuré possible, et avons donc décidé qu’il ne serait compatible qu’avec les derniers standards du web, y compris ceux non encore finalisés si leur plus-value le justifie à nos yeux. Aucune compatibilité avec les anciens navigateurs n’est prévu. Cela limitera dans un 1er temps les contextes dans lesquels la technologie pourra être exploitée mais cela est cohérent avec l’idée d’une montée en puissance progressive. L’ancienne interface est toujours opérationnelle, y compris dans la version 5 de Scenari, et continuera à être utilisée dans les contextes où un navigateur de dernière génération ne peut être exploité.
  • Scenari 5 et sa nouvelle interface web est toujours aujourd’hui en développement, le spectre fonctionnel de l’ancienne interface n’est pas encore couvert. Nous souhaitons consolider et couvrir en priorité l’intégralité de ce spectre fonctionnel afin de pouvoir exploiter la solution en contexte réel, seul moyen de le fiabiliser d’une part, mais aussi d’ajuster rapidement l’ergonomie grâce aux premiers retours d’usage.
  • Dans cette phase de développement de Scenari 5, notre stratégie est donc de réduire les contextes d’usages potentiels (limités par l’utilisation des dernières versions de Chromium), pour aller vite et ne pas perdre de temps sur des problèmes de compatibilité et de non implémentation de certains standards de tel ou tel navigateur et ce pour une raison évidente : ces problèmes sont temporaires et ont de très fortes chances d’être résolus lorsque la version finale de Scenari 5 sortira. Bon nombre de nouveaux standards que nous avons exploités n’étaient disponibles que dans Chromium mais ont été depuis implémentés par Firefox et ne sont à présent plus un problème : vouloir traiter ces problèmes à l’époque n’aurait été que perte de temps et complexification inutile du code. Nous restons encore aujourd’hui dans cette logique.
  • A ce jour, en février 2020, il y a encore deux points connus (peut-être d’autres non identifiés) des nouveaux standards qui ne permet pas l’utilisation de Firefox : l’absence de la méthode « ShadowRoot.getSelection() » et l’implémentation de l’évènement « beforeinput » et qu’il soit « cancelable ». Lorsque nous approcherons de la version finale de Scenari 5, nous évaluerons plus précisément où en est Mozilla sur ces quelques points et chercherons des solutions de contournement s’ils n’ont pas encore été résolus.
  • En marge de la question des standards non implémentés, il faut noter qu’une charge conséquente de développement sera nécessaire pour ajuster le comportement de l’éditeur (contentEditable=true) pour être compatible avec Chromium ET Firefox, car ce composant technique des navigateurs n’a jamais été correctement standardisé et de sérieux écarts existent.
  • Des développements assez complexes sont encore en cours sur cette brique d’édition (affichages différentiels), nous voulons d’abord bien stabiliser notre propre code avec un seul navigateur, puis résoudre les problèmes de compatibilité afin d’éviter de courir plusieurs lièvres à la fois.

Quand au navigateur Safari, la liste des standards non implémentés par ce dernier est plus longue, notamment : ResizeObserver, requestIdleCallback, BroadcastChannel, CustomElement qui étend d’autres classes que HTMLElement… A ce jour, nous ne prévoyons pas de compatibilité avec ce navigateur.

A noter enfin que nous sortirons prochainement de nouvelles applications (techniquement fondées sur Electron) proposant la nouvelle interface, en alternative aux applications SCENARIchain-client et SCENARIchain-desktop que vous connaissez. Les utilisateurs avancés de Scenari préfèreront alors probablement utiliser ces applications à la place d’un navigateur car elles offriront une meilleure intégration avec le système qu’une application pure web.

Sylvain

2 J'aimes