Flutter peut-il remplacer Qt sur Linux embarqué ?
Flutter est nouveau dans le monde de l'embarqué, après s'etre développpé pour mobile, puis desktop et enfin web. Les "custom engine", qui permettent théoriquement de le faire fonctionner sur n'importe quel système embarqué. Assez pour concurrencer Qt ?
10/01/2023
Nathanaël Landais
La référence contre le nouveau
Flutter et Qt sont tous deux des frameworks de développement permettant de développer des applications graphiques. Si Qt est la référence du développement d'applications embarquées, Flutter est lui plutôt récent et est surtout connu pour son utilisation sur mobile. Mais alors que vaut Flutter pour les systèmes Linux embarqués ? Pourquoi personne n'en parle et quels pourraient être les avantages de Flutter sur Qt ?
Flutter, le nouveau challenger sur Linux embarqué
Le peu d'écho autour de Flutter pour les systèmes Linux embarqués est sans aucun doute dû à son arrivée très récente sur ce marché. Si Flutter permet aujourd'hui de développer et compiler très simplement des applications mobiles, de bureau et meme web, ce n'est pas aussi simple pour les systèmes embarqués. Pourtant c'est bien possible et les performances sont au rendez-vous !
Les avantages de Flutter
Un des principaux avantages de Flutter pour les systèmes embarqués est qu'il est open-source et gratuit à utiliser (licence BSD). Ce modèle de licence en fait une technologie très peu contraignante d'un point de vu légal. Flutter est également facile à apprendre et son adoption très large notamment sur mobile permet de trouver facilement des développeurs expérimentés sur ce sujet. C'est aussi un avantage en ce qui concerne sa communauté qui est très active.
A la gratuité et à la facilité d'utilisation s'ajoute la performance. Flutter est performant et permet de créer des applications graphiques dont la fluidité rivalise sans problèmes avec celles développées avec Qt.
Enfin, comme mentionné dans l'introduction, Flutter permet de générer des applications pour a peu près toutes les plates-formes. Ce qui peut être un véritable atout pour les projets Linux embarqués nécessitant de fonctionner sur plusieurs plates-formes. Je pense notamment aux projets nécessitant une IHM embarqué mais aussi sur un écran de bureau. Flutter permettra a ces projets de mutualiser facilement le code de l'interface graphique.
Les inconvénients de Flutter
Malheureusement, Flutter sur linux embarqué n'est pas encore aussi mature que sur mobile ou sur desktop. Dû à la variété des systèmes embarqués, il n'y a pas vraiment de support officiel de Flutter pour les systèmes Linux embarqués. Si ça ne veut pas dire que ça ne fonctionne pas, ça signifie qu'il n'y a pas de documentation décrivant pas à pas comment l'implémenter sur votre projet.
Aujourd'hui Flutter est poussé sur ce marché par deux principaux acteurs: Sony et Toyota. Ces deux contributeurs principaux ont ouvert la voie en mettant notamment à disposition de tous un layer Yocto pour Flutter: meta-flutter. Ce layer permet de compiler et d'installer facilement Flutter sur un système Yocto. C'est un bon point de départ mais qu'il faudra adapter à vos besoins.
Il faut voir notamment que la seule implémentation disponible actuellement pour Flutter sur Linux embarqué est basée sur GLFW. GLFW se base sur OpenGL ce qui n'est pas idéal si votre système ne dispose pas de GPU. Si cette implémentation n'est pas adaptée à votre projet, il faudra donc développer ce qu'ils appellent un "custom engine embedder", ce qui est un gros travail et qui n'est pas forcément adapté à tous les projets. Surtout, le développement de ces custom engine n'est pas vraiment documenté et il n'y a, encore une fois, pas de support officiel.
Qt, la référence
On ne présente plus Qt, la véritable référence du développement embarqué, notamment pour les besoins en terme d'IHM graphiques.
Les avantages de Qt
Un de ses avantages justement est sa fiabilité et de sa flexibilité. C'est un framework éprouvé et stable qui a été utilisé pour de nombreuses applications de qualité professionnelle sur des systèmes Linux embarqués. Qt supporte également une large gamme de plates-formes, y compris les OS de bureau, les appareils embarqués et les OS mobiles. Cela en fait une solution flexible pour les projets de systèmes embarqués qui doivent fonctionner sur différentes plates-formes.
De plus, Qt est bien intégré aux outils de développement existants, ce qui facilite le processus de développement pour les développeurs expérimentés travaillant sur des projets de systèmes embarqués. Qt dispose également d'une grande communauté active de développeurs et d'une documentation complète (bien que manquant souvent de clareté), ce qui facilite l'apprentissage et la résolution des problèmes pour les développeurs travaillant sur ces projets.
Les inconvénients de Qt
Cependant, il faut aussi mentionner que Qt n'est pas gratuit. Sous licence commerciale, il est nécessaire de s'acquitter d'une licence de développement par développeur mais aussi et surtout de licences de distribution pour chaque produit vendu. Le nombre de licence de distribution minimum vendu par The Qt Company étant de 2000 unités, cela peut-être un véritable frein pour les projets produits en petite série.
Qt offre cependant des licences flexibles, notamment la licence LGPL, qui permet aux de créer des applications commerciales en utilisant Qt sans avoir à payer de frais de licence. Cependant, il y a des restrictions à cette licence, donc les développeurs doivent vérifier attentivement les termes avant de l'utiliser pour leur projet de systèmes embarqués (voir cet article sur le sujet).
Avantage Qt ?
En résumé, Flutter et Qt sont tous deux des frameworks de développement d'applications valables pour les systèmes embarqués.
Flutter est open-source sous une licence permissive, ce qui peut être un atout surtout pour les projets produits en petite série qui auront plus de mal à amortir le coût des licences Qt. Mais Flutter pour Linux embarqué est encore difficile d'accès pour les équipes plus juniors et demandera l'intervention d'ingénieurs chevronnés pour sa mise en place.
Qt, en revanche, est un framework éprouvé et stable, il nécessite de choisir entre une licence commerciale payant et une licence LGPL qui vient avec ses contraintes.
Le choix entre ces deux frameworks dépendra donc des préférences et des besoins de chaque projet en termes de fonctionnalités, de facilité d'utilisation et de coût.