Qt Open Source pour système embarqué – Licence LGPL
Développer un système embarqué avec Qt peut revenir très cher. L’offre Qt for Device Creation implique le paiement de coûteuses licences de distribution. Pourtant, il est possible d’économiser avec Qt open source, utilisable gratuitement.
10/01/2023
Nathanaël Landais
Qt pour des systèmes embarqués modernes
Je ne vais surprendre personne en disant que Qt est aujourd’hui la référence dans le développement de systèmes embarqués équipé d’interface utilisateur. Ce framework permet de développer des interfaces utilisateurs modernes et fluides sur des systèmes à la puissance limitée.
Ainsi, beaucoup de mes clients me contactent pour développer leur système avec en tête d’utiliser Qt pour leur UI.
Ils visent souvent des marchés très ciblés et ne comptent pas vendre des dizaines de milliers d’exemplaires de leur produit chaque année mais plutôt quelques dizaines ou centaines d’exemplaires.
Seulement voilà, Qt for Device Creation, l’offre mise en avant sur le site officiel de Qt, mais également celle qui vous sera proposée par leurs commerciaux si vous les contacter directement, est bien trop cher pour ce type de projet.
La tarification de Qt for Device Creation
L’utilisation de Qt for Device Creation implique l’acquisition de plusieurs types de licences avec des frais récurrents :
- Il est nécessaire de payer une licence par développeur actif sur le projet, licence à renouveler chaque année (Comptez 5 800 euros / an et par développeur).
- Pour vendre des produits utilisant Qt, vous devez avoir eu au moins une licence active dans les six derniers mois.
- Enfin, pour vendre un système embarqué utilisant Qt, il vous faut acquérir une licence de distribution pour chaque produit vendu.
Les licences de distribution sont vendues en lots de plusieurs centaines à dizaines de milliers, avec un prix commençant très haut (avec un package minimum de 2000 unités vendu 15,000 euros), mais dégressif rapidement sur la quantité (environ 3 euros / unité pour un lot de 20 000 licences).
Ce dernier point est celui qui est souvent bloquant, développer avec Qt dans ces conditions n’est pas rentable sur des projets vendus en trop peu d’exemplaires.Qt refuse de vendre moins que son package minimum.
Alors on fait comment ?
Si développer avec Qt dans ces conditions n’est pas envisageable pour vous, il vous reste deux possibilités :
- Trouvez une alternative à Qt
- Faites votre UI avec des composants web (HTML5 / CSS / JS) : c’est tout à fait possible aujourd’hui avec des moteurs web tel que WebKit Embedded. Les performances seront moindre et certains projets très limités en puissance de calcul devront passer leur chemin
- Pour avoir un niveau de performance plus proche de Qt, vous pourrez partir sur GTK voir des librairies spécialement conçues pour votre SoC, comme celle de STM32.
- Développez avec Qt Open Source : Gardez la plupart des avantages de Qt, à moindre coût
Vous vous en doutez au vu du titre de cet article, c’est de cette dernière possibilité dont je veux parler aujourd’hui.
Qt Open Source
Il est très probable que vous ne pensiez même pas possible de développer votre système embarqué avec Qt Open Source. Après tout, le site de Qt fait systématiquement référence à l’offre commerciale Qt for Device Creation dès qu’il s’agit de systèmes embarqués. Et ce n’est certainement pas le commercial de Qt qui vous aura proposé cette possibilité non plus.
C’est pourtant tout à fait possible. En effet, Qt est disponible en licence LGPL (Plus précisément LGPLv3), qui est une licence open source et vous permet d’utiliser Qt gratuitement pour votre projet IoT. Rien ne vous oblige donc à partir sur une licence commerciale, même si vous créez un produit à but commercial !
Les contraintes
Il y a plusieurs contraintes à partir dans cette direction qu’il est bon de lister.
Ce qui n’est pas disponible en open source
Déjà, les outils développés par The Qt Company (l’entreprise derrière Qt) ne sont pas tous disponibles sous cette licence LGPL. Ainsi, certains modules de Qt ne pourront pas être utilisés dans un projet open source.
Heureusement, ces modules sont peu nombreux et il est tout à fait possible de faire sans.
Qt a également développé des outils pour simplifier le développement pour systèmes embarqués, ces outils font partie de l’offre Qt for Device Creation et vous seront donc inaccessible. Je veux parler notamment de Boot2Qt, qui permet d’avoir un système linux embarqué prêt à faire fonctionner votre application Qt en seulement quelques heures, pourvu que vous utilisiez une plateforme supportée par l’outil. Ce second point est selon moi le plus important, faire fonctionner Qt au sein de votre projet embarqué peut être difficile et sa mise en place (au sein d’un système Yocto ou Buildroot) prend un certain temps.
Pour visualiser ce qui est disponible en open source, Qt met à disposition un outil.
Pour l’utiliser :
Selectionnez le type de licence que vous souhaitez (Pour de l’open source, essayez avec LGPLv3 pour les modules, GPL3 et GPL2 pour les outils.).
Vous pouvez ignorer le champ « Qt Packages » qui se met automatiquement sur « Qt for Application Development » :
Cette distinction n’a pas de sens en dehors de la licence commerciale.
Les contraintes de la licence LGPLv3
Enfin, distribuer un système utilisant des composants open source sous licence commerciale implique également certaines contraintes.
La licence LGPLv3 est assez ouverte sur ce genre d’utilisation et vous permet de distribuer votre système sans en ouvrir les sources à certaines conditions :
- Les composants open source doivent être séparés de vos composants fermés. Concrètement, cela signifie que Qt devra être distribué sous forme de librairie partagée (.so sur Linux, .dll sur Windows) et non intégré a l’exécutable de votre application.
- La personne qui achète votre système, doit avoir la possibilité de remplacer elle-même les composants open source que vous utilisez. C’est-à-dire qu’un client doit pouvoir recompiler lui-même Qt et le mettre sur votre système à la place de la version que vous avez fourni.
Vous devez fournir les informations sur comment procéder. - Vous devez mettre à disposition de vos clients les sources de la version de Qt que vous utilisez, même si vous les avez modifiés (ce que, sois dis-en en passant, je vous déconseille).
Attention : un lien vers le site de Qt n’est pas correct, vous devrez fournir un lien vers un serveur qui vous appartient, ou tout autre moyen sous votre contrôle. - Les licences des composants open source utilisés doivent être livrés avec l’application et ces composants doivent être nommés. Le texte des licences et copyrights doivent être accessible depuis l’interface utilisateur de votre application.
Toutes ces contraintes mènent à un résultat évident, le coût de l’effort initial sera plus important si vous souhaitez utiliser Qt en open source. Cependant, le surcoût récurrent des licences de distribution Qt for Device Creation peut très rapidement dépasser ce montant.
Alors, Qt Open Source ou pas ?
Vous l’aurez compris, vous pouvez développer votre produit avec Qt Open Source et ainsi économiser sur le prix des licences commerciales. C’est un choix qui vient avec certaines contraintes, qui sont à mes yeux assez limitées.
Il y aura un coût de développement initial plus élevé, car vous n’aurez pas certains outils facilitant le démarrage et que vous devrez mettre en place certains systèmes pour être en règle avec les exigences de la licence LGPLv3.
Mais alors est-ce que ce surcoût a du sens ? Tout dépend du contexte et l’échelle de votre projet, dans certains cas le coût récurrent des licences de distribution sera moins problématique, si vous comptez vendre de très grandes quantités de votre produit, le prix des licences peut chuter. À vous de faire vos calculs.
Vous êtes décidé à développer votre système avec Qt Open Source ? Ce qui est sûr, c’est que c’est un choix qui ne s’improvise pas, vous devez absolument être en règle avec la licence que vous choisirez.
Ne vous lancez pas seul, contactez-moi directement pour discuter de la meilleure solution pour votre projet. J’ai moi-même développé de nombreux systèmes embarqués à succès utilisant Qt sous licence LGPL.