Lomiri: The Final Frontier (And Old Friend)

Note: I recalled this from memory. Some information may be out of order.

    Lomiri has always been a popular user interface. From the time it was first created it was supposed to be the “next step in the Ubuntu ecosystem” and the interface of the Ubuntu Phone. Sadly, this next step never came to fruition and we got GNOME as the default Ubuntu desktop instead.

The New Owners of an Abandoned UI

    Lomiri stayed alive due to the unwavering resilience of the UBports team, who took over after Canonical abandoned Unity8, and all the Ubuntu Touch developers. While it is extremely exciting to see Lomiri have survived being dropped by Canonical, the fact that it was… well… Canonical that created the project left some big issues to be addressed.

    The biggest and most jarring issue that the UBports team faced was that Lomiri, then called Unity8, was stuck on Ubuntu 15.04 Vivid Vervet. Through sheer determination the UBports team managed to get Lomiri to Ubuntu 16.04 Xenial Xerus. At this point, updating Lomiri stalled. The libraries that Lomiri was originally created for no longer supported large portions of the functions that Lomiri was trying to use. Updating Lomiri was a slow and painful process because the UBports core team was small. Like, less than 3 people small.

Struggling Like Sisyphus

    Luckily, at this point Ubuntu Touch was gaining traction. It was being seen as the main force behind Mobile Linux development, and rightfully so. Many, many devices could easily support Ubuntu Touch due to its libhybris/Halium backend that allowed the use of Android components to handle hardware. This made using Ubuntu Touch a pleasant and stable experience.

    Due to the increased interest in Ubuntu Touch and the neverending willpower of the UBports team, Lomiri was able to be updated to Ubuntu 20.04 Focal Fossa. This was no small feat. You see, the jump from Xenial to Focal had a large change in the Ubuntu ecosystem, the addition of systemd. If you are reading this, you most likely know what systemd is and have strong feelings about it. Whether you are for or against it doesn’t matter because the UBports team had to face the change of a core system component in a version update. (systemd was actually implimented in 15.04, but Upstart wasn’t entirely dropped until later on.)

    Previously, Ubuntu used the home-grown Upstart. Upstart was an init service similar to systemd, but on a much larger scope. Like all changes Canonical makes good things, Upstart was shelved. Lomiri made great use of Upstart as it was the init system that it was made for, so the UBports devs had to rewrite all the init services and system components of Lomiri that made use of Upstart to instead use systemd. This was a timely and quite boring development shift, but it was eventually completed.

    The switch to systemd wasn’t the only issue the UBports team faced when moving to 20.04. Many libraries that Lomiri depended on had either been scrapped, were Ubuntu specific and Canonical loves to discontinue in-house project, or had been updated to the point where many functions had been removed. To adapt to this, Lomiri required extensive patching, with the effort to move over to newer libraries having been completed only recently. (With the move of KDE Plasma to Qt6, a large rewrite of Lomiri is in the works once again.)

Market and Me

    Around this time, Luca Weiss, a team member of postmarketOS, begins trying to port Lomiri to the operating system that he works on. Being based on Alpine instead of Ubuntu or Debian, Luca obviously faced great challenges getting Lomiri to work. For years he labored over patching dependencies and fixing failures in compilation. Eventually, development on Lomiri stalled for about a year and a half until 2023.

    Ever since first hearing about Ubuntu Touch I have had an interest in Lomiri. The side-centric gesture scheme just feels more natural on the hand, especially with the increasing size of phones these days. It wasn’t until I read about postmarketOS and learned the benefits of mainline Linux that I realized that Ubuntu Touch wasn’t for me. I didn’t like the idea of using Android components, especially components that hadn’t been updated in years. So, I switched to postmarketOS.

    The first thing I did when installing postmarketOS was to check Lomiri support. I was not very good at navigating git at the time, so the best I could find was an issue stating the development status of Lomiri. It was totally and entirely broken. That was sad to me, but I just said “oh well” and went on my business installing Phosh.

    Over time as I learned about how postmarketOS worked and even tried (semi-successfully) porting my own devices, I began to wonder, “if the postmarketOS team needs help packaging Lomiri, and I want Lomiri to be packaged, why don’t I just help them?”. Of course, not knowing git and only having discovered Linux at the start of the pandemic, I was absolutely not ready for this challenge. Yet, I took it.

Where to?

    And here we are, over half a year later and still working on getting Lomiri into postmarketOS. We have come far since the Ubuntu Phone and Canonical’s shelving of Unity8, but we still have a long way to go. Many components of Lomiri still do not work on postmarketOS, but we are finally up-to-date with upstream UBports (even using alpha-level branches at times) and have all the required Lomiri packages in Alpine Linux. Now all we need is to keep on debugging into the final frontier.