I'd say it's actually fulfilling the real point of a loading bar: to keep the user pacified through some period of waiting that you couldn't engineer away.
I'd say it's actually fulfilling the real point of a loading bar: to keep the user pacified through some period of waiting that you couldn't engineer away.
If a progress bar or loading animation does not stop when something goes wrong, the it is conveying zero information and shouldn't be there.
Being told that something is working when it has crashed and you'll only notice it after a long, unknown time because the damn output is lying to you.
The one is just to distract the user for some time. The other is to signal that something's going on, and indicate the progress of that (background) task.
A distracting animation is only good to hide some latency. In cases where progress will be made eventually for sure and in a predicable amount of time.
If there is a task you can't be sure about when or even if it completes an animation is not the right tool. There you need a proper progress indicator.
But as an anecdote of where a progress bar was more than just cosmetic: Couple of years ago I attempted to upgrade to a new MacOS on my Macbook and the install ran into some error but gave no indication whatsoever. So the only info I had was that the progress bar hadn't moved at all in 5 hours. I waited another couple of hours before I switched it off and tried again. Without the progress bar I probably would've waited another day. I mean my macbook was still bricked but at least I could compare it to screenshots online of people getting stuck at the same point, allowing us all to blame Apple :)
That's quite a specific scenario but anytime it's difficult to debug what's actually happening, I wouldn't say progress bars are just cosmetic.
With a text console you can see exactly what was going on and in case of where it hung.
I've seen enough spinners tgat will happily keep going if there is a network outage.
I think this is the difference between "communicating that there is still processing being done, even if I can't give a progress estimate" and - as you say - "keeping the user pacified". First one is helping the user, second one is really just a "not my problem anymore" asshole move.