Offer Case Studies Expertises About us Contact Blog
FR EN

Can Flutter Replace Qt on Embedded Linux?

blog image Can Flutter Replace Qt

Flutter is new to the embedded world, after developing for mobile, then desktop and finally web. Custom engines theoretically allow it to run on any embedded system. Enough to compete with Qt?

08/02/2023

Nathanaël Landais

The Reference vs The New Challenger

Flutter and Qt are both development frameworks for creating graphical applications. While Qt is the reference for embedded application development, Flutter is relatively recent and is primarily known for its use on mobile. But what is Flutter worth for embedded Linux systems? Why isn't anyone talking about it and what could be Flutter's advantages over Qt?

Flutter, the New Challenger on Embedded Linux

The lack of buzz around Flutter for embedded Linux systems is undoubtedly due to its very recent arrival in this market. While Flutter today allows very simple development and compilation of mobile, desktop and even web applications, it's not as simple for embedded systems. Yet it's quite possible and the performance is there!

Flutter's Advantages

One of Flutter's main advantages for embedded systems is that it's open-source and free to use (BSD license). This licensing model makes it a very non-restrictive technology from a legal standpoint. Flutter is also easy to learn and its very wide adoption especially on mobile makes it easy to find experienced developers on the subject. This is also an advantage regarding its community which is very active.

In addition to being free and easy to use, there's performance. Flutter is performant and allows creating graphical applications whose fluidity easily rivals those developed with Qt.

Finally, as mentioned in the introduction, Flutter allows generating applications for almost all platforms. This can be a real asset for embedded Linux projects needing to work across multiple platforms. I'm thinking particularly of projects requiring an embedded HMI but also on a desktop screen. Flutter will allow these projects to easily share GUI code.

Flutter's Disadvantages

Unfortunately, Flutter on embedded Linux is not yet as mature as on mobile or desktop. Due to the variety of embedded systems, there's no real official Flutter support for embedded Linux systems. While this doesn't mean it doesn't work, it does mean there's no documentation describing step-by-step how to implement it in your project.

Today Flutter is being pushed in this market by two main players: Sony and Toyota. These two main contributors have paved the way by notably making available to everyone a Yocto layer for Flutter: meta-flutter. This layer allows easy compilation and installation of Flutter on a Yocto system. It's a good starting point but will need to be adapted to your needs.

Note that the only implementation currently available for Flutter on embedded Linux is based on GLFW. GLFW relies on OpenGL which isn't ideal if your system doesn't have a GPU. If this implementation isn't suitable for your project, you'll need to develop what they call a "custom engine embedder", which is a big undertaking and not necessarily suitable for all projects. Most importantly, the development of these custom engines isn't really documented and there's, once again, no official support.

Qt, the Reference

Qt needs no introduction—the true reference for embedded development, especially for graphical HMI needs.

Qt's Advantages

One of its advantages is precisely its reliability and flexibility. It's a proven and stable framework that has been used for many professional-quality applications on embedded Linux systems. Qt also supports a wide range of platforms, including desktop OSes, embedded devices and mobile OSes. This makes it a flexible solution for embedded system projects that must work on different platforms.

Additionally, Qt is well integrated with existing development tools, which facilitates the development process for experienced developers working on embedded system projects. Qt also has a large active developer community and comprehensive documentation (although often lacking clarity), which facilitates learning and problem-solving for developers working on these projects.

Qt's Disadvantages

However, it must also be mentioned that Qt isn't free. Under commercial license, you need to pay for a development license per developer but also and especially distribution licenses for each product sold. The minimum number of distribution licenses sold by The Qt Company being 2000 units, this can be a real obstacle for small series projects.

Qt does however offer flexible licenses, notably the LGPL license, which allows creating commercial applications using Qt without having to pay licensing fees. However, there are restrictions to this license, so developers must carefully check the terms before using it for their embedded system project (see this article on the subject).

Advantage Qt?

In summary, Flutter and Qt are both valid application development frameworks for embedded systems.

Flutter is open-source under a permissive license, which can be an asset especially for small series projects that will have more difficulty amortizing Qt license costs. But Flutter for embedded Linux is still difficult to access for more junior teams and will require the intervention of seasoned engineers for its implementation.

Qt, on the other hand, is a proven and stable framework; it requires choosing between a paid commercial license and an LGPL license that comes with its constraints.

The choice between these two frameworks will therefore depend on each project's preferences and needs in terms of features, ease of use and cost.

Previous article

Qt Open Source for Embedded Systems – LGPL License

Next article

Enhancing your embedded Linux updates reliability - OTA