There is no hope for a linux smartphone due to the reality that there is no hope for the linux desktop. This is aptly demonstrated by the presenters slide of the linux kernel with a single through line into userspace, where you are shown a single interface (more or less) represented as the kernel, into a byzantine maze of components, represented by userspace.

Who actually wants to target such a mess? Nobody statistically. To enter the linux market you need to compile a matrix of distros, init systems, kernal module subsystems, package managers, device daemons, display servers, window managers, desktop environments, custom configuration formats, filesystem hierarchies, custom socket protocols, custom syscall interfaces, and whatever else. Or just literally re-invent everything and go your own way (Android and similar efforts). Repeat for each and every version of a "distro", each permutation having their interpretation of the correct "linux/unix" way. When you are developing software either for a direct profit motive or for a user freedom motive, they are aligned with having stable environmental targets that continue to work within a reasonable timeframe.

We all love siting conway's law: "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure". The Linux userspace communication structure is plain chaos. As an app developer: what distro am I on, and at what version, what config file am I fiddling, what custom socket protocol do I need to implement, what obscure distro dependent library do I need to link against, and what horrendous wrappers do I need to write to get my software to not only run on "linux" but the other platforms where most users are.

Windows, MacOSX, IOS, and Android-flavors understand this better at least from a market perspective, because the most important aspect of computing is that software works more than less of the time. works > security. I don't have to upgrade my OS to get a new version of an app. I don't want an OS upgrade to change the version of an app. I don't have to know what static vs dynamic linking is. I don't have to dig into yet another custom config format to change simple settings. As much as I enjoy discussing the particulars of tech, and digging into details from time to time, at the end of a long day I just want my computing to work. The linux ecosystem does not provide that.

Yes manufactures play games with hardware locking out FOSS efforts. Some of that can be remedied by serving the legacy hardware market or providing manufactures an actual platform to target. At the same time, outside of the kernel, I see no effort of the linux userspace providing any sense of a unified UX, consistency, discoverability, or stability. Each new half decade presents yet another set of inconsistent interfaces, confusing commands, esoteric configs, outdated tutorials, and the general sense that FOSS is not positioned to serve tech at the human scale.

Until userspace can provide an interface that is stable, more or less like the kernel for a decade or more, with opportunity to shim for backwards compatibility for edge cases, we will never see linux exceed further than pets of backend infrastructure.