Wednesday, August 1, 2007

Desktop Applications are Dead

You think I am speaking old news here? After all, everybody and his sister have been screaming on the street lately about the death of desktop programming.

The majority, if not all, of those screamers have always been "web app" developers. Who listens to those? They aren't even real developers, right? They don't know any better. They don't even know how to use malloc() and free() properly! Poor souls... writing foreach loops in their toy languages, acting like little girls trying mom's makeup while she's at work. Surely they have been naturally pissed at us, real engineers, creating real applications, allocating and releasing our own memory, passing pointer-to-pointer parameters.

Sure we've been looking down at web-app "developers", rumor has it that some of them are known to be ex-taxi drivers. Do you trust those folks proclaiming that the desktop was dead? Besides, tell me this, what has been MORE glamorous in IT, more than web apps, since the rise of Yahoo? However, get this: the desktop is dead.

Who is Ev?
You are hearing this from a seasoned desktop developer. Yes, from one of those cynical dudes who always puts "online applications" in quotes, because, you know, they are not "real" apps. Oh! Another classic: I am someone who never considered JavaScript to be a "real language". How about that?

Even more! I've been in love with Microsoft as long as I care to remember! (still reading?) I used to jump on every new technology coming out of Redmond. Heck, I even seriously believed that every programmer should have a good understanding of his hardware and have some assembly language credentials. Moreover, I believed that C++ was a godfather of all programming languages and Java was just a simplistic subset of it, meant to be used by the average Joe with an average degree in something remotely technical, a language created by a corporation for other corporations to have their pathetic RDBMS-wrapping software development done cheaply by armies of disposable chimps. Well, while the former still holds true, the desktop is dead anyway.

Who Killed the Desktop?
Do you know who killed it? Microsoft did. Yes, I am pointing my finger at Redmond, and I am neglecting the advances in HTTP-based approaches to problem solving. The desktop is dead not because the Web is great. Nope. The Web still sucks. After all, the majority of it was created by non-real developers, remember?

The desktop used to be very much alive, but it has been getting worse and worse. It took a long time, but finally the desktop has gotten so bad, that *even Web-based* UI now looks decent and usable!

Forget for a second about collaboration, information sharing and all those other goodies that the Web gives you. They are not important in this context. I am talking about overall user experience; User Interface, primarily. Besides, you can collaborate, share and do whatever you please by using your favorite desktop application - there isn't a technical obstacle in doing that. Take any 1st person shooter and its multiplayer capabilities, people have been killing each other online for years. Need another example? One word: iTunes.

Standard Runtime Support.
Why has the desktop gotten so much worse? What's broken? Well, try installing something on it. Actually, you should dig a bit deeper: try to develop something for it and then have people to download, install and use it. Do you know what kind of runtime support you get *standard*? Old school circa 1991! Yep, that is what you get. Do not point your finger at .NET, it is still a subset of Win32. It is built mostly on top of Win32, and it is still not available for us to use! Yes, .NET runtime is not part of the most popular Desktop out there - Windows XP.

Microsoft made a strategic mistake by NOT bundling .NET 1.0 into the initial XP release. Moreover, even jumbo-sized Service Pack 2 did not include the newest .NET.

Here we go folks: The only standard runtime available to a desktop application is still old and rusty Win32 API. Otherwise...

Otherwise your poor users, those who still prefer desktop apps, they will have to download and install that fat .NET runtime just to try out your little piece of software. Easy to do, you say? We'll get to downloading and installing in a second.

Downloading Software
The downloading! My favorite area where Desktops suck. Have you noticed how scary the downloading process got lately? In some cases your users will face 3 (three!) scary dialog boxes, warning them that they are about to (potentially) screw themselves in the butt by installing your "potentially dangerous" software. Well... let's hope our users are brave and they will make their way through.

Let them run the installer. But where is it? I mean, where did it go?

- "I just downloaded it and it went somewhere. Where?".

Sounds familiar? No? If not, you just haven't developed any desktop software yet. A lot, and I mean it, tons of users are not capable of figuring out where your little precious installer goes. This is why big desktop software companies have step-by-step instructions up on their sites, on how to well... check this out, on how to download an installer and find out where it goes.

Desktop Security.
If Microsoft really wanted us all to develop more desktop applications for Windows, why wouldn't Internet Explorer let you drag&drop our awesome desktop applications from a page to... well... to the desktop? After all, people have managed to learn how not to put everything they see in their mouth, learned how to stop on red and go on green, how to find a restroom in an unknown restaraunt and wipe off their little popas when they're done. They'll learn not to drop viruses on their desktops.

Ok, a user finds your installer, clicks or double clicks... Waits...

-"Did you download this binary off the Internet?! Are you crazy!? It's me, Vista, talking to you, stupid person! Do you trust this software you just downloaded? How about I make your screen go dark and you type your administrative password? I would also like to play a gunshot in your speakers at maximum volume, but some people here in Redmond figured it was a bit too much."

Buying desktop software versus using online apps these days looks like if you were going to a supermarket to buy "Exedrin" (desktop) and to accept the trouble of staying in line to a register, only to have a cashier bitch-slap you, hysterically screaming in your face:

- "Are you sure you want these pills!?!? Are you sure?! What if they cause testicular cancer?!"

... Meanwhile, less effective "Advil" (online apps) is free and you don't need to go anywhere... Do you want to be in business making Exedrin? Me - not anymore. Exedrin is dead.

- User: "Here! Here! Shut up, you crazy OS that came preloaded on my laptop! Take my password! I still want to install that scary desktop app!"

- Vista: "The password is correct, so if you insist... Oh, in order to protect you better, may I ask you to wear a condom, while using that desktop app? It came from the Internet, by the way..."

Windows Installer and New Computers in US
Pretty easy, huh? Well... easy that is, assuming your user does not happen to be one of those victimized PC owners, who purchased their PCs somewhere on US soil, where most computers come pre-damaged with sacks of crapware, such as 3rd party software firewalls, "internet security" suites, anti-spyware and adware programs and other internet-disabling, I/O consuming, eating-your-dual-Gz-for-lunch junk. Those programs intercept and twist the calls of your application into the same old and rusty Win32 API, throwing more and more scary and confusing dialog boxes at your user.

And the poor bastard (assuming you still haven't lost the sucker at this point) has to deal and calm down this zoo of monsters that infected his PC to look after the "safety" of his Desktop.

Do you still want to be on the market to make Exedrin? Seriously. Would you? In case you still not convinced, let me remind you what's ahead.

For starters, you'll hear about some strange application, called "Windows Installer" (MSI), that mysteriously would try to pop up and "repair" your application later on for no apparent reason? That, perhaps, is a side effect of your poor user trying to install more than one (!) application on his desktop, causing MSI to keep things running properly. Secondly, the state of most Windows machines, especially those that have been running for a while, say 2 years, without professional "assistance" is absurdly bad: registry is a mess, reboot times are ridiculously long and (real life example) Windows Installer tries to repair Microsoft Office every time a user touches your application.

And you know what? A User is getting tired of this crap. He finds that clunky and slow Ajax-spiced UI of most web sites is by leaps and bounds far less annoying. He likes to maximize the browser window and never having to face all this ugly and slow shit that Microsoft, Dell and friends have put for him in there. My point is that Windows is a very fragile platform that people are learning to avoid messing with. Windows makes it hard for users to explore various software options. Can you honestly say that you would be comfortable installing and uninstalling 50 random desktop apps in one day? Personally I use VMWare for that.


The Finale
Stupid user... Using those inferior clunky web apps... Ignoring the superior "user experience" provided by "rich" desktop applications.

And you know what, I can't blame him. Although I could not resist the urge to use desktop-based notepad.exe to rant about this crappy deal. Blogstop's HTML "editor" (yet more quotes) is kind of... not quite ready to have a text typed in.

No comments:

Post a Comment