This is a rant about how so many apps on many different platforms (TVs, mobile devices, computers, etc…) have decided to not actually show detailed errors any more. Instead, we get something along the lines of:
Oops, somehting went wrong. Please try again later
… and then, well, we get to figure out what just happened and what in the world we need to do about it. And good luck with that, since you have no idea what just failed.
Why software developers?!? Why have you forsaken us?
EDIT 24 hours later: I feel like I need to clarify a few things:
I’ve worked for 8 software companies over 30+ years. I know why putting a DB error into the message users see is a bad idea. I know that makes me uncommon, but I still want more info from these messages.
You all are answering as if there are only two ways this can work: (a) what we have now (which is useless), and (b) a detailed error listing showing a full stack trace. I think the developers could meet me half-way.
What I want is either (a) “Something went wrong on the server, you can’t fix it, but we will” or (b) “Something on your end didn’t work. Check your network or restart the app or do something differently and then try the same thing again”. And if they’re blocking me because I’m using a VPN, fucking say so (but that’s a whole separate thing…)
Some apps do provide enough info so I have a clue what I should do next, and I appreciate the effort they put into helping me. I think what I am really ranting about is I want more developers to take the time to do this instead of reporting all errors with “Oops, try again”. (If the error is in their server, why should I try again?) Give me a hint as to the problem, so I have something to go on.
Cheers y’all. Still love you my techy brothers and sisters.
If it doesn’t tell you what error it is, isn’t an error message, it’s just a message that says that something went wrong. Even a calculator has proper error messages that show you actual information about what is wrong
Reminds me of the old “Oopsie woopsie we made a fucky wucky!!” post
The developers are meeting you halfway. They told you something went wrong, They have the stack trace in the logs.
Being a reasonably knowledgeable individual you could make use of the deeper information at least scratch your itch for what happened, in the end there’s nothing you can do about it there’s a back end problem. But giving that more detailed information to the end user is a fool’s errand.
Let’s say we pick a simple one, the database connector is down. End user gets a message that the database is unconnectable. Forum start to light up with worries of people losing data. Armchair conjecture about backups and data loss and updates abound.
Realistically the VM host at Amazon had a critical update and got updated, but failed to come back up as they do occasionally and someone needs to go and stop and start the instance to get the database online on new hardware. It only takes 15 or 20 minutes.
Now you’ve got thousands of people in your forum pissed off about something that is only mostly out of your control.
Now let’s replace that error with oops something went wrong.
The people on the forms mention that it’s down they ponder about what could possibly be wrong, But without anything to go on it fizzles away, The site comes back up and people just chalk it up to regular internet shenanigans.
The company didn’t get any benefit from giving the end user more information. Your average user just got their knickers and a twist. And a handful of knowledgeable professionals went wow that sucks sorry guys.
Because 99% of the time these errors are caused by something on their end that the user is unable to fix, even on the off chance that they understand the problem in the first place. So there isn’t any need to give you more information than “something went wrong, please wait a minute and/or try again”.
In theory, maybe. In practice, I’ve had a lot of errors in that vein that very much wouldn’t go away, and where made much harder to diagnose by their obtuseness.
Honestly, I even dislike the mindset. Just make a big header with the generic error message and a little one below that gives some details. Having users interested in how your software works is not a bad thing.
OK but then inherent in what you’re saying is also the message, “… and don’t contact us about this, because we don’t want to deal with it” which is also mildly infuriating to me.
The “we don’t want to deal with it” part is something you’re attributing to them with no evidence. As a former SRE, I can guarantee you they are dealing with it.
You’re assuming they aren’t already aware of the issue.
Sorry but how does that help me?
How does telling someone about a problem they’re already aware of help you?
When you’re in a restaurant and your server accidentally dumps the entire tray of food in your lap, would you prefer them to apologize or just stare at you because you already know what the problem is. Clearly you requested food to be delivered to your table and it didn’t make it there.
An apology would be nice, but do you really need to explain to the server that you still haven’t received your food? I think they know that
What I’m saying is that when you see one of these messages you should interpret it as “something is wrong on our end, nothing you can or need to do on your end, please hang tight as we’re aware of the issue and working on it”. They don’t give you more info than that because that average person is probably not a dev and doesn’t have any need for more details than that.
But it’s MY Internet, and I want it NOW!!
You’re giving an incredibly large allowance for companies that have continuously calculated exactly how much they can fuck over their customers for more money before we decide to use some other product.
Of course if their servers and whatnot are shit they won’t straight up tell you they are shit.
It’s why modern multiplayer games don’t even show everyone’s latency anymore. It would let players know imperically that their servers are shit.
Iit’s an internal error that is not handled properly. They don’t want to tell you the exact error message and detailed information around that, because it would expose the internal state of the backend and that would be a security issue. There is really nothing more that they can tell you, except that a developer needs to look at this (and possibly thousands to tens or hundreds of thousands of similar logged errors) and they probably already are.
Maybe then, the message could be, “An internal error has occurred and we’re going to work on fixing it but there’s nothing you can do to fix it yourself right now”. It’s the “Oops” that fries my grits.
I do agree, the whole “oops sowwy” with a sad Labrador vibe is a little irritating. But I guess they do it cause it’s a harmless and layman-friendly response.
If you’re tech-savvy enough to want detailed error messages, you should also be tech-savvy enough to understand the implied message you just typed out. The ‘Oops’ isn’t for you, it’s for the average user.
LMFAO. I probably have to truncate at least five error log files a week on various vps servers at my company because they fill the SSD and crash the OS. We rent servers we don’t dev them for our cx.
Largest error file I’ve seen so far is 32 GB
Site owners are normally clueless. Site developers normally can’t give a single fuck and systems administrators like me. Get to pick up the pieces and tell them to tell their Deb to fix it and then we pick it up again and tell them to tell their Dev to fix it let me know when you sense a pattern
Are you not rotating your logs with for example logrotate?
To reiterate, they are not my logs. It’s not my server. It’s a server that the customer is renting and not maintaining and we’re not going to purge their data unless they ask not all logs rotate. Mostly error_log files in garbage wp sites
So literally just found somebody’s exim main log archive.gz that was 12 GB and this is an archive from 2023. I have no idea why it even exists on this mans server still and was not reclaimed with the rest of its older brothers. I’m guessing failed cron idk ¯\_(ツ)_/¯
It’s almost never an internal error. The vast majority of the time it’s vpn blocking or some such bullshit.
I give my users instructions on how to report an error if they seek assistance. It’s regularly ignored. Instead we get the ubiquitous “Something bad happened … somewhere. HALP!”
“I got an error”
“What did it say?”
“I don’t know, just something went wrong”
“👍”
Blanket “99%” statements are unfounded. I have had countless issues I was able to fix through error messages and some without.
Source your claim.
I can’t speak for the other user’s claim, but I’ve worked at Facebook, Google, and LinkedIn, and have written plenty of error messages. When I write a message like these, it’s specifically because the user can’t do anything about it. I’ll log the error to our internal error tracking systems with actual information about it, then give the user a generic message.
If it’s something the user did wrong, and they can fix it, I’ll absolutely give them a message saying that. Usually I won’t even let a user submit a bad request, but sometimes users will bypass frontend restrictions to submit it, so the server always needs to validate it again anyway. The fact that plenty of users won’t even read the message I write is kind of annoying, but at least the users who do read it will know how to fix it.
I’ve tried sending detailed error messages before, and that invariably results in users submitting support tickets and forum posts for things that aren’t helpful. You learn pretty quickly what kind of messages are helpful and what kind aren’t.
The why is easy. As others said, the vast majority of error messages are entirely useless for you, the user, because there’s not a single thing you can possibly do to address it. What are you gonna do about a database connection issue, or bad cache, or broken Javascript? Nothing. So don’t worry about it. Besides people are less panicky when they see an oops rather than a stack trace or a cryptic error message.
And don’t worry, people who know how to write up useful support tickets and bug reports know how to do it even when all they can see is an “oops”. Builtin browser dev tools will have information they can use to help the devs.
the vast majority of error messages are entirely useless for you
Hard disagree. Maybe half, at most. And most importantly, if a user can’t do anything about it, what’s the difference between a “error code 487” vs “oops there’s an unspecified error”? What’s the harm in showing an actual error code?
The VAST majority of errors I see are connection issues, or some of my VPN or adblock stuff causing me to be denied access to the website. That’s all stuff I can fix. And it would be a lot faster if I didn’t have to trial-and-error my way to the actual problem first.
Ridiculous take. I have debugged countless issues. Those that spit detailed error messages are typically far easier to debug than those that don’t.
For example, returning nothing but exit code 1 to indicate failure. This gives zero information about the reason behind the failure, and only could be acceptable if your program is so simple as to only have very few failure modes.
I have solved issues by cloning the source code and reading it to understand the issue.
Don’t relegate everyone to the same fate as those so utterly ignorant they can’t look up an error code.
As for the bugs you can’t fix? Why do you think Cloudflare tells you when its the website having an issue, and not your browser or them? Knowing the issue isn’t something you can change, avoids spending time trying to fix an issue that you have no control over.
People who can will write up a bug report anyway
And report what exactly? Your program gives zero information has to why it failed? Now you have dropped the responsibility of figuring that out from the code, which tends to know far more about its failure state, to someone observing from afar. Its inefficient and ridiculous.
I disagree with you across the board.
See my update/EDIT above. I feel like most of the replies here are on the same track as you but I still think there’s a better way.
Ringtone for when work calls/texts:
Exactly, it’s especially infuriating on newpipe. WHAT went wrong? It’s an error 500 from YouTube (rare, unfixable, try again) or Google changed something and need to wait for a client fix? Or simply Google blacklisted the IP address or put some captcha that prevents playing the video??
Same for Windows hello. “Sorry something went wrong”
What went wrong, so I can fix it??? It needs a reboot? Restart the camera on device manager?? My face is not clear??? I need to update drivers?? Just logout???
Client side software must always give clear indications about what’s the error. Write in tiny 6 points grey text on a white background but give hints about the solution, don’t play a game , thanks
Error messages are a common way for hackers to gain information about a system. Useless error messages are recommended for security.
If you enter your username as Robert’'); DROP TABLE Students;-- giving the error “Oops, something went wrong” is better than “NoSuchTable: ‘Students’ Table doesn’t exist in the database” because now the hacker knows you’re using a database that interprets SQL commands and inputs aren’t being sanitized.
Hacking programs like Burp Suite have functions that spam sites with all kinds of garbage data and uses error messages and delays in response times to highlight potential vulnerabilities.
So in short it’s used to mask the developers errors?
Even if you don’t buy into this logic, you still have to do it in quite a few places because the security auditors have a line in their checklist about being able to extract any internal information from error pages
This comment belongs on masterhacker
Same logic as “keep it closed source for security”.
Security through obscurity is still wack tho
Yeah but most of these errors don’t even give out a uuid that could be used to relate the error to logs to be resolved by someone.
Not that that someone exists anyway. Let’s face it the entire industry is a massive joke and a pile of shit and with AI coming fast and hard soon you won’t even get the privilege of venting to a call center person about it.
You’ll vent to some made-up chatbot named veeblezorp and he will give you an impromptu therapy session about the state of the world. Your computer/tablet/phone/app still won’t work properly and veeblezorp will try to get you through the stages of grief about that.
Just unplug it and don’t plug it back in again. Go for a walk. Play with the dog. Hug your children. Stop buying crap online that scales up infinitely to take new customers (and their dollars) but is forever stuck at the sub-garage startup level when it comes to support.
I agree that it’s (weirdly) uncommon to be the one saying “please give me more info about the error!”
A simple error code can be endlessly helpful (bonus points if there’s a corresponding support article explaining common codes)
Even if some codes are only useful to internal support, it’s handy to be able to search an error code and see “oh I can just jump straight to submitting a ticket/calling their support” or “oh, this fix might work”
Users ignore error messages.
I have seen my users request support, proceed to demonstrate the issue they’re having, and click through error messages so fast there isn’t even enough time for me to say “WAIT!” Forget about being able to actually read even one word of the message before it’s dismissed from the screen.
They treat the error messages like they are just an annoying mosquito to be swatted away as quickly as possible. This despite the fact that the whole reason I’m standing behind them is so I can see what it’s going wrong and, you know, read the error messages.
That’s Windows’ training bearing fruit.
Them:
“What? Oh that? That always happens”
Me:
Grrrrr
Yeah, you’re right, but I still would prefer to see something telling me whether something I did caused the problem or something went wrong in the software / on the server. From this thread, I’m getting that my wishes will not be heard.
So the solution is to remove the error messages? That makes no sense.
I wasn’t saying it was a solution, I was just offering a possible explanation. I understand why someone wouldn’t bother telling the user what’s happening. For my code, I log everything that happens, and tell the user to call me. When I get the call, I check the log and use that to figure out what went wrong.
Distressingly typical user communication:
User: There was an error message.
Me: What did the error say?
User: I don’t know. Something about the problem.
If you remove error codes, all you’ve done is guarantee every interaction is like that.
You’ve got it backwards. Once every interaction is like that, you stop showing error codes.
I have trouble with my colleagues in IT doing the same crap. They come to me to ask me to help them with a problem, and they don’t have the errors!
Most common place I see those is when the site doesn’t want to talk to a known VPN endpoint. Like another mentioned site owners don’t want to given any more info to what they perceive as a possible threat than needed, so they just give a generic failure page.
What are you planning to do with information about the error? It’s not like these places have customer support. Usually it’s something like a caching layer failing, and there’s literally nothing you can do about that.
If it’s an error code I’ve worked around before, apply same troubleshooting.
If its a new errror code, search the error code to see how other people solved it.
If no one else has solved the error code, try analogous troubleshooting, post results online with the error code name, successful or not.
These kinds of error messages are almost exclusively used for transient errors. You aren’t going to work around a transient error. The best thing you can do (the only thing you can do, really) is to try again later, hence, the message. It’s not helpful to show you a message like “cache-1234.example.com failed to respond within 300 milliseconds”. What are you going to do about that? By the time you submit a support ticket, that host has already been brought back up automatically. So now you’ve just wasted your time and the support staff’s time. The engineers already have a log of that error and a log of whatever error brought down that host, so you’re not telling them anything new by making a support ticket.
I agree with Nouveau_Brunswick here.
And to add: to @hperrin@lemmy.ca , are you not also a user of software and do you not see room for improvement in many apps? That’s where I am rn: I just want them to try harder to communicate a tiny bit more info when things go so wrong that a message has to be displayed on my screen. Telling me “There’s nothing you can do to fix the problem” would be a big help, for instance. Make sense?
I am a developer of software. I can guarantee you that what you’re asking for would make my job harder, because I’ve done it, and it has made my job harder. If an error is transient (like, a caching layer error, a db connection error, an external API error, an endpoint connectivity error, etc), giving the user an error code will make it more likely that they’ll file a useless bug report or support ticket. The errors are all logged internally, and we can see when there is a spike in the error count. There’s no reason to give the user an error code, because there’s nothing helpful that the user can do with it, and there’s a lot of unhelpful things a user can do with it.
There are times where a message to the user is appropriate, like if they made a mistake with their input. But there are so many things that could go wrong that the user can’t do anything about. You’re not going to work around your DB shard going down, and a replica will replace it in a few seconds anyway, so giving you an error code does more harm than good. Telling you to try again later is exactly what I would tell you if you filed a support ticket. I don’t want to deal with useless support tickets, and you don’t want to deal with useless error messages.
Modern software stacks are big, complex systems with lots of failure points. We monitor them, and we can tell when you see these errors. If we chose to not show you a specific error code/message, there’s almost definitely a good reason.
So what you’re saying is that your code is garbage and you’re hiding it from users because it’s too much work to fix it.
What I’m saying is that error messages can be helpful or harmful. Knowing that and how to tell the difference is what makes you an expert. Just firing off any information to the user without thinking about it is what makes you a novice, and will eventually get you fired. We’re talking about systems with millions of daily users. If you cause 2,000 unnecessary support tickets or forum posts every day because you don’t know when to send what information to the user, you won’t get very far in tech.
If you have 2000 daily people getting error messages, your code is garbage rofl
And if your company would rather you avoid those tickets by not giving out error codes, your company is also garbage. Which to be fair, is a lot of tech companies.
I feel like you really don’t understand how big tech works. There’s not some single server running every service perfectly. There are tons of different layers and services running on thousands or hundreds of thousands of hosts.
Let’s say you make a request to something like Facebook. Say you’re liking a post. Here’s what happens:
That request goes in through a PoP (point of presence). These are sometimes called edge servers or edge gateways, but at Facebook we called them PoPs. This is a server that’s physically close to you that’s used to terminate the TLS connection. It doesn’t have any user data. Its job is to take your encrypted request, decrypt it, then pass it on to Facebook’s regional data center on their internal network.
The request enters a webby. These are usually called frontend servers, but again, at Facebook we called them webbies. This is a server that runs the monolithic Facebook web app. Again, it doesn’t have any user data. Its job is to take your request and orchestrate actions on deeper services to fulfill that request.
First it’s going to check a local memory cache server for sitevars. These control system level switches, like AB tests, and whether certain services are brought down. That server returns the sitevars and the webby proceeds, now knowing which logic paths to take.
For a like, which is a write request between your user account and a post, it will create two DB entries (you likes post, post liked by you). It needs to first get the data from the caching layer, so it will make two requests to TAO (Facebook’s caching layer), one for your account, and one for the post.
TAO runs in the same regional data center, and if it doesn’t have the two data objects cached, it will request them from the regional db shards.
These regional db shards also run in the same data center, and they’ll return the data.
TAO returns the data back to the webby.
The webby (after doing some permission checks, which probably hit TAO again) now creates the two relationships, likes and liked by, referencing the two data objects, you and the post. TAO is a write-through cache, so the webby sends the writes to TAO.
TAO now needs to send the requests to the db primary shards, since they are the only ones that can handle writes. Your primary shard and the post’s primary shard are probably in different data centers, so TAO now passes the writes to the regional data centers for each primary shard.
A host running TAO in each regional data center for each primary shard now passes the write to each shard.
Each primary shard now writes the data to the local disk, and waits for the binary log to be written to the local journal before returning a success message.
The success message is passed from the local TAO host back to the original region’s TAO host.
When that TAO host gets both requests back successfully, it returns a success back to the webby handling your request.
The webby then returns a success to the PoP you’re still connected to.
The PoP then returns a success to the client running on your device.
The client doesn’t notify you of anything, because it already showed you a filled in like button right after you pressed it.
This was how it worked back in 2013 when I worked there. It probably hasn’t changed a whole lot, but this is also an extremely simplified overview (I didn’t even touch on any load balancing systems). That request will probably hit hundreds of services. Some of them can fail and the request could still succeed. But some are required to succeed for your request to be considered successful, like the db write operations. Something like a hardware failure on your primary db shard’s disk can’t be overcome with better code. Nor can a lightning strike taking out the cable connecting your PoP be overcome with better code.
These systems are absolutely massive, and there are failures you wouldn’t even think of. When I worked at FB, we had an entire data center go down because the humidity got just high enough that the capacitors in each hosts’ power supplies all failed in a matter of a few minutes. Thousands of users probably got error messages that day, but the automatic failover systems moved all the traffic to a new region and promoted new primary db shards within about ten minutes. The fact that losing an entire data center was mitigated in about ten minutes is actually really impressive. You might think it’s still garbage code, since users got error messages, but I know enough about these systems to be very impressed by that.
If you know a better way to make a system like this that works for billions of users across the planet, you should write a paper and submit it to a local conference. If they approve you for a talk, you can present your designs to an audience there. If the audience is really receptive, your designs could make a big impact in the tech sector. That’s basically what the highest level engineers at these big tech companies do when they design these multi-billion user systems, so it’s definitely possible for you to do it too.
By nature of software consisting of a client and a server, there are certainly errors that can be bypassed on the client side.
Server side software does not mean “there is literally no errors that are dependent on client input.” That’s ridiculous to think, but pervasive in this comment section it seems.
I don’t know why you think what I said means that. These error messages are never used on data validation issues. At least, I’ve never seen a data validation issue return an error like this, and I would never write an error like this for a data validation issue.
These messages come from 500-series errors. Usually caching layer errors, load balancer layer errors, edge termination layer errors, or db layer errors. In other words, there was probably nothing wrong with the request, it just couldn’t be fulfilled successfully, hence the “try again later” part in a lot of these messages.
These error messages are never (sic) used on data validation issues.
You are incorrect. I have had issues that were exactly that. Such as a password that was failing to be accepted and then giving generic error responses, which I then had to trial-and-error brute force to find which part of my password they weren’t allowing on the backend.
You stance might become easier to defend if you avoid absolutes.
Look, the majority of the software is on the server end. Even if they gave you a full stack trace, and you understood it, you wouldn’t be able to do anything about it. You want them to give you a way to send in a merge request? I’m sure that would be received here as Google exploiting you for free.
“Majority of software” source your claim.
If you use your computer as a bootloader for Google chrome, maybe. Local software and SASS both benefit from error messages because you cannot assume every error you can do nothing about.
An error about parsing my password and a stack trace? I can possibly deduce to limit the length, remove special characters, or add special characters and try again.
“Something went wrong.” is lazy and nontransparent.
Just fucking tell me when my adblock is causing you to deny me access, or my connection is too weak/slow. I don’t need a fucking full stack trace.
“Hey boss? I got a user here who’s blocking our ads and cussing us out.”
“Oh dear. Better give him whatever he wants.”
Yeah, otherwise you won’t have a user because I’ll find a competitor that is actually workable on my system.
deleted by creator
What I hate even more are error codes
Precise, easily searchable codes that describe the problem? What a ball ache!
Not on Windows, no. “This error code could indicate this or that or something”.
This person gets it. Thank you.