Plasma Mobile: Technical debt and moving forward
In August 2015, we announced the Plasma Mobile project at Akademy 2015 in A Coruña, Spain. In ~5 years, the project has evolved quite a lot, from an initial prototype, to being a fully functional mobile software system.
The initial prototype was created by replacing components from the Ubuntu Touch userspace which ran on the Google Nexus 5 device. This prototype system used the minimal Android userspace confined in an LXC container to access various drivers, like graphics, modem, wifi, sensors among others.
In the following years, we revisited the initial prototype architecture multiple times. You can read about some of the details in the following blogposts by Bhushan Shah.
In 2017, several of communities working on bringing GNU/Linux to mobile devices came together and introduced Project Halium. This was ultimately what we used in the our reference Nexus 5X images based on KDE Neon.
In addition to this base system there were several components in userspace which we needed to use,
- libhybris to allow using bionic based HW adaptions in glibc/muslc userspace system
- hwcomposer backend in KWin to use hardware acceleration
- gst-droid to access camera and hardware accelerated video playback
- pulseaudio-modules-droid for making pulseaudio work with android sound subsystem
While this worked and provided us with the base system that we can work against, and improve the shell, applications and other components, maintaining this was always uphill battle. Most of these components needed to depend on the binary blobs provided by the device vendors, required various device specific quirks or hacks that can not be upstreamed etc.
In last few years, several other companies have started working on open mobile hardware projects,
In addition to that several communities including postmarketOS team started porting several of off-shelf devices to run a mainline kernel.
These open devices provided us with better architecture and userspace much closer to our traditional “desktop” userspce. It also allowed us to use the same standards that we use on traditional Linux userspace like, DRM/GBM, V4L2, ALSA without depending on android components. This also allows us to have a userspace without binary blobs.
After careful consideration, we have decided to drop support for Halium devices in Plasma Mobile. We understand that some community members has been using the Halium based devices to play around with Plasma however, with limited resources and manpower we can not support or provide a guarantee of first class experience for Halium devices. In fact, this has been case for while now,
- Some of our team members no longer have access to reference LG Nexus 5X device anymore
- After KDE Neon switched to using Ubuntu 20.04 we no longer are updating the rootfs for halium devices
- After several important architecture changes in upstream KWin, the hwcomposer backend might be broken and we have no way of verifying it
Overall we are hopeful that Plasma Mobile on open devices will flourish and will bring us much closer to our initial vision of Plasma Mobile.