Why Applications Suck (Part 1)
Aug 24, 2007
Why do people outside of corporations overwhelmingly use webmail instead of email clients? Long before rich email clients like gmail were available, people have flocked to the internet email client - messaging has been the killer feature of the web for a long time now.
But why?
The answer is simple: Overwhelmingly, users do not want to install programs, and users do not want their data stored on their computer. In that order of importance.
Users Don't Want to Install Programs
Let's examine the process of getting a popular, free, email client like Thunderbird installed. To do so, imagine that we're instructing our kindly aunt Tilly how to install it.
Now Tilly is no old fogie, she's been using Microsoft Word at work for over a decade now, and she knows her way around msn.com. However, she just decided to strike out looking for a new job, and wants to finally use that personal email address that came with her cable internet. She's got us trapped on the phone, and "we know computers", so here's roughly what we'll tell her to do:
- type google.com in the address bar
- type in "thunderbird"; press enter
- click on the first result
- click on "Download Thunderbird"
- click "OK"
- choose a place to save it (Just use the desktop, Tilly!)
- minimize the browser
- hunt for the file named "Thunderbird"
And, ohmigod, we're not even close to done. She's still got to run the installer (3-4 clicks minimum), which involves selecting an installation directory (a what?), then open the program, open the tools -> accounts menu option, find the documentation for her service provider's email tools, copy them into the "add new account" wizard (another 3-4 clicks) where appropriate, remember her user name and password, and then download all the email she's had sitting there since she hasn't checked it ever.
Now, finally, she's ready to use her email client. It's just that easy!
Let's compare the process for getting her up and running with gmail:
- type "gmail.com" in the address bar
- click on "sign up for gmail"
- fill out a form (a task she probably knows how to do)
- click on "I accept. Create my account."
Now, Tilly may not be the most technological mind around, but she's also no dummy. I know which one I'd rather direct her to do.
Desktop application install is a problem.
Do We Even Want to Fix This?
Many web 2.0-savvy types will tell us that this isn't a big deal. In the future, all of our applications should be inside our browser, and to speak otherwise is heresy! The desktop is dead! Sure, Javascript + Json + the browser has limitations, but those restrictions are liberating! Get used to it, or perish! Well, bah humbug. Here's what's good about the web: The easy posting, viewing, and navigating of documents described by URIs.That's it.
Let me repeat it for clarity: The web, in your browser, is only really good at sending discrete data, displaying discrete documents and navigating in between them.
Phew.
The whole paradigm is absolutely superb at getting this job done. The system of hyperlinks, URIs, DNS, and HTTP over TCP/IP is the greatest achievement that computer programmers have achieved, a massive global effort that has managed to stay amazingly open and coherent. It "Just Works" enough to change the way information is distributed, businesses are run and even how society is structured.
Anything amenable to being represented as discrete visual documents has taken to the internet like a duck to water. Chief among them is email; check out the top 100 global Alexa websites and see how many "social networks" in how many languages are in the top 100. Sites displaying news (documents), photographs (documents), videos (strictly as documents), and information about software (documents) make up most of the rest.
What's left among those 100 is the elephant in the room; the Killer Internet Application: search. Even Microsoft's lame search engine finds its way into the top 100 because people will do whatever they need to in order to search the web; it's the only way to get an effective handle on the information in the Great Hyperlinked Mass. I believe it's the exception to my "web is only good at documents" theory that proves the rule.
Search Works, so Let's Put All our Apps On the Web
Since the web gained massive worldwide popularity in the mid-1990s, an enormous amount of effort has been spent on making the browser into an application development platform. The Great Mozilla Rewrite basically shut that browser down between 1998 and 2002 in order to make it an application platform. Microsoft developed activeX, Sun pushed Java applets as the solution, Adobe developed SVG, and Macromedia developed its Flash player.Nowadays, Firefox is pushing <canvas>, Microsoft has released Silverlight, Macromedia has become Adobe, and Flash is the only one of the first generation technologies still breathing oxygen as a development platform.
Furthermore, with the invention of Google Gears, Joyent Slingshot, the aforementioned Silverlight, or Adobe Air, you might soon be able to (gasp) save files to the host computer! That's right, in 10 years we've almost gotten to the point where a program running in a browser can save a file on your hard drive and read it when you're offline.
The problem is that, fundamentally, a browser is still only good at one thing: documents. Its whole paradigm is set up that way. What does the "back button" mean when you're playing a game of asteroids? What does "home" mean while you're editing a photo? Does an address bar on an mp3 player need to be so in your face?
We Can Fix This
So, instead of shoehorning our applications inside of the browser window because it's convenient, let's do something radical: bring our "real software" applications into the modern age of the internet.In the next article, we'll talk about how software installation came to suck so badly, with an eye towards how to go about bringing it up to the web era.
[# ▷] applications, computer, programming, internet, storage
Open Letter to Mozilla: Put up or Shut up
May 21, 2007
I have been using Firefox since it was Phoenix 0.1. It was the best browser then, and it is the best browser now. The first computer language that I ever learned was HTML, and I learned it largely by hitting "View Source". Without it, who knows if I would be a programmer today?
Today, though, the world is a different one than it was back in 1998 when I was plunking around with HTML. Broadband has (finally!) gotten widespread adoption, and with it the web has gotten past animated rollover effects. Youtube serves millions of crappy videos per year, pandora.com sends millions of bits worth of music over the wire every day, and you can head over to espn.com and check out the highlight's of tonight's Red Sox - Yankees game.
And do you notice something that all three of those sites have in common? All of them use Flash to serve their content. So, while I'm not a big fan of people developing in a closed environment that costs ungodly amounts of money to develop in, and leaves *nix developers in the dark, I'm a bigger fan of innovative products and services continuing to crop up on the internet.
Mozilla, information may want to be free, but it won't be if it can't outcompete the closed kind. You are in a unique position to make that happen, but you're falling behind. We all know about Java applets, and Flash has been around for a while, but with the release of Silverlight and Apollo, the web is threatening to sneak away from us. It's awfully tempting that one lets me write rich web interfaces in my favorite language, and the other lets me bring my applications offline.
So while it's all well and good to post about the high cost of free tools, and talk about how important Freedom is, you need to bring us a viable alternative. Give me the tools to write a file upload box that doesn't suck; Give me the tools to show my users video and audio; Give me the tools to put the closed-source developers to shame. Maybe someday SVG won't suck, or <canvas> will be a viable answer to flash.
If that day doesn't come soon, it may come too late.
Update: jerf at reddit takes a slightly different angle, but says some things that I think but that I failed to get across.
Underappreciated program of the month
Nov 28, 2004
Now that I'm back into web development, I'd like to give some props to a program that I use all the time, but don't read about very often. NcFTP is a simple command-line ftp program whose main attributes are speed and simplicity.
Back when I started doing web design, there was only one *real* ftp program that I knew of - WsFTP. The standard upon which all of the two-paned FTP GUIs are based, WsFTP was also a very simple program - just click the '->' button to move a file from one server to another, and '<-' did the opposite.
That worked well for me, until I started to use Linux. Once I learned the beauty of the command line, I began to avoid the mouse as much as possible. Furthermore, I needed a new FTP program, since WsFTP only ran on Windows. For a time, I settled on the original command-line 'ftp' program, but that quickly became annoying - it was just too simple. I tried some wxWindows clone of WsFTP, but that just seemed an uncomfortable hack.
Fortunately, at some point, I discovered NcFTP (why do ftp programs all need absurd capitalization? just curious...). It opens in a console, and does its job simply and effectively. Here's what I'll do when I'm done writing this blog entry to upload it to my server:
> open blog > lcd ~/code/web/mysite/blog > put underappreciated.txt
And that's it. 'blog' is a bookmark which connects me to my remote server and changes to the proper directory on that server. To set it, when I'm in that directory already, all I have to do is type 'bookmark blog', and it will ask me if I would like it to save my password with that bookmark. This is opposed to the aforementioned GUI programs, where bookmarks existed, but were rather complicated to set up.
Furthermore, the 'lcd' and 'lls' commands allow simple local navigation, and the program has directory and file name completion on the remote server as well as the local machine.
In short, NcFTP is an example of a program which is complex enough to get the job done efficiently, yet simple enough to use with no learning curve. As you get used to it, you simply learn more commands, which I find to be a hallmark of a good program. If you don't use it, you should check it out; you probably already have it if you're on a *nix, and it works with Cygwin if you're on Windows.