Some Thoughts on Linux Phones

Since this is a topic that has come up multiple times, I decided to write down my thoughts on Linux phones to avoid having to repeat myself in the future. The first section is just some background on my interests in the subject that you can skip if you just want to get to the point. This ended up being a way longer post than I intended to write and it has ended up being meandering and terrible, but I will publish it anyways since it's my blog and I can do what I want.

If this post happens to find its way into the eyeballs of people who are Linux phone developers or people who hack on Linux in general, the first criticism anyone would and should direct at me is "if you have a problem with this stuff why don't you hack on it yourself?" This is a completely valid argument, and my answer to it that I bring up later in this post is that I prefer to not try to solve things that I don't think ought to be solved. I'm not very interested in trying to work through the mess that the Linux desktop is to try to turn it into something entirely foreign to what Linux was designed to do, and in general my programming interests are completely outside of any C or UNIX stuff. Sorry for being a smug lisp weenie.

Also, if I'm being honest, I suck at programming and have never written a substantial and useful piece of software.

Background: DIY in Our Bland Cyberpunk Dystopia

My entrypoint into being someone who is "into tech" was, befitting someone with a background in the humanities and also at one time sort of involved in the punk subculture, via the revival of interest in the mid-2010s in cyberpunk. As silly as it may sound, a lot of this was specifically around the cyberpunk board on 8chan and Lainchan (rest in piss to both (Lainchan still exists but it sucks now)). I was enthralled with the idea of taking the DIY anti-authoritarian ethos of punk and applying it to a context that channels the future and present together. So naturally, I quickly gravitated towards an interest in free software and Linux. This also coincided with the rise of everyone being "jacked into" the internet almost constantly thanks to cell phones and later smartphones, and then the creation of social media and the enclosure of the virtual commons, which no doubt played a role in the revived interest in cyberpunk since as many have said before, we're pretty much already living in a very boring cyberpunk dystopia.

If something like a cyberpunk ethos is possible, to me it meant learning enough about tech to be able to participate in our increasingly cyberneticized world with more agency, and the obvious place to start with that was exploring the possibility of a personal computing devices whose mediation of reality could serve a liberatory end rather than exist to spy on people and show them ads. Unlike a lot of self-loathing programmers and tech people, I don't view computing devices mediating reality as being an essentially bad thing. The problem is that the way it's been used has been in service of the most boring possible reproduction of the same, a doubling down on it even, and much like the personal computing revolution hasn't happened yet, the smartphone revolution has also not happened yet.

This was back in 2015 when Linux on smartphones pretty much only existed with Maemo and Jolla. There was a project called Neo900 that was attempting to mod the Nokia N900 to have better specs for modern usage that I followed before it eventually fizzled out, and there's also the Dragonbox Pyra, which I've also been following since 2015 and that still has yet to ship last time I checked. A few years before, Canonical and Mozilla both released their failed attempts at breaking into the smartphone market, Ubuntu Touch and FirefoxOS respectively, before later abandoning them. Two years later in 2017, Purism announced the Librem 5 and the postmarketOS Linux distribution launched. Sometime later Pine64 announced the Pinephone. There have been many other mobile Linux distributions as per usual with the Linux community, and postmarketOS was always intended to be able to increase the lifespan of old smartphones by being ported to many different devices, but these stand out to me as the three biggest moments where mobile Linux started to take off. It wasn't until late 2019/2020 however that the Librem 5 and Pinephone actually started shipping.

Throughout all of this, I've always thought that the thing that made smartphones cool wasn't smartphones themselves, definitely not the form factor or the annoying persistence of the phone metaphor, but rather as I said previously the possibility of being "jacked in" all the time and being able to completely break from consensus reality via a personal computing device that fulfills Donna Haraway's declaration of cybernetics dissolving boundaries between humans and machines, among many other things. I would like to elaborate on this further, but I would have to re-read The Phenomenology of Perception to make the point I want to make here, and this introductory section has gone on long enough.

Betraying the PC Revolution (again)

I would like to preface this section by saying that I don't mean to shit on the work of other people. A lot of effort has gone into developing various mobile Linux distributions and desktop environments, and that's worthy of some recognition. I also have not used my Pinephone, which runs SXMO, in awhile now or attempted to use it as a daily driver, and I've only played around a bit with Plasma, UBPorts, and Mobian. The Pinephone is also the only phone I've tried mobile Linux on, which is known to have pretty underpowered hardware. And lastly, if it isn't clear, I want to have a free-as-in-freedom alternative to Android and iOS just as much as most people who are aware of and care about Linux phones, so I'm only writing any of this because I feel like it's necessary to provide some hopefully constructive criticism about these projects.

That being said: My problem with Linux phones is that aside from a few specific examples that I'll get to later, they come off to me as a massive amount of labor being wasted on the fundamentally misguided idea of trying to turn the Linux desktop into a smartphone. Of course, for you Stallmanites out there, I'm referring to the distinction between Linux the kernel and GNU/Linux (and systemd, GNOME, etc), since Android is famously based off the Linux kernel. If the FOSS community had the resources to do it, and also had some kind of leadership with a vision of what alternative mobile OS to build on top of the Linux kernel, it could very well do the same thing that Google did and build a mobile OS from the ground up that merely uses the Linux kernel for the low level hardware stuff. But over the past seven years, I've increasingly started to feel like all the hype people give to free software and open-source software is very misplaced and naive. It's true that the open-source development model is capable of creating software that solves moderately difficult problems, but I've increasingly started to feel like most of the software being written is tier-3 software, and most of the problems being solved aren't problems that should need to be solved in the first place. Sometimes the best way to solve a problem or write bug-free software is to just not bother writing the software in the first place, and perhaps instead write a snarky blog post no one will read.

From Noam Chomsky's famous idea of manufactured consent to Edward Bernays' entire career, much has been written about how despite living in an ostensibly free society, there are many different forces that are all vying for our attention and trying to condition our desires to ensure that we never think about or want anything other than an eternal repetition of the same. This is a far more effective form of control than outright coercion, because most people are tricked into believing that their desires are their own and weren't implanted in them by marketing professionals. It takes an individual with a vision, someone with the soul of an artist, or someone who is immune to propaganda, to see through this and create something that isn't merely what they were conditioned to want, and such individuals are rare. The open-source model of development however is essentially a collectivist one, unless maybe you happen to use tools that empower you to solve interesting problems without needing to marshal an army of unpaid hobbyists. It's not surprising that most open-source projects are probably going to end up being comprised of contributors who are clever, but not brilliant or visionary, creating things that don't need to exist or shouldn't exist. And to me Linux phones are a perfect example of this.

To return to what I was saying before about Android: When Google made Android, it was essentially trailing behind Apple's coattails trying to bring a product to market that did what people had already been conditioned to want. This is how capitalism works, despite all the propaganda that the ideologues of capital will forcefeed you about innovation and entrepreneurship, because the same reality that most people aren't visionaries applies on a macroscopic level as well. Most firms aren't going to have visionary leadership creating innovative products, but it doesn't matter because they can just copy innovation whenever it happens and still be successful. In fact, when the only incentive is making a profit as quickly as possible, it makes more sense to copy what other people are doing (it's working really well for China if you haven't heard). And so the whole system perversely is one where the endless repetition of the same is what is incentivized.

But in the case of Linux phones, or any alternative OS really, this same logic of copying what's successful shouldn't still have to apply. There isn't a financial incentive after all for mobile Linux developers to bring a product to market and make a profit; it's just a bunch of geeks working on stuff for fun, so even if there are going to be more people who will follow their programming instead of doing something weird and different, shouldn't there at least be an archipelago of different niche alternative OSes being developed around those few individuals who do have a vision? Well, this has all been ignoring that Linux is itself a copy of something else, namely UNIX. Linus Torvalds is a far better programmer than I will ever be, but at the end of the day his legacy is a copy of a shitty mainframe operating system from the 70s, and everything the free software community has done since then has followed the same patterns of trying to make alternatives to products developed by companies where there is a massive asymmetry in power against the free software community. This has only been made worse by GNU's goals of world conquest to benevolently proliferate more ethical software, since it adds a political incentive to copy what already exists to win over users who are already familiar with big proprietary tech products. Challenging users by creating something different and experimental and interesting works quite against that aim.

In the case of the Linux desktop, none of these things are fatal flaws, because at least the Linux kernel and the GNU coreutils work. This is probably because what those two projects set out to do was ambitious but also realistic for Linus and RMS to achieve, since UNIX at least was famously a shitty simple operating system and has been cloned many times. Despite being a *BSD user these days, I can at least say that the Linux desktop is workable if you don't use a full desktop environment, though audio is still awful and results will vary if you're using an Nvidia graphics card. Because again, if you're just using a minimal window manager and sticking with braindead simple software where there isn't a whole lot of room for things to go wrong, then as a user your expectations have been set for an experience that doesn't have a whole lot of room to disappoint.

But phones are a completely different beast. While the Linux desktop exists as part of a long history of the development of personal computing in which there were many UNIX and UNIX-like OSes that ran on personal computing devices after and alongside their main use in mainframes and servers, the interfaces have largely remained the same: There's a keyboard, and a mouse that came later. You can mostly get by using the Linux desktop with just a keyboard if you want, and the mouse is workable for software that needs it even if Linux like the OSes it's copying doesn't take advantage of the mouse and just treats the GUI as an interface for non-technical users. But a smartphone is pretty much the exact opposite.

Smartphones, in order to work around the form factor limitations of a phone,1 are designed to mainly be operated with touchscreens and gestures. And even still, the companies who created smartphones as we know them haven't managed to create an interface that fully succeeds at feeling as seamless to use a traditional desktop computer or laptop. Typing on phone softkeyboards is still awful after 15 years and you need a predictive text engine to make it remotely tolerable. You need a really good GUI to make a smartphone usable, and this is utterly foreign to the history of Linux and UNIX, which were designed to mainly to have a text-only interface. Worse still, while developing something like the Android or iOS GUIs from the ground up would in itself be a monumental task, developers would still have to deal with porting the Linux kernel to phone hardware and getting things like the touchscreen, camera, and LTE modems to work, especially when you consider that most hardware manufacturers just don't document their products or have terrible and incomplete documentation, not to mention that most of the hardware is proprietary.

So the very pragmatic solution to this that mobile Linux devs have largely chosen has been to just try to turn the Linux desktop into a smartphone GUI, and the results are exactly what one would expect from an idea like that. Everything on mobile Linux pretty much feels like the Linux desktop crammed into a smartphone screen. On my Android phone for example, if I open Firefox, the new tab page comes up and focuses the keyboard on the URL bar. I can scroll down and each of the most visited sites, recently visited sites, etc. are all big buttons, and I can select the rest of my tabs by clicking a button on the bottom next to the URL bar. There are three dots for the menu that brings up another element with a list of buttons. If I open the tabs page, everything is organized as a list of big buttons with previews of the current tab pages. It all is what you would expect a smartphone interface to feel like: everything is organized around the assumption that the user is on a smartphone where screen real estate needs to be made use of efficently so that it isn't awkward to use. In comparison to this, using Firefox on SXMO basically feels like using desktop Firefox with the GUI elements squished down. Tabs all run to the side of the window and overflow and are rectangles that you need to click on in order to see any of the content. You get the point.

This is also ignoring that everything other than the most minimal applications on mobile Linux feels unbearably laggy and slow to use, but as I said at the start of this section, I'm trying to give some benefit of the doubt to the mobile Linux devs since the Pinephone is a pretty underpowered device and also having hardware acceleration would help with this. Maybe hardware acceleration support for the Pinephone has improved since I last used mine. Either way, even if one was running a mobile Linux distribution on fast modern hardware or was using something that was super well optimized for something like a Pinephone, it wouldn't do much to help with the fundamental problem with the idea of Linux phones that the Linux desktop just doesn't translate to a smartphone interface.

The other pragmatic solution to this problem is to just make Android apps usable on Linux so that you don't need to either make a bad approximation of a smartphone GUI or build everything from scratch. Building everything from scratch would be the right way to do it, but Linux is part of a long tradition of not doing things the right way, and as I said before there is also the real problem of how to possibly do something like build an entirely new smartphone GUI toolkit for Linux without having any capital to turn it into a sustainable project. Until recently, Anbox was the only way to run Android apps in Linux, and from what I've heard it has never worked very well. There's a new project called Waydroid that seems like a promising alternative, although I haven't tried it myself yet. If it reaches a more mature point and fixes some issues like handling giving apps access to things like the host file system, it could end up making Linux phones much more viable.

This doesn't really solve the problem as I see it of trying to imitate what smartphones are supposed to be like, but I've mentioned SXMO here a few times both because it's the mobile Linux distro I've used the most and because it's one of the more interesting projects I've seen come out of this sphere. Really, it's the exact answer to my criticism that a Linux phone doesn't need to and shouldn't try to be like Android or iOS. People should use this as an opportunity to experiment with doing something different, which is exactly what SXMO is. It essentially is an attempt by the suckless crowd to get around the limitations of the smartphone form factor by making use of the few buttons on a smartphone (the power button and the volume rocker) to run commands. By essentially approximating a hardware input device similar to a keyboard by programming a bunch of keypress combinations onto those three buttons, SXMO is really somewhere in between a traditional PC and a smartphone by not being reliant solely on clicking on software elements to interface with the computer. It's a clever idea since it is just interfacing with Linux's userland the way it was meant to be used, though it also comes from a crowd of diehard UNIX philosophy fans, which doesn't appeal to me very much as a Smalltalk and Common Lisp person.

Enter the SqueakPhone, easily the most interesting and impressive thing I've seen to come out of the mobile Linux sphere. It uses the Squeak dialect of Smalltalk for the userland GUI stuff and has a custom built "system layer"2 for Linux called Synit, which would be too much for me to go into on my own here so I will just link to the project here for those who are interested: https://synit.org/. The SqueakPhone is a project that I only just heard about a few months ago and haven't yet tried to use, so I can't say how well it actually works, but I can't overstate how much I appreciate that someone out there is not only bold enough to attempt something like this, but is also exploring things both old but underappreciated like Smalltalk, and also is experimenting with developing an entirely new layer of the OS like Synit. I've always thought that Smalltalk, the programming language where graphical user interfaces were pioneered, ought to be used more for developing graphical applications and have never understood why it isn't done more often. Perhaps that's because Smalltalk is such an insular system where everything is meant to live in its own image, such that it practically becomes its own separate world from the host OS. In any event, it's something to keep an eye on, and potentially one of the most promising projects in the mobile Linux world.

So that about sums up my thoughts on Linux phones as of right now. I didn't touch on SailfishOS, which I've never had the opportunity to use, although it seems like it has one of the better GUI toolkits in the mobile Linux world (though sadly that's one of the proprietary parts of the OS). There's also NemoMobile, which is basically an open-source clone of Sailfish's GUI, though it seems to have very little development being done on it compared to a lot of other mobile Linux projects. I also should mention in passing since they've been such a big part of driving Linux phone development that Pine64 has recently gotten some bad press from people in the community. You can go read the two linked posts if you want to know more, but suffice to say that Pine64 isn't a company that I particularly want to support anymore, which leaves a bit of a void in the Linux phone community that will hopefully be filled by a better company. All in all, I have a lot of problems with the entire concept of Linux phones, but I'm keeping my eye on Waydroid and SqueakPhone, and I can respect SXMO even if it doesn't appeal to me a whole lot personally.

If you just want a damn answer about whether or not you should use a Linux phone, I would say that even most technically competent people would probably not want to use a Linux phone. I've heard of people getting by using them, but my experiences playing around with some mobile Linux distributions have given me the impression that trying to use a Linux phone as my daily driver would be painful and irritating. Even for basic stuff like browsing the web, listening to music, or messaging people, everything is severely held back by how bad the Linux smartphone GUIs are. If you really just care about your freedom and privacy, use GrapheneOS or LineageOS. I've used both; they're quite good and you can pretty much run both without needing to use any Google services, unless you need to use banking apps on your phone or Google Pay or something like that. I don't use any of that stuff though.

I also didn't mention SMS or phone calls because I don't want people to send me SMS messages or call me on the phone. Phones are stupid and we should get rid of them.

Epilogue: We Don't Need Phones Anymore

On that note, something I've mentioned repeatedly throughout this screed is how I think the smartphone form factor is the major limiting factor on creating alternative mobile OSes. I'm very tired of how we still pretend like smartphones are cell phones and not a tiny computer that fits in your pocket and has an LTE modem. Hell, a lot of smartphones these days are more powerful than my main laptop (an old Thinkpad, obviously). Nobody calls people on the phone anymore or sends text messages; everyone uses Discord/Telegram/Signal/WhatsApp/etc. for text and Zoom or [insert competitors here] for voice. The prospect of having a personal computing device in your pocket all the time is wasted on treating it like a device primarily for communicating with people or otherwise playing terrible video games. We live in a world that has way too much communication with hardly anything meaningful being said.

It's been my fixation since I first got into tech in 2015 of trying to practice a DIY cyberpunk ethos like I mentioned in the start of this post by building a wearable computer rig that would basically take the concept of a computer that is always on my person to the furthest extremes I can take it with consumer electronics and not a lot of money. This is an interest apparently shared by a lot of people given the recent trend in building cyberdecks, which has made me really happy to see even if in practice none of them seem to provide much benefit over just using a laptop. The whole point of a cyberdeck in Neuromancer and other cyberpunk media is that you jack into a virtual world using the cyberdeck, rather than primarily interfacing with it through the screen. Unfortunately, the vision of cyberspace from cyberpunk media doesn't really exist unless maybe you count VRchat, and to my knowledge there aren't any applications of VR right now where I could do something like write a program in a virtual environment. If there were something like a MUD/MOO that existed in VR, I would be all over that and get a VR headset and build a cyberdeck immediately.

Either way I've always been more interested in augmented reality anyways. A few years ago when Pokemon Go was a trendy thing, for a brief moment the mainstream world was talking about the Situationist dérive, and even though it only lasted the lifespan of a fad, I think AR is the perfect medium to explore these sorts of critical theory concepts that interest me a lot personally and form the background of a lot of my philosophy studies. This is why it was always really depressing to me that Google Glass never took off, in fact got a lot of backlash, because even though what it would have been used for seemed very lame, the form factor of the device was excellent. I've on and off the past seven years looked a lot into how one would create a DIY augmented reality monocular like the Google Glass, but it always comes down to a problem of needing to make custom software designed to work within the constraints of a tiny monocular display that would probably involve projecting an OLED screen onto a tiny piece of plexiglass. And like I said at the start of this, I'm just a pseud who never finishes any software projects or makes anything of substance.

Another thing that held back this idea for a long time was figuring out what sort of input device to use. I had initially thought of trying to have some kind of small keyboard that mounts on the forearm, but typing one-handed on a regular QWERTY keyboard is very slow and uncomfortable. In the past two years I learned about chorded keyboards, and there are a lot of different variations on the concept in different form factors that would work really well for this sort of purpose. Chorded keyboards take some time and effort to learn how to use, but nobody said that becoming a cyborg would be easy.

Footnotes:

1

Can we please just move beyond the phone form factor already? No one even makes phone calls anymore for fuck's sake.

2

"The system layer is an essential part of an operating system, mediating between user-facing programs and the kernel. It provides the technical foundation for many qualities relevant to system security, resilience, connectivity, maintainability and usability." - https://synit.org/book/glossary.html#system-layer

Created: 2022-09-15 Thu 21:43

Last updated: 2024-03-05 Tue 22:57