That dialog also invokes so many issues with computers today.
When I open a program, I want to use that program. I don't want to update it, I don't want to see all the new features, I want to USE it. I opened it because I had a task to complete and all this junk is getting in my way.
And same when I close a program, as the author hits on very well.
Basically, the computer/program/etc always wants me to do something for it, but it never asks for those things at an opportune time.
No, I don't want to update my computer right now, and no, updating overnight tonight isn't good either because I need to keep this program running until tomorrow. I understand that your new UX is better for me, and I'm sure I'll love it, but forcing that on me right now is preventing me from doing what I need to do. I see your error dialog describing some odd issue, but I don't have time to triage that right now and decide to take the time to fix it.
I wish software would respect the human element more. My time and attention is valuable, please don't interrupt it carelessly.
Personally I almost never agree with these "the desktop is dead" kind of articles. If anything, the problem this author has to be exacerbated by the move away from the traditional desktop style than an embrace of it. That preview close dialog is not something you'd see 20 years but is something you see in "apps" all the time.
Perhaps the problem is, as you allude to, that software is hostile to the user now. There's always something more than simply being a tool that you buy, use, and close. Now most programs are merely portals for "services".
> That preview close dialog is not something you'd see 20 years
That’s because the application would straight up lose the files without prompting.
Also pretty sure text editors had something similar 50 years back, that’s why you :q! from vim, :q would tell you that you have unsaved buffers (or whatever the lingo is) and refuse.
TFA is literally abusing a crash-resistance feature out of laziness, and will no doubt complain when it fails them. 20 years back we’d all trained ourselves to save with regularity to avoid issues, that feature would be considered manna from the heavens, and tfa absolutely mental.
Completely stupidly too, I must add:
> This is the dialog that I see every time I want to close the Preview app to clear my desktop of all that clutter in a hurry for a video call.
MacOS has a shortcut to minimize all windows! It even has a shortcut to hide all aplications but the current one! You don’t need to close anything to “clear your desktop in a hurry”!
Yeah but the semantic difference between "hide" and "quit" is a very technical one that doesn't need to exist. On mobile it doesn't happen, and we can thank Android for that, as they insisted from day one that multi-tasking APIs should not require the user to manually manage memory on the device. When Apple added multi-tasking to iOS later they copied the Android design more or less exactly. Browsers do something similar for browser tabs now.
However this was never brought to the desktop, largely because native desktop APIs are dead and none of the companies that fund them are interested in improving them. We get the web and if it sucks, well too bad.
> Yeah but the semantic difference between "hide" and "quit" is a very technical one that doesn't need to exist.
Funny, because I think the exact opposite. "Hide" means, "stop showing it for now, but keep it around". "Quit" means, "I'm done with you and I expect you to not be doing any work until I start you again". It's a very significant usability difference.
> On mobile it doesn't happen, and we can thank Android for that
To this day I consider it to be the worst, most dumb idea Android ever had. I hate it. It's the reason I hated my first smartphone. It's the reason why, from the second phone on, I only ever buy top-of-the-line most overpriced flagships available - I have to overprovision resources to ensure the phone works smoothly, because there are countless of background processes doing god knows what, that cannot be killed and prevented from restarting.
I know best when I'm done with an app. I want to be able to kill it, and all its background processes, and I want them to stay dead until I change my mind. If I were designing a mobile OS, I'd make the distinction between "hide" and "quit" as clear as day, and make it an app store policy violation for an app to execute anything in the background after being "quitted" by the user (polling for notifications would be handled by the system).
I agree with you about this distinction being important, but I come at it from a different angle - I don't mind if most apps operate in the background as they need, with preemptive scheduling like Android. But I really, Really mind if I don't have a rock solid way to quickly and easily kill an app (and all related tasks/processes/async jobs/etc).
1. There are times I want to make sure an app is not running (think zoom/hangouts with video access), or a work app that records location
2. The single best way to fix a problem, any problem, is still 'turn it off and back on again'.
I don't want to kill the current activity and hope that the background jobs stop at some point in the nearish future with absolutely no feedback or insight. I want "killall <root app process>" then give the app 5ish seconds to cleanup and if it's still around "killall -9 <root app process>".
On mobile there are ways to force quit apps. They just aren't front and centre, nor mandatory for users to understand, like it is on the desktop.
Too many apps abusing resources and affecting UI speed is a separate issue, and mobile OS's developed a lot of techniques and technologies to allow apps to work in the background without bothering the user, and without overloading the device's resources. It's a nice set of systems, really, and I would be happy if desktops worked the same way. Nobody would be taking force quit away from me, even if such a system were to be implemented.
> On mobile it doesn't happen, and we can thank Android for that, as they insisted from day one that multi-tasking APIs should not require the user to manually manage memory on the device.
Yes, and this turns my phone into an amnesiac the moment I have a hundred tabs and fifteen apps open. Switch to a different app, switch back... Oops, all gone! Enjoy recreating the state from history manually, if that's even possible.
There are no words to express how unhappy this makes me. We've got gigabytes of memory on our handhelds these days, why can't the phone just deal with it?
This is spot on. People want to hand over responsibility for their computations to some big company offering a "free" service so long as you use the official app, and then they wonder why they don't feel like they have any power or freedom.
> When I open a program, I want to use that program. I don't want to update it, I don't want to see all the new features, I want to USE it. I opened it because I had a task to complete and all this junk is getting in my way.
Jonathan Blow did a talk similar to this a few years ago, about how "software is terrible".
In a part of it, he double clicked on a .psd file to open in Photoshop and timed how long it took to open the image. It took around 8 seconds for Photoshop to display that image on screen. But the first thing the app did was show a splash screen image, almost instantly.
His argument was, "Why, when I double click this image file that I want to view, does it instantly load an image which isn't the one I want to view, and then take 8 seconds to load the one I do want to view. If it can instantly load an image when I double click the file, why isn't that image the one I double clicked?"
I’ve seen that talk too, and it struck me as a bad example. Photoshop is not primarily a tool for viewing images, but for editing them. It would be great if it could get me there faster, but as a comparison I just tried timing how long it takes to launch The Witness, and ended up with something like 13 seconds.
If it takes 8s to load the file, the better design is to take 8.05s instead to display the splash screen and a progress bar to indicate to the user that their request is being processed. Good interfaces are never unresponsive. So, bad example. :)
In a parallel world, the image loads first, alone on the screen, then the toolboxes, then the window frame. Then the splash screen for 8s because the marketing guys always have it ;)
It’s a balance though isn’t it. If they hide everything away so as to respect your time, then another user will be frustrated by the constant magic going on in the background. Even you might want more prompts in some situations.
Maybe some applications could have an alert mode, similar to logging levels. But then it will probably get more buggy.
Honestly, I rarely get annoyed by the number of popups in most of my software. I’ll happily take a few extra dialog boxes for extra control.
Because in practice if you don't push people to update, they just don't update. And then complain about bugs, security issues, bad performance, missing features, etc... all available in the updates they have been postponing for years.
I 100% feel this pain. And for security updates and major fixes, I see the need for frequent updates.
Though setting aside practicality for a bit I wish we would design software to be more backwards compatible so old versions of things could continue to work for longer. I shouldn't have to buy a new phone every three years, for example.
Also for a tool like Audacity, I rarely need to update it. It doesn't depend on a service, so I don't need to worry about an API falling out of support and he security risks are much lower. I wish we could design more of our software to work this way.
Obviously for internet connected things like browsers this isn't possible as the security impacts are significantly higher, but why should I need to update Word every month if I don't plan to use the online components, for example.
that is a problem but servers are one place where there should absolutely not ever have automated updates that cannot be overridden and turn off as you are apt to break things if it isn't tested first.
Just spitballing here: what if we selectively notified users of updates when they'll be affected? So, when I'm using my spreadsheet program, and I go to sort the rows, a little note pops up informing me that there's a bug in sorting non-ascii characters that was fixed recently and would I like to update my word processor now or continue anyway?
I'm imagining some automated tooling where changelogs are tied to specific git commits, and when you go down a code path that has a changelog entry tied to it in this way, it pops up the dialog. The program downloads the changelogs in the background (if the user chooses), but doesn't pop up a notification unless it's relevant to the user.
I don't think it would entice more people into upgrading. People don't necessary want to stay on old versions, they just don't want to be interrupted. To make it more probable that a user updates, you need to make the interruption as little as possible: download stuff in the background, make it patches rather than full blown installer, ... to follow in your direction, if I have a popup that says "you just sorted rows alphabetically but there's a bug, do you want me to fix it ?" and the install takes 5 seconds then it's good. If it takes 30 minutes then screw your update
I think what we need is another way of architecturing software. I'm thinking of Erlang's actors and hot reloading: the whole language and its environment were built to allow upgrading parts of the app without turning the whole thing off, thanks to actors that compartmentalize state and minimize the places where it can change. That's extremely useful for servers, but why can't I have the same for desktop apps ? For your example again, maybe have some "actor" that can give me a sort, and when updates come the old instance is killed and the new instance takes its place. No need to turn down the app, to lose my current work, to waste dozens of minutes.
Unfortunately desktop apps are pretty much dead for the masses, and webapps solve both the problem of not updating (next time you come it'll be updated) and atomic updates (a client side app can load some javascript when needed). If we want desktop apps to come back (I do) we need to find a way to do the same
> I don't think it would entice more people into upgrading. People don't necessary want to stay on old versions, they just don't want to be interrupted.
It might, if you did it like GP posted:
>> a little note pops up informing me that there's a bug in sorting non-ascii characters that was fixed recently
>> The program downloads the changelogs in the background (if the user chooses)
Note the stark deviation from standard practice: GP would like the popups to actually tell you what's in the update.
In my experience with both techies and non-techies alike, the main reason everyone hates updates is that it's always a cat in a bag. You'll likely get some bug fixes. You may get some new features. Some of those may even be useful. It's more likely the app will become slower instead of faster. It's quite likely there will be disruptive UI changes. Often completely gratuitous ones.
Random recent example: I noticed my wife has an OS update on her phone pending for the past three months. I asked, she agreed, I did the update round. Told her, "wow, you're getting a version bump, I envy you". I immediately noticed some user-set icons were wrong[0], but quickly corrected it without saying anything. I though that's the worst of it. Couple hours later, she comes back to me complaining that the update messed up notification sounds and the new keyboard has changed scaling, breaking her muscle memory for touch typing. Also the battery life dropped significantly.
Updates today are like loot boxes in games, except most of the "rewards" make your life worse.
One solution to this problem would be to have a separate stream for feature updates, and a separate one for bugfixes and security updates - and only ever bother the user about the latter. But that would increase the costs for the software vendor, and we can't have that. Who are you, the user, to complain about what your lord does? SaaS stands for Serfdom as a Service.
--
[0] - The ones you assign to your SIM cards in dual-SIM use scenario. The update added new icons to the set, and apparently the OS must have been storing user choice as an index into that set, instead of using icon ID.
Can't agree more with everything you're saying, except for the last part: if bugfixes/security updates are in one stream, and new features are in another, the first one should be applied all the time without asking, and the second one should be the one that prompts a pop-up.
> SaaS stands for Serfdom as a Service
It's interesting that the SaaS term was born from the Cloud, but its tenets still apply to desktop applications
> bugfixes/security updates (...) should be applied all the time without asking
I'd agree in most cases, but I'd still leave some grace period for updates that require rebooting the app or the OS. Nag and cajole the user all you want, but don't ever lose their data, or interrupt them during a meeting.
> SaaS term was born from the Cloud, but its tenets still apply to desktop applications
There are two main facets of SaaS - a nice one, and a nasty one. The nice one is that it outsources ops/maintenance. You're just using the software, someone else is keeping it running and up to date - and it's more efficient this way. The nasty one is, the party controlling the software is in position of power - they can make you pay rent, lock you in and hold your data ransom, and exploit your data in ways you don't want - and you can't do anything to stop it.
Desktop apps relinquish most of the benefits of SaaS, but the drawbacks were backported to local software by means of normalizing subscriptions and automatic updates.
I just want updates to happen in a separate 'thread'. Not (necessarily) in the literal sense, in the sense of my human attention. Update in the background, don't interfere with my use of the application itself — at most, give me an icon that tells me the application will be a newer version the next time I restart it, a bit like how Google Chrome manages its updates.
I generally agree. And Chromes method is definitely better than Steam's where you have to wait 30 seconds on boot every few days for it to load.
But that introduces issues where if Google adds some shitty new feature to Chrome I sorta get forced into it instead of having an opportunity to choose, so there's definitely a tradeoff and also a responsibility on the part of the vendor to make sure they aren't abusing their ability to install things on my computer.
I don't like automatic updates either. I can just acquire the new version somehow and update it that way (perhaps handled by the package manager, when I tell it to update the package); it shouldn't be a part of the program itself, I think.
I totally agree that provided enough time and users, changing the user interface will almost always break some users experience. “Better” is subjective.
The way Linux puts the package manager front-and-center is pretty cool, but in my experience it doesn't result in a very up-to-date system. You might have a version of OpenOffice that is years out of date. Oh, you want the latest version? You need to update your Ubuntu 16.04 first, it'll say!
I'm a programmer and still this makes no sense to me. Windows and Mac somehow let me use the latest OpenOffice even if I haven't updated my OS in forever.
> Oh, you want the latest version? You need to update your Ubuntu 16.04 first, it'll say!
Well, yes, that's the flipside of updating everything at the same time. You have to update everything :)
And if you're using an LTS version of an OS, you'll usually get a related LTS version of the apps from the same era, especially for the older OS versions. Because they prioritise production stability. If you just use it as a working desktop you'd be better off using the bi-yearly versions.
Sure, but why? I can easily install the latest Firefox on Windows XP most likely (or could until a few years ago), but I can't on Ubuntu 20.04 (or couldn't until Firefox started doing auto updates on Ubuntu as well)?
Because Linux folks like to bash on Windows, while in reality they live like every application would be putting their stuff into C:\Windows, like Windows used to do in the old day pre-XP.
So naturally when all applications depend on the same shared libraries and configuration files, they need to be updated on a full swoop.
Yeah, when one knows their way around UNIX it is possible to actually install new software that works around this, but that is exactly the problem for most desktop users, "one knows their way around UNIX".
On my Linux systems, both server and desktop there are a set of programs that I don’t use the package manager for, because they’re usually out of date.
This includes browsers, where I let the auto updates handle it, and programming environments (Python, R, Node), where I often use their specific updaters.
I don’t think it’s realistic to expect a global curated package manager to stay on top of the bleeding edge all the time.
The extreme alternative to "device, please don't ask me when you want to update something, just do it" is losing control of your computer. If you're comfortable, like the author mentions, having your digital "home" be away from your devices, to "live in the cloud", I guess this doesn't matter (at least, while your favorite cloud providers and services don't shut down taking all your data with them, decide to hike prices, or ban you for breaking some ToS rule).
If you want to fully own your computer, it matters. You don't want to give away all control over it.
I don't think those are the only options. For example, Linux Mint shows an icon in the system tray to indicate when repository updates are available. I fully own the computer, and it is my choice if/when to apply updates. However, that doesn't imply that each individual program needs to yell at me at startup to get updates.
For security updates it still depends on risk though.
A flaw in my browser is extremely high risk and I require it fixed and updated quickly. But a flaw in my SSH server that is only accessible from behind a VPN is lower. And the risk is lower still if it's a flaw in a feature which I do not use.
I don't see an easy solution of course, it's a hard problem. But I wish that I had more granular control over what and when I update, and was given a clearer way to see the impacts of the update so I could weigh risk.
It would be lovely if it became a standard part of everybody's work day to spent 15 minutes doing TLC to their computer.
You'd clear away all the stubs of work, and the computer would say "Hi! Did you have a good work day? Here are a few things that would be great for you to do:
1. Upgrade these two apps
2. Do you want to check out how Dark Mode works? No? Ok
3. You've had these 46 tabs open since that one day six weeks ago you got into the idea of building your own treehouse. Want me to save them all in a notebook entry and remind you about it next summer?
Really, any machine needs maintenance. Even an electric stove or a microwave needs an occasional clean if it gets dirty. Why should computers be the only special appliance that needs no maintenance whatsoever?
I'm generally in favor of more control too. Though that control extends to wanting to be able to control when my software updates and when I get to have new features, settings,etc.
My comment above is more of a rant than a recommendation.
The notification center or whatever it's called that's available in pretty much every modern OS would be a good location for such stuff. It's available, retrievable and not in the way when you don't want it.
Better software doesn't always exist and when it does exist is not always possible to switch (or has other downsides).
But for example Steam updates on boot, which is a (albeit minor) pain when I want to use it. Similar with Spotify. There aren't really any great alternatives to either of them that have equivalent libraries of content.
Or going right to the core, Windows and it's annoyingly frequent updates. Sure I could use Linux (and I do on a few machines), but that isn't possible on my work machines, and introduces incompatibilities on my personal machines.
Unfortunately that's not always feasible. I use Cura a 3D printing slicer (takes a 3D model, generates instructions for your printer), and it's one of the best at what it does (slicing). The UX is horrible though and is clearly 'designed by programmers' with little thought into how people will actually use it. And every time I upgrade there's a 50/50 chance it'll forget all my settings (there's lots of things you need to tweak and customise specific to your printer) and I'll need to start from scratch. Dealing with these issues is easier that switching to different software and learning it from scratch.
I think that random examples without reference to a particular arena would be...random. If you would like a recommendation for an email client, or a web server, or a programming language, I would be happy to share what works for me. I do everything on Linux, by the way.
I’m really confused how the author generated 88 documents in
Preview that are unsaved. What kind of documents and changes were these? Why were they not saved when the changes were made? Preview is mainly used to view image files and do simple editing. Those edits are auto saved as you go long.
I’m sure the author has a point but I’m just distracted by this strange use case.
As it stands, the only thing keeping my Pinephone from replacing my BlackBerry is better messaging notifications. Calling, messaging (via Matrix), and Firefox are all mostly good enough for me.
Note I'm not saying it's good, but good enough for me. I've been using Arch, as I find the rate of improvement shows in a rolling release distro, and in my experience, Mobian is no more stable.
The closest thing to secure, actually usable Linux distro on phones is Android; if you are serious about security and degoogling GrapheneOS especially. The bad thing is that you have to have a Pixel for that.
Source: I own a Pinephone and has tried both Phosh-based and KDE-based offerings, there is also Sailfish though. Out of these Sailfish is the only one close to usable as of now.
I think some are getting quite good. I’m following Manjaro/Phosh, and it’s showing promise. I’m not using it for much yet, just watching it develop. I believe other distros are further along.
The (graphical) software program with guaranteed internet connectivity has become a control vector for the software author, many times the company employing the software author, over the user. Users are being "used", as suggested by the original author of GCC.
For whatever reasons, non-graphical software seems to suffer less from this problem.
> When I open a program, I want to use that program. I don't want to update it, I don't want to see all the new features, I want to USE it.
Indeed. Microsoft Office I'm looking at you! I don't think I've ever actually looked at one of those "Hey cool new stuff for you" popups more than trying to identify how to get rid of it as quickly as possible.
And even worse is "Hey here's a new feature we like so we turned it on for you, good luck figuring out where to turn it off again lol"
Google Maps on Android is the worst offender I've ever seen with this. Practically every time I open the app I get spammed with some dialog box or extraneous UI elements. The worst part is Google Maps is kind of a "just in time" affair. I only open it when I'm going somewhere and I need it to function right now. Alas.
Exactly. I mean, how hard is it to just give people a proper changelog? Am I the only one who's excited about the new features, when I get to read a proper list of them before installing a new version of the product?
> When I open a program, I want to use that program. I don't want to update it, I don't want to see all the new features, I want to USE it. I opened it because I had a task to complete and all this junk is getting in my way.
> And same when I close a program, as the author hits on very well.
The weird thing is, that is a solved problem. App Store apps (Mac, iOS) will automatically update in the background and, unless the developers build it into the app, the changelog if any will be on the store page. All platforms have something similar. It's just that a lot of developers opt to release and update their thing separately for a variety of reasons.
I agree on the OS updates though, some years ago there were a few... claims? Promises? Something that implied restarting to update would no longer be a thing. Dear reader, they were wrong.
Yeah and Windows 10 designers take note: there’s no situation where it’s OK to randomly decide you’re going to log me off in 5 minutes without a freaking cancel button. I lost 20+ hours of work on a process that can’t resume itself because of this insanity.
It didn’t used to be like that. But then people never updated their os/software and we ended up with lots of vulnerabilities.
I like where Windows is now, I get notified of required updates but I can defer it for a few days/week. For non-technical people who don’t know how to setup defers I’d imagine they would also be the crowd before who didn’t update. I’m totally fine with my parents occasionally grumbling about a forced reboot overnight.
Likewise all the software I use, besides online games, let me defer updates. Lots of stuff also now has the update next start, which I also like. I don’t even notice my browser updating most of the time until I open dev tools and see “what’s new”
> But then people never updated their os/software and we ended up with lots of vulnerabilities.
Perhaps the issue was that we insisted every program be internet connected. If everything were offline a la Battlestar Galactica, security exposure would be greatly reduced - pretty much only the standard USB stick attack vector would work.
> But then people never updated their os/software and we ended up with lots of vulnerabilities. <
Seems like we have a fundamental security issue that results in having to keep fixing vulnerabilities across most software, which sounds like applying bandaids and treating symptoms rather than coming up with a more secure approach.
Seconded. It seems like over the years I spend a greater and greater fraction of my screen time either setting something up or un-fucking it after an update/new version ruined it.
> No, I don't want to update my computer right now, and no, updating overnight tonight isn't good either because I need to keep this program running until tomorrow. I understand that your new UX is better for me, and I'm sure I'll love it, but forcing that on me right now is preventing me from doing what I need to do.
I especially love when Firefox decides that he really needs to update, and I cannot open any new tab until I do so. Who cares if I am on a crappy connection and the download that I need to finish will take 20 minutes more; it's either restart it or wait until I finish. And that other thing in that tab that I need time to finish but I cannot really save ? Who cares.
That Firefox issue only happens on Linux when you upgrade Firefox on disk using your package manager while Firefox is running. The ABI mismatch between the running version and the new version makes starting new Firefox processes unstable, so it's disabled to avoid crashes.
Simply don't run system updates during a Firefox session and you're golden.
Yeah, it’s a linux distro issue. Alternatively, run NixOS that instead of swapping the running executable file under itself will create a new environment with a new firefox and start that one next time.
When I open a program, I want to use that program. I don't want to update it, I don't want to see all the new features, I want to USE it. I opened it because I had a task to complete and all this junk is getting in my way.
And same when I close a program, as the author hits on very well.
Basically, the computer/program/etc always wants me to do something for it, but it never asks for those things at an opportune time.
No, I don't want to update my computer right now, and no, updating overnight tonight isn't good either because I need to keep this program running until tomorrow. I understand that your new UX is better for me, and I'm sure I'll love it, but forcing that on me right now is preventing me from doing what I need to do. I see your error dialog describing some odd issue, but I don't have time to triage that right now and decide to take the time to fix it.
I wish software would respect the human element more. My time and attention is valuable, please don't interrupt it carelessly.