> Hopefully someday we'll move on to newer, simpler app frameworks (like LVGL and Flutter) as we discard our Old Underwear: X11, SDL, GTK, Qt, ...
Ummmm what?
SDL is basically timeless as it's just a layer that abstracts various platforms (Wayland, X11, Mac, Windows, game consoles…) to offer one single API for just making a window with a GPU context, receiving input and stuff.
GTK is a really solid toolkit with a strong, consistent UI design philosophy. The upcoming GTK 4 transitions everything to GPU-based rendering without reinventing the whole toolkit from scratch (unlike Qt with QML, Windows with WPF and UWP…). GTK suffers from lack of funding sadly, so it's a slow project, but the current state of GTK4 is already pretty impressive.
Qt is a monster framework with corporate interests working on it, but it's also really solid and QML/QtQuick was basically Flutter years before Flutter (so actual Flutter is just Google NIH syndrome…).
"Simple" UI libraries like LVGL are always bound to make your life not simple. They usually don't support accessibility, lack support for various platforms (you've just had to port that one to Wayland), have various limitations and so on.
Flutter is not even simple.. it needs the whole Dart VM or compiler whatever monstrosity to run.
If Google can't control it, they build a competitor. If Google can't figure it out, or if it is not 100% what they need, they will build a competitor.
This has caused tons of problems for both the industry and consumers. For example, Android updates would be much less of a mess if Google had used linus' LTS kernel...
How does sticking to an LTS solve the lack of stable driver ABI? That’s what project Treble from Google was about - providing a stable ABI driver authors/vendors can target so that an OS update can build and function correctly.
Also I don’t know how closely you followed the ARM tree of the Linux kerne but pre-Google the authors were resistant to the board config approach because you don’t have that on x86 because there isn’t an SoC that bundles a lot of the functionality. It wasn’t until Android that the Linux tree started taking ARM more seriously (which arguably it wasn’t really before anyway)
Russell King as recently as 2009 was against it. It got merged around ~2013 so it took about 4 years. The first Android phone was supposed to be 2009 but IIRC it got delayed to 2010 because of the iPhone (announced 2008). I think my characterization of this is fair and accurate.
> Well, for one thing you have only one ABI to consider if you go with the LTS instead of hundreds we have today.
I don't follow. You have 1 Android release per year. There is a new LTS kernel every year. I don't see how sticking to LTS solves the problem. You have to actively hold off on Linux kernel releases to get any advantage of this process. For something like Android this means they'd be forking LTS & it would be even more work to move to a new kernel (all the out-of-tree development + all your driver vendors switching kernels). So now you'd be complaining why Android is using such an ancient Android kernel. Treble solves a real problem and has nothing to do with NIH unless you just define all kernel development happening at Google as NIH (which would be strange considering how many Linux kernel developers and maintainers they employ).
I'm not sure I agree with this assessment but even if this were true I still think it's a good thing that we have an open-source alternative to Qt considering the recent drama about its licensing [1].
I wonder why one would chose a phone with Ubuntu Touch over some non-linux phone.
With Ubuntu Touch, you can not install anything on the phone. It has a read-only root filesystem that gets updated over the air.
So just like with the locked down phones (iOS, Android), to gain control over the filesystem, you would have to root it. But then your changes would get wiped with the next update.
This seems just as far from a "Linux Phone" as Android to me.
I am looking forward to one day having a phone that runs Linux. But then I want the same freedom I have on my laptop. To install whatever I want from the Debian repos via apt-get and update via apt-update / apt-upgrade.
Well, just so that you don't throw the baby with the bathwater...
Pinephone [0] is a platform designed by pine64 together with the community. A community that is very FLOSS-centric.
That phone has a few pieces of proprietary firmware, that's true[1] (mostly for the RF parts). But besides that, you can pretty much do anything you want with it, even write your own bootloader[2].
By default, the bootloader will try to boot from the SD card over the EMMC, so you can just slap an arbitrary system image on an SSD card to distro-hop. That's right, there are multiple distributions available: Ubuntu touch, which is indeed built like you say, but you should also have root access OOTB, and AFAIK can change every piece of the system (OTA source, system image, build your own). But also a few others like Maemo Leste (a meego spiritual successor, I think), SailfishOS, android[3], or even plain Linux distributions: PostmarketOS [4] is an Alpine-based distribution tailored to phones, but you can also run Manjaro, Arch Linux, Fedora, Nix, and port your own.
The Lima open source graphics driver for Mali GPUs works quite well, so that helps a lot compared to other "open" phones.
A similar phone is the Purism Librem 5, that goes further with the de-blobing effort, though the price point is quite different.
Ubuntu Touch (UBports) is one approach to security, but not the only one. I have no problem with a 'locked down' OS as long as I'm the one locking it down. Ubuntu Touch locks down the phone, under your control. iOS, and to a degree Android, lock you out of your phone. Having used the Pinephone with various distros for a couple weeks now vs the various unlocked bootloader/rooted/alternate Android installs I've used over the years, I can tell you that even a 'locked down' Linux phone still feels more like 'my' device than Android ever did. For those who don't like restrictions, even self-imposed ones, UBports probably won't make a lot of sense.
That said, Mobian is working better for me than UBports right now. Theoretically, I like what UBports should be able to offer. But right now in practice Mobian has the advantage. It will be interesting to see where things stand in 6 months.
> It has a read-only root filesystem that gets updated over the air. ... you would have to root it. But then your changes would get wiped with the next update.
No, given root access you can simply overlay a separate read-write filesystem over the readonly system partition. It can be as "Linux" as any Live distribution with persistence.
Yes, but if it wasn’t already done out of the box (no idea if it is or not!), you’d need to apply the changes to mount the overlay to the root on every update.
I'm not as familiar with UBPorts/Ubuntu Touch, but you can do this with Debian on the PinePhone, or use other package managers like Pacman with Arch/Manjaro. I think you're conflating the phone with UBPorts, which is just the preloaded OS on one edition of the phone. There's nothing Ubuntu-specific about the PinePhone.
Mobian on the pinephone does exactly that. There is nothing stopping someone from a) flashing the eMMC directly to a new distro or b) flashing it to an SD card to try it out.
That's just Ubuntu Touch thing, but there are other distros out there. You shouldn't think about phones like Librem 5 or PinePhone the same way as you think about "Android phones" - there's nothing that ties them inherently to a single operating system. They're rather more like a PC where you can choose your distro by yourself.
However, if you're looking for "out-of-the-box GNU/Linux experience", Librem 5 comes with PureOS, which is essentially a FSF-approved Debian. See https://puri.sm/posts/what-is-mobile-pureos/
Just the idea of a Linux phone! Use what you know and love, same code, same quirks, same features (man, how I hate feature inconsistency).
This is why it felt weird to me that there were special distributions at first, but it seems like we're finally mainlining (pretty standard Debian, Arch, Manjaro), which is nice.
It seems like GNOME shell is also being adapted, which is exactly what I wanted to see. Hopefully some other DEs and large apps will follow.
>I am looking forward to one day having a phone that runs Linux. But then I want the same freedom I have on my laptop. To install whatever I want from the Debian repos via apt-get and update via apt-update / apt-upgrade.
> I wonder why one would chose a phone with Ubuntu Touch over some non-linux phone.
This is a false equivalency. If you don't like Ubuntu Touch. Try Mobian (Debian) or Manjaro for Pinephone. The Linux phone is still in its infancy, but its prospects now are far better than they've ever been. And even if it's in a rough state right now, my next phone is going to be Linux simply because of how much control Google takes away from users (let's not even get started on Apple).
I was using it here[1] because the TTGO libraries were using it and it looked like a solid GUI. Unfortunately I took the TTGO samples and extended them instead of doing things from scratch and tbh the code for AWatch is an embarrasing mess that just happens to function enough to pass as working.
However... When I was doing all this, TTGO used LVGLv6. LVGL had just released 7, changed everything on their site and all their support. Documentation were pointing to a mix of v6 and v7 items, and there are breaking changes.
When I say breaking changes I mean the entire freaking toolkit is different in the way styles and widgets are handled. I have to rewrite everything by hand to go from 6 to 7.
Lilygo updated to v7 recently but I haven't had a chance to update the AWatch code for it, nor am I inclined to. For a do-over. I get that LVGL is good for say, Arm project size stuff but on ESP32 in the Arduino IDE it's no fun, a sentiment well expressed here in the current docs[2].
One other pitfall I found was that I wanted to be able to dynamically draw items on the screen so I could create a decent Protracker VU-meter for AWatch and possibly a little finger note thing. I ended up falling down a Canvas[3] rabbit hole. Do not touch Canvas if you can avoid it, especially on a low memory platform like ESP32. I had massive memory problems with it. Again, this was 6, not 7 so YMMV but it's put me off for life.
I'm looking for something simpler with limited inheritence. I don't forsee a need for something as complex as LVGL on a simpler watch like the TTGO T-Watch series.
Like other people here have mentioned Ubuntu touch/UBports is probably not the most Linuxy thing you can run on this phone, and there’s a wide choice of distros to choose from. It’s almost like real Linux! ;)
That said I love seeing the momentum and attention the PinePhone is attracting. Can’t wait until my order arrives.
Interesting, this page reliably crashes Firefox on my phone. This is immediately after Firefox decided on its own to "upgrade", and erased all my tabs.
Ummmm what?
SDL is basically timeless as it's just a layer that abstracts various platforms (Wayland, X11, Mac, Windows, game consoles…) to offer one single API for just making a window with a GPU context, receiving input and stuff.
GTK is a really solid toolkit with a strong, consistent UI design philosophy. The upcoming GTK 4 transitions everything to GPU-based rendering without reinventing the whole toolkit from scratch (unlike Qt with QML, Windows with WPF and UWP…). GTK suffers from lack of funding sadly, so it's a slow project, but the current state of GTK4 is already pretty impressive.
Qt is a monster framework with corporate interests working on it, but it's also really solid and QML/QtQuick was basically Flutter years before Flutter (so actual Flutter is just Google NIH syndrome…).
"Simple" UI libraries like LVGL are always bound to make your life not simple. They usually don't support accessibility, lack support for various platforms (you've just had to port that one to Wayland), have various limitations and so on.
Flutter is not even simple.. it needs the whole Dart VM or compiler whatever monstrosity to run.