• Aucun résultat trouvé

Frameworks applicatifs

1.6 Discussions et implications

1.6.3 Rapprocher le Web des applications de bureau

Au cours de nos recherches, nous avons observé que les technologies Web sont de plus en plus utilisées dans le domaine des applications de bureau. Il peut s'agir par exemple de réaliser un prototype d'application de bureau en Web, et de l'utiliser pour effectuer une série d'expériences contrôlées. Ce glissement des usages mérite d'être souligné. Lorsqu'Internet s'est diffusé initialement auprès des particuliers, les technologies HTML puis CSS servaient à concevoir des sites Web. Un site Web est une page à défilement vertical, de largeur fixe et de hauteur variable, dont le contenu (principalement des blocs de texte et des images) s'arrange automatiquement de haut en bas et de gauche à droite. Ce fonctionnement est inspiré des logiciels de traitement de texte, mais sans la séparation en pages. Les sites Web sont accessibles par l'intermédiaire d'un navigateur, qui convertit les pages HTML/CSS en des interfaces visibles et interactives. D'un autre côté, les applications de

bureau sont des fenêtres de largeur et hauteur variables, dont le contenu est librement déterminé par

chaque application. Ce sont des programmes exécutables qui ne dépendent pas d'un navigateur, mais s'intègrent directement dans le système de fenêtrage du système d'exploitation. Chaque application gère donc une ou plusieurs fenêtres, dans lesquelles elle peut dessiner et capturer les évènements d'entrée.

Historiquement, les sites Web et applications de bureau étaient considérés comme des domaines distincts, avec des frameworks distincts. Cependant, l'émergence des applications Web (webmails, systèmes de gestion de contenu, wikis, jeux en ligne, etc.) a rapproché les deux mondes. Du côté Web, des widgets sont apparus pour reproduire une partie de l'expérience utilisateur de bureau — comme les boutons, onglets, ou menus. Du côté bureau, les frameworks ont réutilisé des technologies à la base du Web pour bénéficier de leur robustesse héritée de nombreuses évolutions  — comme JavaScript dans QML, ou CSS dans JavaFX. Aujourd'hui, alors que les technologies du Web permettent de plus en plus de s'aventurer sur le terrain de la bureautique, nous arguons que des travaux futurs devraient appuyer cette tendance.

En effet, le mouvement initié par le World Wide Web Consortium (W3C) est une tentative de standardisation de la structure interne d'un framework. Au delà de l'utilisation d'une architecture comme MVC, il s'agit de définir les classes disponibles (Document Object Model — DOM), les attributs de style (CSS), les instructions de dessin (canvas et SVG), et beaucoup d'autres. Ces normes sont ainsi implémentées par plusieurs navigateurs concurrents, qui aident à détecter les ambiguïtés des spécifications à cause des détails de comportements différents. Ce fut le cas aussi grâce aux tests Acid1, Acid2 et Acid3  [Hic99], qui ont contribué à uniformiser les comportements observables des navigateurs. En interne, la spécification DOM permet d'accéder à une partie des sructures privées des navigateurs — certaines n'étant pas standardisées et spécifiques à chaque navigateur. On dispose ainsi d'une certaine transparence, critère essentiel aux stratégies de programmation classées dans les résultats du questionnaire. En outre, les technologies du Web sont conçues pour être portables entre les systèmes d'exploitations, et c'est le rôle des navigateurs de gérer les éventuelles différences. Enfin, les standards du W3C sont en constante évolution, poussés par les concepteurs de navigateurs et toutes les personnes volontaires. Ils peuvent ainsi corriger les éventuelles “erreurs de jeunesse”, et s'adapter aux usages contemporains. C'est le cas par exemple avec les balises HTML dépréciées à chaque nouvelle version.

Les technologies Web souffrent cependant de quelques inconvénients majeurs. Tout d'abord, il est difficile pour les navigateurs d'atteindre une vitesse d'exécution et empreinte mémoire comparables à celles de frameworks de bureau. Ceci est dû en partie à l'utilisation du langage dynamique JavaScript, et aussi à l'immense complexité des spécifications nécessaires pour implémenter un navigateur Web moderne, qui compliquent les efforts d'optimisation. Le nombre et la complexité des standards est lié à la pression importante de nombreux acteurs pour ajouter diverses fonctionnalités  [W3C19]. Cette complexité est encore accentuée par la permissivité des navigateurs, qui devaient historiquement interpréter le code du mieux qu'ils le pouvaient, malgré d'éventuelles erreurs, afin de faciliter la création de sites Internet par les novices. La complexité des technologies Web tend néanmoins à s'auto-réguler grâce aux mécanismes de dépréciation, et les standards n'obtenant pas un succès d'usage sont à terme abandonnés ou remplacés. Enfin, tout comme les frameworks de bureau, la durée de vie d'une extension accédant à des APIs internes est limitée dans le temps, et ceci même lorsque les APIs sont standardisées. En effet, avec l'apparition de mécanismes d'extension trop souples, se développent de nouveaux malwares les utilisant pour porter atteinte aux utilisateurs. Des sécurités supplémentaires apparaissent alors, qui invalident à terme les extensions précédemment développées. C'est le cas par exemple avec la technologie Ajax, qui permettait d'émettre des requêtes HTTP depuis le code JavaScript, mais qui s'est vue contrainte ensuite par la technologie Cross-Origin Resource

Sharing.

Que pourrions-nous faire ? L'utilisation des technologies du Web pour construire des applications de

bureau, et prototyper des techniques d'interaction liées à ce type d'applications, nécessite des ponts entre les deux domaines. Le framework Electron, par exemple, permet de distribuer une application Web comme application de bureau, sans l'interface d'un navigateur  [Git13]. Cependant, l'API pour accéder aux services du système d'exploitation est en partie spécifique à Electron, et n'est pas standardisée en tant que technologie du W3C. Des standardisations des widgets en balises HTML ont été tentées par le passé, certaines ayant été adoptées (button, progress, ou textarea), d'autres ayant été abandonnées (menu, command). Avec le développement récent des Web Components, il est

donc opportun et crucial de participer aux efforts de standardisation en cours du W3C, pour faciliter la création d'applications de bureau avec les technologies Web. Pour informer et orienter ces évolutions, il convient aussi de démontrer l'implémentation de techniques d'interaction en Web (voir par exemple [Roy19]).

Dans ce travail de thèse, comme nous le verrons plus tard, nous avons utilisé les technologies du Web pour leur flexibilité, ce qui nous a permis d'explorer des syntaxes de code innovantes. La contribution aux groupes de travail du W3C relève des travaux futurs.