45 comments

[ 4.5 ms ] story [ 93.1 ms ] thread
Reads like a rant.

Linux software is backwards compatible if packaged for that purpose.

Yeah, it does read like a rant, but I think the suggestions are valuable. I've been using Linux since the first release of Slackware back in 1994, I believe. For a number of years, I developed desktop applications for Linux for some of the companies I worked at, but it was always a pain to support multiple distros and multiple versions of the same distro. I got tired of the effort after a while and moved to doing web-only programming. Then, in 2010, I gave up on Linux as a desktop environment altogether, simply because the user experience was so much better on macOS (OS X at the time).

I think having a standard that all distros adhered to that provided a common, universal baseline that developers could depend upon would go a long way toward increasing developer productivity, interest, and desktop usability.

We have a reasonable standard, Xorg.

Everything else you can package along with your application as a library. Steam does this farely well and manages to work on every distro I have tried, even when they officially support(iirc) just Ubuntu.

As a user with a HiDPI laptop that needs to connect to non-HiDPI external monitors, Xorg is not reasonable. macOS is way ahead.
When is the last time you have tried this?

I use KDE with Arch Linux on a 2015 retina mbp and often give talks on projectors that are 800x600. Everything works.

The desktop should just be a set of elevated browser privileges.. then making a new desktop is just like making a webapp. To do otherwise is to declare that the one truly crossplatform ui target that we have (html), is inadequate. In which case we should focus on why that is, and fix THAT for Everyone.
(comment deleted)
I'm not sure I understand what he's getting at. What does it mean to run "on top of" vs "in"? What's the problem in saying, "To run our app you need to have libraries X, Y, and Z installed"? Is it a big deal to pick a font rendering library and tell users they need it installed to run your app?
It is when those users technical level is thinking that the browser logo is a synonym to turning Internet on, and call helpdesk when it isn't shown on the desktop.
The subset of people who need the help desk to "find the internet", but also install their own software is pretty small, and if that's the target audience then the software developer should know that and install the prereqs automatically - either bundled with the app (best option) or by bootstrapping of the OS's built-in package manager (apt, emerge, etc.).

People are generally more tech savvy than ever before, and we're past the point where developers needs to degrade the experience for everybody to target a small group of completely clueless end users.

That point of view is what makes regular consumers flock to Apple, Google and Microsoft platforms instead of GNU/Linux.
To be clear, I'm not trying to sell Linux, and I don't care whether people use it or not. In fact, if gaining users means dumbing things down then I'm happy they go elsewhere - it's probably best for everybody.

I was specifically curious what the presenter meant between "run in" vs "run on top of". I've used Windows, OSX, and Linux, and I don't understand what he's getting at. Software runs "on top of" Linux just as much as it does on top of OSX and Windows.

> What does it mean to run "on top of" vs "in"? What's the problem in saying, "To run our app you need to have libraries X, Y, and Z installed"?

In short: DLL hell. Linux Desktop believes it has solved this problem through the use of an over-engineered and inflexible system called "package management" that fails as soon as you try to do something the distributor didn't intend, like install an up to date version of an application or, god help us, 2 different versions of the same one! Don't even think about installing an application to a different disk, that's madness. The cure is worse than the disease.

To illustrate the difference in philosophy between "on top of" and "in", spend some time playing with older desktop OSs like MacOS System 7, or even DOS. Neither cares where an application is stored, even if it is on completely different media. "Installed" doesn't even really mean anything to them as far as applications are concerned.

I’m sympathetic but it’s tilting at windmills. These are the exact same things people were arguing about 20 years ago- if only everyone in the desktop Linux world would all agree to standardize on a bunch more high-level common things (package managers, desktop environments, etc.), then some form of desktop Linux would become a juggernaut that would steamroll Windows and take over the world.

Arguably Android has achieved the role of Windows in the mobile world, but not because the Linux community collectively all agreed to standardize on it. The fact that it’s Linux under the hood is almost incidental to its success. I don’t think that’s the kind of victory he wants though. 20 years ago there was a sense that desktop Linux would just magically converge, eventually, to effectively a single platform. But there’s never been a critical mass of support for any one distro or desktop that caused all competition to wither away.

There may absolutely still someday be a popular form of desktop Linux that can go head to head with the big players in terms of market share, but if so I don’t think it will be referred to as “Linux”, and most users won’t even know that they’re using a Linux/GNU/etc. system. Maybe ChromeOS can get there, who knows. But that’s likely not what he wants either, he wants what so many people thought was inevitable 20 years ago. I would never dissuade anyone from trying to make that a reality, but I personally lost hope many years ago.

This talk is not about Linux. Linux is a great platform that takes ABI and backwards compatibility seriously.

This is about the common userspace stack that we commonly refer to as Linux. There are two issues with this stack. One issue is that there is no major distribution that takes its role as a platform seriously [0]. The second issue is that there is a lot of common ground between the major distributions that is not standardized.

If different distributions have different ideas of package management, then that is one thing, and we can live with that difference. If different distributions have the same idea of using openssl, then they should do so in a compatable manner.

[0] I would go further and say that there is no distribution that even pretends to be a platform.

> There may absolutely still someday be a popular form of desktop Linux that can go head to head with the big players in terms of market share, but if so I don’t think it will be referred to as “Linux”

I agree. The Linux Desktop community has proven over several decades that it is simply not up to the task of doing what needs to be done to put together a good Desktop OS. If the Linux kernel starts being a serious contender on Desktops it will be because someone has completely replaced the userspace that currently sits above it and given it a new name to differentiate it from all the problems of the Linux Desktop. I thought google might do this with Android, but it seems that they aren't really interested. Even their recent additions to ChromeOS seem to be only targeted towards enabling web dev workflows.

Android is all about their version of Java, the NDK is there only as helping hand for implementing native methods, importing code from other platforms, audio and 3D graphics.

Brillo was supposed to be Android with userspace C++ for IoT, until it got rebooted as Android Things, having features that regular Android still lacks, like userspace drivers in Java[0].

Which is understandable from the point of view of security, but also shows how the actual kernel is mostly an implementation detail for the large majority of app developers.

[0] - Actually Treble allows them as well, but in a different way.

Exactly because Android has a standard desktop stack in form its Frameworks, and the NDK only exposes Android native APIs, ISO C and C++ libraries, nothing Linux specific.

ChromeOS as well, in this case by standardizing on the Web Platform as user space APIs.

If Google plans for Fuchsia really come to fruition, that incident will be another footnote on Linux's desktop presence.

Not sure I entirely get what the problem is. I am happy with my distributions NOT including stuff I don't want. I develop on Linux and maintain servers. I do not want anything unnecessary on those machines by default because it makes some developers life easier because he doesn't need to read the doc or search a nebulous error message to get dependencies anymore?
My feeling is that we need to define a fixed point like an API at the interface of software developers and desktop designers.

The fixed point would allow developpers to develop apps that would compile and run on any desktops, and desktop or distribution designers need liberty degree to explore, innovate and evolve.

POSIX did this for the unix commands and system function API, and it was a success. It isn't perfect, but it provided a fixed point. Windows has Win32, etc.

There is a UNIX standard for GUIs, that "beautiful" Motif thing, which naturally is not something that consumers would like to deal with.

http://www.opengroup.org/standards/unix

That's not an API. The goal is to let desktop developper inovate by keeping backward compatibility with desktop applications.
I think the Linux desktop works just fine. At times of shrinking desktop usage, the goal should be to preserve what great apps we have (Inkscape, Krita, GIMP, LO, FF, Thunderbird, and hundreds of others), rather than to come up with new grand unified package managers and GUI frameworks that only serve to put additional burden on actual developers of said F/OSS software. It's not that the alternatives are free of problems either. Have you recently used Windows 10? It's total spyware crap and only useful for gaming. What about Apple's laughably limited, and increasingly failing hardware? I think Ubuntu comes as close to a mainstream desktop Linux as it gets. And if you're concerned about becoming dependent on a single vendor, you can switch to Debian, or merge Ubuntu packages into Debian, or use Devuan, etc.
Overall, all of them are fine desktop environments.

But the thing is, if you're making a large application, for Gnome for example, then you can't by default be confident that your application can work very well on other desktop environments like KDE or XFCE.

I think this is what the speaker have meant: Linux Desktops moves many responsibilities on to you (You need to test your app against for each desktop environment for example). And sometime, that many responsibilities can be troublesome (burden, to say the least).

The main underlying issue is that, aside from Linus, no one seems to believe that they are creating a product for which they should be responsible to users. Everything that is wrong is someone else's fault in some way, because the whole Rube Goldberg machine of Linux userspace is slapped together from disparate projects with no coherent design philosophy.
"But the thing is, if you're making a large application, for Gnome for example, then you can't by default be confident that your application can work very well on other desktop environments like KDE or XFCE."

This just isn't true. There are literally 40 different graphical environments available that can run X applications. If your target desktop has the required libraries for your app to work OR you have packaged them with your app it will work regardless of users desktop.

> I think the Linux desktop works just fine.

Sure, if you ignore all the data to the contrary. Despite repeated assurances from the Linux Desktop community that it is "good enough" it still has almost no buy-in, even though it is free. Valve has taken on the herculean task of making Linux Desktop a viable platform for games, which have long been an excuse as to why there's so little adoption, and still there are very few takers. Microsoft has seemingly put a lot of effort into trying to kill the Windows Desktop, and still there is no traction.

Until the Linux Desktop community actually starts listening to what users and developers are saying about why they don't like the Linux Desktop, and start taking responsibility for its problems, it is unlikely it will ever be taken very seriously.

There is no such thing as a "Linux desktop community" that can listen or respond to user requests (nor are Apple or MS listening to what their users actually want). There are, or have been, individual developers interested in particular tasks to scratch their itch, developing for fun, under a grant or GSoC-like sponsorship, etc.

Wrt fragmentation: on Windows there's a confusing choice of multiple app frameworks with no clear roadmap as well, which is very frustrating to Windows developers: Win32/Winforms, WPF, UWP, etc. Most new desktop apps, even those by MS such as Skype Desktop and VS Code, are cross-platform and based on Electron.

Apple has recently ditched Open GL; what kind of message does that send to Mac OS app publishers regarding any long-time commitment to the Mac platform?

The situation on Linux has been like that for ages; it's not going to change unless you want to throw away all the apps there are (cf. https://xkcd.com/927/). And maybe Ubuntu's UI is a bit frugal and ugly compared to Mac OS, but it's working in a predictable and rational way, and no less unified than Windows. If you have an issue with it, you can change it the way you like, rather than expect others to do it for free.

Excuses don't change reality: very few people are buying what Linux Desktop is selling, even at a price of $0. You can rationalize that as a failure of reality if you want, I suppose.
Still with all those issues that you point out, we have more luck targeting Apple, Google and Microsoft platforms than the plethora of GNU/Linux desktops.

Specially if we expect the users to pay for desktop software.

Desktop is shrinking because less computers are being bought as a 10 year old computer is still quite usable.

However laptops and 2-1 convertibles are also desktops.

Windows 10 is still less evasive than those Android devices on our pockets.

What is needed is a "dictator", like Linus is for the Kernel, or Apple is for macOS, Google (to a lesser degree, but still) for Android.

This need to be someone that truly cares about a desktop experience, and backwards compability, like Linus cares for the ABI for Linux.

The only people doing anything remotely like this is Elementary, but it is very far from reaching any kind of critical mass. Also that its perceived as macOS clone hurts it.

I think if this ever happens it will be a company doing this, and it won't contain any kind of Qt, GTK, GNOME, KDE. Perhaps one of the big ones that currently lack a desktop platform. Lets hope is is free software.

Wasn't Mark Shuttleworth fulfilling this role for Ubuntu as the Benevolent Dictator For Life?

Ubuntu made great strides towards mainstream usability on the Linux desktop.

I think the GNOME project has a strong focus on design, with its Human Interface Guidelines going back many years.

Like Red-Hat before it, Canonical has given up the idea that GNU/Linux desktops would ever be profitable and like everyone else turned into the server and IoT space.
Fair point.

I think the market doesn't have room for another desktop OS beyond niche uses.

As in, why would a mainstream user go with Linux over MacOS or Windows?

Same deal with Android and iOS. Insufficient room or need for #3.

Also, apps/software. Devs don't want to support 3 OSs. Users don't want to switch to an OS missing software.

If Microsoft couldn't do it with Windows phone, I don't see why anyone else could.

(Although, I just recalled, Chromebooks exist, found a niche (education, grandparents) and found a monetization method (vampiring on user's privacy.))

Makes me wonder if Ubuntu could do a ChromeOS-like strategy. But without the data-sucking.

> As in, why would a mainstream user go with Linux over MacOS or Windows?

How are you defining "mainstream"? Because in the context of the Linux Desktop, my experience is that people always define it to mean "someone who is exactly uninterested or stupid enough to win me this argument". Resist the urge to target some nebulous "mainstream" user because you'll just end up with another internet kiosk.

What should be being targeted are the kinds of people who use desktop computers for work and hobbies and actually like computers. Some will claim that that's what Linux Desktop does, but the evidence says otherwise. If you aren't a webdev or OSS zealot, chances are you aren't using Linux Desktop. Personal computing is a hobby I grew up with since the 80s and I don't use the Linux Desktop. There are people who've been in personal computing since before that who are outspoken critics of the Linux Desktop.

I think I get what you're saying.

Wouldn't a computer enthusiast be happy and comfortable with desktop Linux though? It's still hackable as you like and you can install a more.... I mean a less simplified desktop environment.

(I assume by "targeting the mainstream" you mean simplification of the UI, mostly)

I don't like any OS that oversimplifies, such as by removing advanced options (why not put them on another screen?) But I am a strong supporter of proper usability, including in Linux - just that things should be intuitive and simple at first glance, and aesthetically pleasing. As in I don't want the Linux UIs of ~2000 to return.

Short version and my own rant (IMO)

Desktop application developer should write their software for ONE Common Linux Desktop (abstraction).

This would defines all rules on how fundamental things must be done and includes everything concerning desktop applications.

The developer must not care about Gnome, KDE, Ubuntu, Xfce, .deb, flatpack, Snap or whatever, because this is insane and beyond stupid.

1. Desktop environments, Frameworks like Qt and Gtk and Distributions need to support the ONE set of Linux desktop rules.

2. Developers and their applications can rely on these rules only.

Until this happens we are caught in a infinite while loop.

while (1) { if (haveOneLinuxDesktopApi()) break; }

There's are already kind of that mindset given by Freedesktop.org, this work really needs to be embraced and supported more to bring relevant parties together before they decide to write yet another package format.

I think the main problem is not a technical one but that developers of desktop environments, package managing and frameworks for some reason don't reach out to each other and work on ONE common ground for the desktop.

Look at Snap and Flatpack, why on earth don't they work together for one solution and instead punish users and application developers again and again.

The current situation is a nightmare for users and application developers. There is not a single desktop application which benefits from this mess.

Only a philistine is looking at a robust interesting marketplace of ideas and bemoan the degree of choice which has never been a "nightmare" in any meaningful way to users.

It seems likely that the ultimate solution to making it easy to distribute proprietary/complex to package software on linux will end up being Flatpak because its pushed by but not owned by Redhat.

Regarding Snap Canonical wants to own the marketplace so that ultimately they can monetize this. Its a single market not a way of distributing software like apt. Since only Ubuntu will ever support it shockingly planet earth will ignore it and like most Ubuntu specific technology it will die on the vine. See upstart, mir, Unity for reference.

The way I see this going:

  1. Android is the popular mobile planform on Linux
  2. Fuchsia will be the popular desktop platform on Linux
Personally I would like to see other prominent options to both of these. We will likely end up in a situation like (1) for desktop as well if we wait until there is a large user base of (2) then decide that we need something less centrally controlled.
Fuchsia uses its own kernel called Zircon (previously Magenta).
Honestly, the Linux desktop war has been won by Debian/Ubuntu. I know of no casual Linux desktop user who's not on Ubuntu, or a Debian version that's sufficiently close.

Packaging for Ubuntu first and having a tarball that any other use can play around with to get running is fine for most commercial software's needs. Chances are if you're running Slackware, Gentoo, Nix, or other non-mainstream Linux distros you'd be hard pressed to use commercial software anyway.

Interesting take.

I agree about consistency and intuitiveness.