Rhys Davies
on 19 March 2021
At Flutter Engage, Ken VanDine, engineering manager for the Ubuntu desktop, made an appearance in the keynote speech to talk about Flutter on Ubuntu. Canonical has been working to support Flutter for some time now, bringing the SDK to Linux, committing to build a new Ubuntu installer, and now, making Flutter the default choice for future Canonical mobile and desktop apps. We thought we’d take this opportunity to talk about what all this means and why we’re doing it.
Flutter and Ubuntu, Ubuntu and Flutter
Back in July 2020, we (Canonical along with Google’s Flutter folks) announced support for the Flutter app ecosystem. This was the first step towards Flutter being available for Linux through their alpha release. From there, Ubuntu Desktop engineers hit the ground running. You’ll find a full list of updates about their work in the team’s weekly discourse posts as far back as April. In that list, you’ll see that in August of 2020 the team started to discuss building a new Ubuntu installer, and Flutter was on the list of possibilities.
Well, in February 2021, we announced that the installer would be refreshed and it was being made with Flutter. This came out of a desire to deliver a refreshed installer experience across all of Canonicals products and, after some deliberation, Flutter was chosen to be the best option. Now, as of Ken’s words at Flutter Engage, and our involvement in the event, we are making sure Flutter is a first-class experience and stays high on our list of platforms for consideration when designing future mobile and desktop apps.
What this means
- Desktop app developers have another option for developing applications that they know Canonical will continue to support.
- Linux developers will be able to create apps more easily to work across platforms (desktop, mobile and IoT) and operating systems to target Windows and macOS too.
- The desktop team will be working with the Yaru team to ensure Flutter apps are consistent with the design of the Ubuntu Desktop.
- Flutter becomes a first-class citizen for snaps and in snapcraft.
Why though?
There are of course numerous options when it comes to developing new apps. Typically, for the desktop, you want to optimise your app to ‘look right’ with the underlying OS, for performance, and for proper integration with OS features and capabilities. Canonical’s work here meets all of these criteria.
Given that Canonical is going to be making applications for Ubuntu you can count on us putting work into making sure Flutter apps ‘look right’ in the Desktop. Flutter even allows developers to use web styles that can ‘mimic’ the UI of the system. So a Flutter app built for Ubuntu can use a collection of widgets modelled purposefully after native Ubuntu desktop designs. Flutter has better performance than alternatives such as Electron and while it isn’t as performant as native development platforms, it does so well that the ability to develop for multiple platforms and across operating systems outweighs the difference. And by the same reasoning, proper integration will be taken care of.
This is all well and good but most notably, Flutter is a truly cross-platform tool and is open source. If the Linux ecosystem at large picks this up there is a tremendous opportunity for massive ecosystem expansion. The vast majority of Flutter’s codebase is written in Dart code (using Dart only packages), and just works with no modifications necessary across all the platforms. And since the announcement in July last year, the number of plugins is slowly but surely increasing for Linux. Cross-platform development doesn’t just mean Linux developers can write apps for other platforms, it means Flutter developers for any other platform can contribute their apps to Linux and expand the Linux app ecosystem indefinitely.
There is even talk of future support for Universal Windows Platforms. Imagine deploying your Linux app to your Xbox.
Get started with Flutter on Ubuntu
We recommend you give it all a try and tell us what you think. Since this is still relatively early days in terms of getting everything set in Ubuntu there are a couple of gotchas when first getting started but there’s a tutorial for that. And of course, we encourage you to get involved. These are some links to the new desktop installer and associated technologies that you can help with.
- Ubuntu Desktop Installer
- Curtin – the curt installer is a “fast path” installer designed to install Ubuntu quickly
- Subiquity – Ubuntu Server Installer & Snappy first boot experience
- Make a linux app on route
If you have questions come and say hello over at the Ubuntu Discourse.