A Rant Against Splash Screens
An anonymous reader writes "This controversial post by Adobe's Kas Thomas asks if splash screens are just a sign of program bloat and callous disregard for users. It suggests that big programs should launch instantly (or appear to), perhaps by running against an instance in the cloud while the local instance finishes loading. Users of cell phones and tablets are accustomed to apps being instantly available. This is the new standard for performance, the author argues. Nothing short of it will do, any more."
Splash screens were originally designed to let you know the program was launching, so you weren't sitting there wondering "is it opening or not". Now, some splash screens are unnecessarily intrusive, particularly those that require you to click (or press enter) before they disappear and allow you to use the software.
The real problem is lack of responsiveness. The author points to that in his proposed alternatives, but he's misplaced the blame. For interactive processes, response time is more important than speed. 0.1 seconds is essentially instantaneous for most tasks, that is, the user won't notice that little delay. Games are an exception to that. 0.25 seconds starts to become noticeable, but it it's only occasionally that long, user's will barely notice. 0.5 seconds or longeer is noticeable in almost all instances. Any process that takes over 0.25 seconds should display some form of busy indicator or a progress indicator.
make imaginary.friends COUNT=100 VISIBLE=false
initial load time of most apps takes a while in the iPhone / iPad world. If its a good programmer, they will be loading content during that splashscreen. For the apps that look like they load right away, it may be a lie. A lot of devs will take a screenshot of the app when it was closed last, then when it opens again it shows that screenshot until the app fully loads.
Its not what it is, its something else.
Attempts to fix this problem usually seem to take the form of some abysmal hack to keep the program in memory when not in use. There's one of those memory hogs for OpenOffice, Microsoft Office, Photoshop, and Java. (Java's "jqs.exe" is particularly wasteful of resources. It tries to keep the whole Java environment in memory, deliberately causing page faults, even when there's been no use of Java in hours or weeks.) This is one of the reasons it seems to take gigabytes of memory to do anything today.
Nobody thinks much about linkers any more. That's part of the problem. What's needed is something that organizes the executable file so that the stuff you need to get going loads first, using one big read operation. Linkers which once did that were once common, but are now rare.
Then there's the DLL/shared object problem. Many programs need only a small part of some shared library, but requesting it either brings in the whole thing, or it gets loaded one page fault at a time.
Much of the problem is just bloat. Adobe's PDF reader (which is now unnecessary, since there are good alternatives) takes far too long to load for what it does. Most people don't need the text to speech system, or "WebBuy" (electronic commerce in PDF, a feature used by nobody), yet each adds a noticeable delay to startup.
Hooking something up to the "cloud" makes it worse. Then you get to wait for the server.
Not only do a lot of devs do that, that's what you're supposed to do, it's in the HIG (or perhaps somewhere else in Apple's dev docs).
And I've seen it done on other mobile platforms too.
A "lie" that the UI is starting to work earlier than it really does is better than a splash screen, and the article makes that point.
I agree that putting up a full screen graphic that looks like your loaded app can just be a gimmick cell phone manufacturers prefer to give the *illusion* of performance. There is no harm in showing a splash screen rather than the fake user interface. The splash screen serves your interests, the fake user interface serves the cell phone manufacturer's interests. Serving your interests rather than the manufacturer's does not harm the user, **unless** you do something like introduce a delay to force the user to see your splash. And as you say apps should delay loading of resources to minimize their startup time.
In a calculator app (RPN scientific statistics business hex) that I've developed the screenshot that I use was converted to gray scale and dimmed to suggest the buttons are not enabled. My splash is just a product name and copyright notice and I put that in the standard numeric display. The user experience is an instant but disabled user interface with a copyright notice, the notice is replaced with numerics as soon as the interface is enabled. There is no artificial delay. Splashes can be done is a reasonable and honest (UI has a disabled visual appearance) manner.
But not so long ago, Adobe Illustrator would fire up and you'd get this picture of Botticelli's Venus gracing your screen. A piece of fine art. It provoked a lot of positive reactions- it was literally a familiar face that you saw every time you fired up the application. A sort of welcome. A reminder that even if you're doing something as boring as fixing up a bivariate plot, you're using some of the more artistically-inclined neurons in your head. You associated what you were doing with, well, art. And when you saw that face in your computer screen, your brain recognized it and started getting itself in its "lets-go-be-artistic" mode. Photoshop would have a picture of an eye and a camera lens- reminding you that you were manipulating pixels the same way that photographers used to manipulate film. The new splash screens look like something you'd see in a powerpoint presentation at a large corporation... they feel, in a word, soulless. They don't make you feel like an artist, they make you feel like a corporate drone.
As for the article's contention that splash screens are inherently bad... I disagree with that. They're sort of like the cover art for albums. Back in the day, music came on spinning discs, and people would put artwork on the sleeves that the disks came in. And you'd associate the artwork with that disk in your head, so that sometimes all you'd have to do is look at the art and it would evoke all the emotions of the music and the lyrics of the whole album. There were also these things called "books" that were made out of dead trees, and we were never supposed to judge books by what was on the cover, but a good book cover on a good book... it was like seeing the face of an old friend. A good splash screen can do the same. I can't help but look at Botticelli's Venus and think warmly about hours spent tweaking teensy little handles on points with Illustrator.
If there are any Adobe people out there, I really, really wish you'd consider bringing back Venus and the eye-and-lens motif.
IIRC KDE3 had a style guide requesting that splash screens would be all inside the application window. I always thought that was a brilliant idea.
While that indeed is a good idea, I've also found that within KDE (this was certainly true with latter versions of KDE 3, but now with KDE 4.8 there's not much of a difference either, on contemporary hardware) that most, if not all, applications launch themselves pretty much instantly once the desktop has loaded itself. People keep complaining about the "bloat" in KDE, but the system is very modular; and while kdelibs is undoubtedly big, once it is in memory, it is shared by so many programs that the amount of loading needed for a single application is quite insignificant. The problem is, once you start to use programs that require other frameworks (GTK and such), initial load times are much worse; and with Windows, the situation is even worse.
Fucking modal windows don't have any place in an application.
Fucking having to cancel out of a modal display to copy-paste what you wanted into it because it didn't happen to be in your clipboard.
The modal option need to fucking die; if your shit required modal, you've fucking done it wrong.
Developers and marketoids have abused that option for too long and they need to have their toy completely taken away.
If someone is passing you on the right, you are an asshole for driving in the wrong lane.