Can’t Catch MeJanuary 28th, 2010
The future of software is on the web. That’s what they keep telling me. I just smile, and say “I don’t think so. There will always be compelling technologies on the desktop.” I believe this, but I admit it carries an odor of blind loyalty to my comfort zone.
People who argue the other side have latched on to a few admittedly stunning aspects of the web, and they seem to believe that these charming characteristics alone ensure a course for long-term victory over all others. These attributes include:
- Cross-platform. You can run a web app on any computer that has a capable browser.
- Ubiquity. You don’t need to be near your computer to run a web app. You just “log in.”
- Instant updates. No need to coerce customers to update, just change the code on the server and they’re quietly updated to the latest running code.
- Open, standard technologies. You have control over and access to most of the source code at the heart of your application.
Attractive indeed. If you imagine a world where the sum of all things you can do with a computer is exactly matched, and locked down for all time with what you can do inside a browser, then the arguments for the web are persuasive. Why write for a specific platform when you can write for all platforms at once and gain the other advantages as well?
The error is in disregarding the many unmatchable attractions of “the desktop.” When I say desktop, I mean any platform that provides applications with more features than the standard web. iPhones are “the desktop.” As are Android, Palm Pre, Macs, PCs, and Linux. All offer features and functionality above and beyond what you can do on the web itself.
But the web can do a lot!, you cry, and point me to examples of ingenuity such as 280 Slides, the flagship proof-of-concept from 280 North’s impressive library for implementing web apps in a way that is reminiscent of programming in Objective-C. What these people are doing is mind-blowingly impressive, and if I decided to write a web app for some reason, I would probably use technologies like these.
But if I want to write a truly great app, it has to be a desktop app. And this will be true forever, or until there is no difference between the web and the desktop. I grant you, if the web becomes the desktop, something I find very unlikely, then the web will have in fact won by default.
Anything You Can Do…
Companies like 280 North are investing years of engineering time into a necessary pre-requisite for web-app domination: bringing the web’s capabilities up to approximately what the desktop offers. I quipped on Core Intuition that “Web 2009 = Windows 95”. It’s a play on an old bumper-sticker from Apple, that poked fun at Windows for finally having “caught up” to Macintosh’s 1989 feature set, in 1995. The amount of work done over the past few years on web app technologies is staggering, but when you take a step back, they celebrate victories over things we have taken for granted for years on the desktop. Things like drag and drop and animation are at least possible on the web. Other niceties such as inter-application scriptability would require a total overhaul of how web browsers behave.
The problem with the game of catch-up, is you only ever win if your target is moving slower than you are, or better yet if they stop completely. All desktop platforms are innovating to offer developers greater and greater capabilities that peer into the future of what your high-powered CPUs, GPUs, and peripheral hardware makes possible. Meanwhile, most web platforms are just trying to catch up.
And catching up is hard for many reasons, not least of which that they have no idea where the desktop is going. None of us do, and Apple’s announcement yesterday of the iPad is a great example of this. The goal of a “vaguely Mac/PC-like application interaction environment on the web” is thrown a curveball when desktop vendors such as Apple are constantly picking up the goal, brushing it off, and setting down again on a completely different path you’ll have to now forge a trail to.
It’s an unfair fight. We know exactly what the web can do, and we have a good idea of what it plans to do, thanks to its (laudable) open standards. But none of us has any idea what the next iPad, iPhone, Wii, Xbox, TomTom, whatever, will do. Don’t get me wrong: the web is excellent at innovating, but it innovates primarily for publishing and social interaction. It doesn’t innovate on desktop UI or device integration, the very areas where brilliant desktop applications shine. And it does innovate, as I have already suggested, in the art of catching up.
Anything you can run in a web browser can also run inside a desktop app, thanks to the modular embedding capabilities of WebKit on the Mac and Internet Explorer on the PC. However, it should be obvious that the inverse is not true. When something truly innovating and mind-blowing happens on the web, I can drop it into a WebView on my Mac and make it a part of my desktop experience. When something mind-blowing happens on the desktop, you can bet you’ll have people scurrying to painstakingly imitate it on the web. It takes a lot of work, and a lot of time, and sometimes it’s not precisely even possible. But eventually they will come up with something reasonably close.
I imagine in 5 or 10 years the web will have caught up to something resembling how desktops behave today. But I can’t even begin to imagine what we’ll have at our fingertips on the desktop, by then. iPad? We ain’t seen nothing yet.
January 28th, 2010 at 1:30 pm
I agree that there’s never really a technical or usability reason to prefer writing even an internet application in HTML. What makes me sad (okay, I’ll admit it – angry!) is that it’s the only way for a free person to publish application-esque things to users of the best new computers.
January 28th, 2010 at 1:49 pm
The better and less expensive mobile and portable devices get, the less of a need to be able to login from any computer. You’ll have your own computer (iPhone, iPad, whatever) with you.
January 28th, 2010 at 1:59 pm
Good post! The kicker is: Why do we have to move away from the “desktop?” I like having a powerful cloud with great web apps that work in conjunction with my more intimate desktop applications. It’s not an either or thing, so speaking of a demise is rather silly.
January 28th, 2010 at 2:09 pm
Like Kevin said, it’s not so much desktop or web. The future or rather the present is a merger of the two. Device specific rich UI with “desktop” apps coupled with available anywhere data in the cloud.
January 28th, 2010 at 2:23 pm
Have to agree with what the others said. I think that people like talking in extremes when the truth is something usually much more in the middle. So to butcher something Steve said and re-purpose it, I think that we have to give up on the idea that for the web to win the desktop has to “lose” or vice versa.
January 28th, 2010 at 2:35 pm
I think most of the people saying web apps are just as good as desktop apps are Windows or Linux users and because of this I understand where they are coming from. When using Windows XP (which I hope I never have to do again now that I updated my Boot Camp install to Windows 7) I often feel like I am using a poorly designed web app. Windows Vista and 7 have both improved on the end user experience to the point where it doesn’t feel that way quite as much. Many applications on that platform still suffer from terrible design (I would like to beat the person responsible for ribbon in the new MS Office suite and that isn’t even one of the worst examples I could cite) so a well designed web app is actually much more compelling to end users of that platform. Us Mac users are spoiled. Apple, unlike Microsoft, has set some excellent design precedence for Mac developers to follow and in many case improve upon.
I do love the idea of desktop apps integrating with the cloud though. TaskPaper does this very nicely and I would love to see an app similar to Mori that integrates with Google Docs or a similar service.
January 28th, 2010 at 4:07 pm
You mention inter-application scriptability suffers online – I think there is an argument to be made that this can work better on the web, assuming the applications in question have decent API’s. Of course this can’t do things like add contacts to your local address book, but I’ve seen some good examples of web apps working together – for instance the integration between Tender and Lighthouse (maybe a bad example because both are owned by the same company).
That said, I personally prefer using desktop apps to web apps. Imagine if every time you clicked a button in a desktop app it took one or two seconds to see the result? And yet people accept that for web apps.
January 28th, 2010 at 4:59 pm
I think there has been innovation on the web that isn’t just following the desktop – for instance, despite ideas like OpenDocument and a lot of talk about component re-use, and attempts to create standards for integrating objects (CORBA, OpenDocument, etc) it was the web that really achieved the concept of ‘mashing-up’ applications.
I think that does have lessons for programming in the small – it shows the strength of loosely-coupled, highly-parallel, message-passing systems. Which of course is where Smalltalk, and it’s descendants like Obj-C, were pointing all along (even if the parallelism was mostly conceptual until dual-core chips arrived).
But overall, I would agree with you – I far prefer NetNewsWire to any on-line News reader, I use Garagesale for ebay, and I can see no sane reason why I’d use a web-based tool to create presentations when Keynote or Powerpoint are available on every machine I use, or a web-based word processor.
The only people who seem to use these things are, well, web fanbois. If I mention them to someone normal as a free alternative to MS Office, they just tell me they can get a free copy of Office anyway.
The other thing that struck me, reading ‘What the Dormouse Said’ is how this split goes right back to the 60s – between the guys who wanted to build the ultimate information network, which everyone connected into – the web visionaries – and who really didn’t see any value at all in the personal computer, or even saw them as a waste of computing resources – and on the other side, the people more interested in the idea of a personal, programmable computer (Woz, for instance), of computing being ubiquitous and cheap.
January 28th, 2010 at 5:48 pm
Both technology stacks have their place. I write web apps for a living, and do Cocoa work on the side, so I know somewhat of which I speak.
I used SubEthaEdit when doing real time editing was impossible on the web. I now find Docs very cool for collaborative work, not because the web has “caught up”, but because integrating at the server level lets Google do things SubEthaEdit did not do well. The web “catching up” was a necessary precondition, but was not the reason for Docs to be a web application.
The benefit and curse of the web application is the server it is served from. If the app in question gets any value from being on the same server that might be talking to someone else, or from being on a server backed up by professionals, then there is a case to be made. If the web app is just there because the developer did not want to write for the various platforms, then it is not as clear.
Conversely, if the author needs to have content on every platform out there, it makes a lot of sense to consider a web application. Every online ad system out there (that I have used) is a web app because the browser can handle the requirements, and you are then not locking out customers because their platform choice disagrees with yours.
Many iphone apps do not make much sense to me. The Amazon app, for example, seems to have the functionality I should be able to get from a well architected web site, which would then work reasonably well on the Nexus 1 without substantive change.
Others make a lot of sense. Strategery and Flight Control are both likely to be used offline, and there is no fundamental benefit to be had from hosting them rather than creating a client app. Similarly, RedLaser uses the web to get its data, but there is no web standard for camera access. Native app it is.
When the web is playing catch-up, it is not clear that there is benefit, but when it is playing to its strengths, web apps can be quite competitive.
I agree with your thesis that there are places where you just need platform specific features. I contend that those places are fewer than many people think, and thus part of your application development process should be an explicit examination of which features of your platform are driving your decision to create a native client application. As a by-product, you may well discover other platform-specific features that will further differentiate your product.
January 28th, 2010 at 5:55 pm
You’re right – it is an unfair fight. The real innovation occurs on the desktop, and nobody knows where that is heading. I see tremendous opportunity for a ‘rebirth’ of this genre on the iPad. For the vast majority of users a collection of small, highly-focussed apps which appear to work seamlessly together, is a real win. Apps that launch fast, save and restore state as needed, and fetch and put data to will engender a workflow that is both personal and natural. Let the porting begin!
January 28th, 2010 at 7:12 pm
I think we desktop fans are whistling through the graveyard, to be honest.
There is zero reason to write a native app (Win or Mac) for in-house business apps right now.
The web is catching up, and catching up fairly fast, for many other kinds of apps. The iPad hasn’t really moved us in a new application direction, but just given us a new form factor.
Something as good as or better than Mori (or any other note-taker), if cached & downloaded, would be an easy HTML5 app.
January 28th, 2010 at 7:51 pm
The “Ubiquity” argument for web-apps is getting weaker IMHO – the prevalence of malware like key-loggers on Windows means that typing a web password into some random PC is pretty unsafe these days. (A friend of mine recently had her webmail account hacked after she logged into it from a PC in her apartment complex’s laundry room. Ten minutes later spam was being sent to everyone on her address book under her name.) It’s much safer to carry your own computer with you, and iDevices make that convenient.
January 28th, 2010 at 8:00 pm
There is zero reason to write a native app (Win or Mac) for in-house business apps right now.
That market’s been dead to the Mac for its entire lifespan anyway. Good riddance :) The problem with ‘enterprise’ apps is that the people who buy them are not the end users, so useability takes a back seat to stuff like ‘manageability’.
Something as good as or better than Mori (or any other note-taker), if cached & downloaded, would be an easy HTML5 app.
I don’t think so, although you’re welcome to try. Even doing reliable styled-text editing in HTML is a total pain in the ass right now, because every browser’s contentEditable support is broken, and broken in different ways. This is a big pain point for Google’s apps like Docs and Wave (and Sites, which I used to work on.)
Even basic things like outline views are way too difficult in HTML. I spent a frighteningly long time in my Sites tenure working on really simple outline stuff that I could have done in a week with NSOutlineView, in 1/10th the code. Partly that’s because I’m more experienced with Cocoa, but it’s also true that the web’s tools for this are generally so much lower-level than what Cocoa and IB give you.
And then there’s scalability. If you write a desktop app and it’s really successful, your major worry is tech support. If you have a web app, success means panic as you deploy more servers and learn about things like reverse proxies, clustering, database replication, memcache, failover to multiple data centers…
January 28th, 2010 at 8:31 pm
What you say is true. I was referring to the general question of desktop apps, not just Mac desktop apps, which is why I made my first point about in-house business non-webapps being dead.
Luckily, things like Cappuccino are leveling the playing field a bit on the JS side vs Cocoa.
But on the flip side, if you make a desktop app, you have to get people to download and try it. With a web app, you simply get them to visit your site. That’s a significant difference.
January 29th, 2010 at 12:55 am
It’s not always about catching up and overtaking, though. When desktops started knocking mainframes out of businesses it wasn’t because they had caught up, at least not by the standards of mainframe makers. Different paradigms can kick the existing system in the ass, regardless of whether the new approach can be considered to have caught up by the standards of the old one.
January 29th, 2010 at 2:10 am
I actually find web apps more usable, in general. For example, I have yet to see a desktop mapping application nearly as usable and complete as Google Mails, or a mail client nearly as usable as gmail. Remember usenet news readers? I’ll take Google Groups any day.
Granted: The web is a more restrictive framework to live in, but that restriction encourages simpler development. Instead of making everything out of beveled rectangles and buttons, there are just vectors that are more easily understood. Remember that Windows 95-2000 screenshots looked like aerial photographs of prison complexes — nothing but gray boxes and labels. There were nothing but widgets and everything had to be shoe-horned into widget form.
The web, in contrast, it self-documenting. Users are given instructions in complete sentences, not so much because of technology, but because of convention and the lack of widgets.
I argue that frameworks like Cappuccino completely miss the point. The goal of the web should not be emulating the broken metaphors of the desktop. We don’t need movable windows, widgets, taskbars, and dialog boxes. Information is more comprehensible in pages, paragraphs, and links.
And inter-process scripting? Perhaps you’re unaware of the standard blogging API, Twitter API, Facebook API, … shall I go one? The point, to me, isn’t to emulate DOM or CORBA. It’s to get things to work together, and frankly, I think they work together reasonably well on the web.
Anyway, that’s my rant. The bottom line is, I think the user experience is better on the web at present. I don’t think the web has any real catching up to do; it’s already more usable for most applications. There are exceptions, like photoshop, gaming, and IDE’s.
Eventually I think the two concepts will converge. We’re already seeing the wrapping of webpages into applications as well as applications that integrate with the web (like iPhone apps).
January 29th, 2010 at 2:23 am
I thought I would also mention that I don’t life 280 slides impressive *as* as user interface. It’s an amazing technical innovation, but all the desktopy features on it just get in the way. When I create a new slide, why is there a modal dialog? Do I really benefit from moving it around?
It should present a web page that says, “how do you want your slide to look?” and expand fluidly to the available space.
It’s an amazing app, but frankly, if they stuck to HTML 3.2, it would be more, not less, usable.
January 29th, 2010 at 9:26 am
Interesting points, all. I’m particularly struck and what to respond to a couple points:
@Brent Simmons – As I mentioned on Twitter, your comment here gave me an aha-moment with regard to “the cloud.” I think it’s pretty cool to simply start to think of the cloud as being data stored in a variety of places, but first and foremost, in whatever device you’re carrying around in your pocket. As long as our traveling devices have the capacity to record our day’s activities, and provide a useful subset of all our data, then this should work for lots of workflows.
@Dan Messing, and @Ken – Thank you for raising the very legitimate point that APIs do in fact serve to provide a kind of interprocess communication. I was thinking far too naively, in terms of the open instances of applications in your browser. But if you think of a web app as living and running on the server, with the web instance merely a portal into it, it’s clear that an API-based IPC is indeed a (different, yet valid) mechanism for scripting.
January 29th, 2010 at 9:43 am
Re: the larger question of webapps, I think we’re going to be getting to the point where web apps, when fully using the latest HTML5+CSS3+JS (yes, you’d have to limit yourself to Safari, Chrome, and maybe Firefox, but that’s still 100M browsers; then there’s Chrome Frame for IE), can start rivaling or even beating web apps.
And, as Ken says, some web apps have cleaned up in a particular space. (Too bad they’re so ugly, like Gmail. ;-)
Once web apps start being locally cached, start using HTML5 local storage, and start synchronizing with the server when they’re able to, we’ll have true offline apps that run like desktop apps. It’s going to be a challenge, but I think it’ll happen.
And, as Ken also points out, the desktop UI paradigm, as beautiful as it can be, is quite a straitjacket compared to what’s possible with web UIs: the layout can be fluid and adapt dynamic, which is wildly harder with desktop GUIs.
January 29th, 2010 at 9:44 am
(Whoops, sorry: let me retype that:)
Re: the larger question of webapps, I think we”™re going to be getting to the point where web apps, when fully using the latest HTML5+CSS3+JS (yes, you”™d have to limit yourself to Safari, Chrome, and maybe Firefox, but that”™s still 100M browsers; then there”™s Chrome Frame for IE), can start rivaling or even beating desktop apps.
January 29th, 2010 at 10:45 am
Yep. That’s SO true. I used to pick a fixed point of comparison. (“Wake me up when web-apps are editing video in real time.”). But those fixed points will eventually happen. All technological combinatorics are merely a matter of time. But by that time, what will be possible on the Desktop with the same amount of resources that it takes to do video editing in a web-app? The mind boggles. :-)
January 29th, 2010 at 10:54 am
Warren, I think you’ll be surprised at how quickly that happens.
Adobe has claimed they’ll replace all their desktop apps with Flash versions by 2013 or so. (Which I happen to think is an abomination, since Flash itself is an abomination, an attempt by Adobe to define their own operating system, albeit very badly.)
And, with NaCl for things like Chrome, you might see the guts of a video app written in C++ with the GUI in JS, even fairly soon. Well, depends on whether someone wants to really push the envelope or not. It may happen quietly, on the margins of the web world, but then it’ll move out quickly from there.
January 29th, 2010 at 1:01 pm
Not to take a side one way or the other, but I find it interesting that one of the iPad’s big UI additions is “Popovers”– which are visually modeled on “quotation” dialogs that Netflix and others have been using for years now.
January 30th, 2010 at 5:23 pm
An additional advantage of web apps is circumventing the app store. I can host a web application, accept payment via a mechanism of my own choosing, and never risk rejection from the app store. This is not true of iPhone OS apps, and I fear it may not always be true of Mac apps.
Jens Alfke mentions that typing in your password into a random PC is unsafe. I agree completely, but I don’t think that diminishes the ubiquity argument. If I have my data in a web app, I can access it from my iPhone, my Mac, my Windows PC, and my iPad. I might never log in from a device I do not own or control, but many of us own or control several devices. There is no syncing required, and the web app should run on all devices.
While I always have my phone, I typically prefer to access my data from my desktop computer when it is in front of me.
That said, I agree with most of the original post. I think it is and always will be possible to create more compelling user interfaces with native apps than with web apps. I do not expect to be using a web app equivalent of FastScripts, TextWrangler, Acorn, or XCode anytime soon.
Additionally, apps like Mailplane show the potential of taking a great web application and better integrating it into the native environment.
In my opinion, the more compelling argument for native local apps is complete control of the data. It is crucial to personally ensure that if a webapp disappears you still have your data. In addition, a customer simply cannot ensure that data stored in a webapp is kept confidential.
I expect there to be a strong market for native apps, web apps, and hybrid apps for many years to come.
February 13th, 2010 at 4:51 am
“I grant you, if the web becomes the desktop, something I find very unlikely, then the web will have in fact won by default.”
…at which point, haven’t we just almost reinvented X-Windows? (Badly?)
February 23rd, 2010 at 5:36 pm
@Ryan: “at which point, haven”™t we just almost reinvented X-Windows? (Badly?)”
No, but we’ll have re-invented NeWS badly. ;-)
March 30th, 2011 at 9:05 am
I wrote about this here a while ago, and in my opinion, the web gives the minimum common denominator of all platforms while native applications can fully use the device’s potential.