Pulse 24/25 - Ubuntu desktop engineering roundup


It’s been a while since my last team update and so there’s a lot to catch up on. Rest assured, after launching 23.10 the team didn’t stop running. We dived straight into our in-person sprints and we enjoyed the Ubuntu Summit in Riga in the middle. What a city and congratulations to everyone involved in organising and delivering the summit! I’ll defer detailing our Ubuntu 24.04 LTS roadmap to a dedicated post but while you’re waiting do check out @local-optimum’s end of year review in desktop. Let’s jump into the latest from the team.


Let’s start with our friends running Windows :slight_smile: The WSL team published the Ubuntu 22.04.3 image so Windows users now get the latest straight from installation rather than through an upgrade path. And for those of you who live dangerously, the first WSL builds of Noble are available in the Preview channel. Work started to support cloud-init inside Ubuntu WSL instances as part of a broader investment in management tooling for WSL users in organisations.


The Enterprise team released ADSys 0.13.2 which features certificate auto enrolment. They have also been overhauling its documentation to follow the diataxis structure. It’s looking fantastic so well done to everyone involved in that! Finally, the team is continuing work to provide a generalised cloud authentication solution for the desktop. There’s a tonne of background work on this effort and we will of course share more when we can. In the meantime keep your eyes out for more on provisioning for a few hints.


This cycle we’ll be working with invertase to help us level up our flutter apps. The team at invertase are flutter experts and we’re super excited to welcome spydon and enzoconty to the Apps team. Perhaps you recognise the melos project or spydon’s Flame Game engine?

The Apps team have been refactoring to adopt similar layouts and tooling across all of our flutter repositories. In the 23.10 cycle we held off on bumping flutter because it would have started a cascade of dependency updates. That work is now done as part of this refactor. When that’s done, yes there’s more to do, all of our flutter apps should have similar developer experience. Additionally, we’re more deliberately moving towards a separation between ‘frontend’ and ‘backend’. Going forward, we’ll be more disciplined in focusing our frontends on delivering great user experiences and we’ll push the app’s domain logic into a backend. There are lots of advantages to this approach and I’m eager to see some play out this cycle.

Figure 1: Firmware Updater’s ‘Latest Version’ was top aligned.

The firmware updater saw text alignment tweaks (figure 1), we changed the primary button colour to remain green regardless of the accent colour (figure 2), and we added a --simulate flag to make it easier to iterate on the frontend. The result of these tweaks, using a simulated device, looks like this:

Figure 2: Firmware updater with UI tweaks running against a simulated device.

The App Center had a bug on mixed architecture systems where installing certain applications brought in packages incompatible with the desktop meta package, rendering the machine unusable. That was fixed here and my apologies to anyone who was impacted.

Using Flutter’s awesome profiling tools (figures 3 and 4 below), we’ve profiled the App Center and Firmware Updater. Preliminary analysis revealed the biggest performance hit comes from the GTK3 window’s initialisation. This should be addressed this cycle as one of our roadmap items is upgrading flutter to use GTK4.

Figure 3: A heat-map of the Firmware Updater’s dart dependency sizes.

Figure 4: Frame render times from the Firmware Updater’s startup.


The gaming team were busy in the steam-snap repository. They are defining their triage process, rolling out automatic stale-issue tagging and closing actions, and they are creating a set of standardised issue labels to help us manage the backlog. They have also started exploring what we can do to make the App Center’s games tab awesome. If you have ideas @zoopgoop, @ashtonn and @jssotomdz would love to hear them.

Although not strictly gaming related, inspired by @seb128’s snap dashboard and @jnsgruk’s releases dashboard, @ashtonn created a refreshed desktop packages dashboard POC. You can see it live here, or if you’re in a rush you can get a sense of it in figure 5 below. It’s fantastic to see many of our packages presented in one place and cleanly (thank you vanilla-framework). One thing this effort has highlighted is the complicated dependency graphs as well as the scope and scale the desktop team is managing and that we need tooling to help manage it. We’re thinking through next steps and I’ll share updates when we have them.

Figure 5: A POC dashboard of desktop packages


The Integrations team (formerly the Distro team) fixed an issue with ubuntu-manager for ubuntu-pro updates which are now in jammy-updates. Other series are waiting on SRU approval. They’re also hard at work getting updates into the archive with a few noteworthy mentions:

  • Firefox was updated to 120.0.1
  • Thunderbird was updated to 115.5.1
  • fonts-noto-color-emoji updated for unicode 15.1


Reworking the provisioning stack is a top priority this cycle. A lot of work is going into bootstrapping the evolved structure and designing the experience with the charge being led by @anasereijo1, @dloose, @matt-hagemann and spydon. A month ago, the repository structure was complicated, with different parts of the desktop installer in different repositories and git submodules being used to bring everything together. We have simplified the structure greatly and going forward we will exclusively work in ubuntu-desktop-provision. I’ll write more about all things provisioning in another post as there’s a lot to cover and I want to do it justice. So a few images will have to do for now (thanks to @elioqoshi and @anasereijo1).

Figure 6. A work in progress provisioning flow.

Figure 7. A work in progress redesign of the Installer’s try or install screen.

Figure 8. A work in progress redesign of the final ‘Welcome’ screen.

Wrapping up :gift:

As ever there were many other tasks completed but I hope you enjoyed reading about our personal highlights. This will be the final team update for 2023 and so we wish you happy holidays, happy new year and I’m excited to see everyone back and energised in 2024 :christmas_tree::heart::partying_face:.

Best wishes,

Team Desktop