Are Web Interfaces "Good Enough"?

March 14, 2007

Torrent, my favorite BitTorrent client, now offers a web UI. See if you can spot the differences between the Web UI and the Windows UI:

Torrent web UI

Torrent Windows UI

After spending about a year interacting with Torrent exclusively through Remote Desktop, I was pleasantly surprised to discover how good the web UI is. It aggressively exploits the latest Ajax techniques to replicate most of the rich GUI functionality of Torrent in a browser. But the web UI is still a pale shadow of the full-blown Windows UI. There are small but important details missing throughout, and part of the pleasure of using Torrent was luxuriating in its intense attention to detail, its wealth of well-designed data readouts. Using the web UI is like drinking watered-down beer. It doesn't satisfy.

But does it matter? Despite my nitpicking, I can do everything I need to do remotely through the web UI.

I do sometimes miss the fit and finish of the complete Windows UI. But if the only way to achieve full fidelity is to log in to the machine as a user via Remote Desktop, it's hardly worth the effort. Remote GUI technology has never caught on, either in Windows (RDP), in UNIX (X11), or even on the Mac (ARD). This approach has always felt like overkill, and it doesn't seem workable based on the historical evidence.

But maybe "good enough", via the eccentric and often unreliable combination of DHTML, JavaScript, and HTML, is all we need. That's what Joel Spolsky thinks, anyway:

So the Web user interface is about 80% there, and even without new web browsers we can probably get 95% there. This is Good Enough for most people and it's certainly good enough for developers, who have voted to develop almost every significant new application as a web application.

I'm actually a little bit sad about this, myself. To me the Web is great but Web-based applications with their sucky, high-latency, inconsistent user interfaces are a huge step backwards in daily usability. I love my rich client applications and would go nuts if I had to use web versions of the applications I use daily: Visual Studio, CityDesk, Outlook, Corel PhotoPaint, QuickBooks. But that's what developers are going to give us. Nobody (by which, again, I mean "fewer than 10,000,000 people") wants to develop for the Windows API any more. Venture Capitalists won't invest in Windows applications because they're so afraid of competition from Microsoft. And most users don't seem to care about crappy Web UIs as much as I do.

None of this bodes well for Microsoft and the profits it enjoyed thanks to its API power. The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.

Bruce Eckel read the same tea leaves as Joel Spolsky, and concludes that the future of rich web applications lies not in HTML, but in Flash:

JavaScript has been around since, effectively, the beginning of the Web, but the browser wars made JavaScript inconsistent and thus painful to use. A key part of Ajax is that someone has gone to the trouble of figuring out cross-platform JavaScript issues so you can ignore the often radical inconsistencies between different browsers.

There are two problems with this approach. The first is that JavaScript is limited in what it can do. Although Ajax is an excellent hack that gets the last bit of mileage from JavaScript, it is nonetheless a hack, and the end is in sight. The second problem is that you are relying on Ajax libraries to handle cross-browser issues. If you want to write your own code, you must become an expert on those issues, and at that point much of the leverage of Ajax goes away. Ajax improves the experience a lot, but it has limits and I suspect we've already seen most of the tricks that Ajax is going to offer.

There's a very impressive Flash web app called Gliffy that imitates Visio (this was created with OpenLaszlo, which I'll mention later). No one could even think of creating something like that with Ajax, although someone did an imitation of the much simpler Microsoft Paint using HTML, CSS and JavaScript. Very impressive, but you get the sense that this is close to the limit of what those technologies can do, whereas Flash would just be getting started. Plus the Paint clone is a bit slow and clunky and the UI is inconsistent across browsers.

While amazing things have been accomplished within the confines of JavaScript with technologies like Ajax, JSON, GWT etc., these are nonetheless confines. We bump up against their limits every day, and those limits are not going away.

I think Eckel is too quick to dismiss the utility of browser-based JavaScript applications. Yes, they're painful to create and debug, but they exploit the path of least resistance. And if I have learned anything in my entire life, it is this: never bet against the path of least resistance. You will lose. Every time. What Eckel neglects to consider is this:

  • The typical user only touches a fraction of the functionality in most applications. Switching to an online spreadsheet like EditGrid or WikiCalc is hardly a catastrophic loss when you only used 1 percent of Excel's functionality to begin with.
  • Online applications may be awkward, but they do one key thing that local applications can never do: embed snippets of live content in a web page. Instacalc may never be Excel, but so what? It's a completely different use case. Instacalc is ideal for embedding bite-sized, interactive nuggets of calculation next to a paragraph of text on a web page. It's the YouTube of spreadsheets.
  • Eckel sees a world of JavaScript and DHTML that's inappropriate for large applications. I see a world of large applications that are inappropriate for most users. It's high time we scaled down and scaled back. If anything, this is a beneficial side-effect of the limitations inherent to the platform.

Like Joel, I think the future of many-- but not all-- applications is in the browser. Web apps are good enough today for most tasks, and they're getting better every year. The web browser is the giant black hole of the computing universe, and like it or not, your application is caught in its immense gravitational pull along with the rest of us.

As useful and as clever as Torrent's web UI is, I'm still deeply disappointed. I'm disappointed that, with all the technology at our disposal, we can't come up with some way to deliver a full-fidelity user interface over the wire for an application as nifty as Torrent. I'll belatedly agree that web interfaces are "good enough"-- but after all these years of progress, why should we have to settle for something that's merely "good enough"? There has to be a better way out there somewhere.

Posted by Jeff Atwood
124 Comments

Venture capitalists won't invest in Windows applications because of fear of competition from Microsoft?

But, um, er, a "web app" running on IIS written in ASP.NET and requiring the latest Internet Explorer with all patches is actually a Windows application. (Unless somehow there actually is a lowest common denominator across many browsers and web servers - but that means that no web browser is allowed to implement anything that the others don't have.)

In the meantime, either Vista will be the biggest flop in computing history, or *something* will be running on the desktop.

On the other hand, Joel did say something else that is still true: abstractions leak. The web-app SOA abstraction does leak, and no matter how well you plug your leaks, there's always one more leak needing plugged.

Still, it's nice to see the Sun slogan "the network is the computer" ws just ahead of its time, and they wern't as mad as everyone said. ;)

I'm Blue on March 18, 2007 2:05 AM

It's a shame that you removed the links from your quotes. Just in case anyone's wondering what Bruce Eckel was referring to with "someone did an imitation of the much simpler Microsoft Paint using HTML, CSS and JavaScript": http://canvaspaint.org

c3o on March 18, 2007 7:04 AM

As far as my near-religious opinion about remote use of torrent clients is concerned: i prefer the combination of OpenSSH, screen and rtorrent (http://libtorrent.rakshasa.no). Perfect for those running *nix boxen at home.

apecat on March 18, 2007 8:33 AM

Why you always put the word "orange" in your Captcha Control? Is there no other word you can think of for the captcha image. I mean if there is only 1 word coming again and again then there is no use of the captcha control! It should have random words and not 1 word. 1 could easily write a program which will fill the word "orange" without even bothering to read the captcha.

Regards,
Mahernoz

Mahernoz on March 18, 2007 12:18 PM

You seem to have misunderstood what Bruce Eckel was getting at. With Flex 2, your rich (i.e. thick) client RUNS IN YOUR WEB BROWSER. It leverages the capabilities of the Flash plugin, which something like 97% of current internet users already have installed, in order to provide all the benefits of a true thick client combined with the ease of deployment of a web application.

The last part of your post laments the fact that "we can't come up with some way to deliver a full-fidelity user interface over the wire for an application as nifty as Torrent". Ummmm - in fact, we can. With Flex 2... which is what Bruce Eckel was talking about, and you did not seem to comprehend. You might want to look into Flex 2 sometime soon.

Alan Rahn on March 19, 2007 2:47 AM

Do you know why Flash sucks and will suck forever?

Flash is inconsistent and unintegrable by design:
- web pages (what user gets) have open code, while flash does not
- flash plugins cannot act like other native elements in browser, e.g. images, to catch right clicks and mouse gestures - they are alien to browser
- flash cannot be disabled or saved separately with standard (default) means - such inconveniences with images killed Netscape!
- flash takes most of CPU time on huge objects
- flash is used 90% for ads
- the rest 9.9% of wholeflash sites have no integration with standard browser tools - bookmarks, navigation, copying, saving etc; users hate this
- 0.1% of flash use are separate content instances (games, etc) which can be loaded into a separate flash player as well.

That's why flash must die.

And as for web apps they suck for similar reason:
- they not always cope with standard browser tools
- in 99.99% cases you cannot save a web app in its current state
- they are inpredictable - nobody knows when they choose to update or to insert ads; as for my The Bat!, it will run and looks the same yet even in 2099, as well as i don't update it
- they are too server-dependent (not 100% reliability and privacy)

So, while there will satisfy 90% users, there will always be a niche for the rest 10% or more, who now use Linux/2003 Server as a workstation, Firefox/Opera as a browser, Greasemonkey or other user script tools, ad blockers etc. And it is a huge potential market for all kind of customizers. All browsers suck by design.

User on March 19, 2007 6:14 AM

Well, did you heard about NeoSwiff ? a href="http://www.globfx.com/products/neoswiff/"http://www.globfx.com/products/neoswiff//a
Writing Flash applications in C# solves many problems in my opinion

Fluti Flup on March 19, 2007 6:20 AM

How many of the supposed 8 per cent of users who have disabled JS have also disabled Flash?

Alex on March 19, 2007 9:32 AM

SEO can't do much with Flash. Administrators want their websites ranking high in searches. In house Flash/Web stuff doesn't need this, but then again, "inhouse", doesn't need Flash, it can use the bigger stuff.

It is kinda nice when you just tell the user, "close your browser and then open it again", to fix most problems.

John A. Davis on March 19, 2007 12:52 PM

I agree that web technologies fail to provide that last 10% that we expect out of windows apps. And microsoft recognizes this and has created WPF/E, which in my observations is essentially a flash application foundation.

Something to look at.

sam on March 20, 2007 7:17 AM

It's the YouTube of spreadsheets.

Don't you mean YouTube is the Instacalc of video? :-)

Phil M on March 20, 2007 11:08 AM

Everybody having Vista and .NET 3.0? Not that I plan to not having the first ever, I even have no stinking .NET 1.0 at all. If you want to do browser based stuff using widgets, XUL is the way to go, not that .NET crap. For the rest, let's see where Flex will get.

flux on March 22, 2007 4:25 AM

Oh, and yes, Flash does suck hard on the whole "open" issue.

flux on March 22, 2007 4:27 AM

Hi Folks,

This is a great discussion. I wanted to point out that with the release of OpenLaszlo 4.0, there is now a 100% open-source framework that allows you to take advantage of Flash's strengths when you need it (video and audio playback for example), and have the _same_ source code compiled into a DHTML application. The DHTML kernel is quite good, with cross-browser support for things like vector graphics, mousewheels, context menus and reliable cross-browser opacity among other things. We like to say 'we work hard so you don't have to' meaning we take care of abstracting away all the browser and Flash player warts. Instead of worrying about runtime issues (or even which runtime you want to use - Flash or DHTML), you can concentrate on building great UIs.

I don't know if you can build an adequate replacement to a native desktop Bittorrent client, but it certainly won't hurt to try again! As browsers improve, I expect the line between native and web applications to disappear.

I don't think you missed Bruce's point at all - and I must say I find it somewhat amusing he cites an OpenLaszlo app as an example of why you should use Flex 2/Flash! Where are all the Flex deployments on the open web? I don't see a lot of them. Certainly, there's a ton more AJAX out there, with more showing up every day. And, there are many more OpenLaszlo apps on the open web, at places like pandora.com, walmart.com and monster.com.

Part of my mission in developing the DHTML runtime was to see how far we could get without Flash, while still giving developers a rational development model that scales better than hand-coded JavaScript. A good friend of mine recently remarked 'JavaScript is the new assembly language' and I couldn't agree more. Sure, there are still folks hand-coding x86 assembly but the point of diminishing returns (and Moore's Law) means that most people don't bother.

The other part of the mission was to make it easy to add new runtimes. In the coming months, you can expect to see support expand beyond Flash and Ajax into places like the mobile space. In fact, if you're going to be at JavaOne, come by for a visit - I'll be co-presenting Project Orbit, Sun's new Java mobile runtime for OpenLaszlo.

What runtime would you like to see added next?

Regards,
Max Carlson
OpenLaszlo.org

Max Carlson on March 24, 2007 10:17 AM

I'm glad Max came in with "take advantage of Flash's strengths when you need it (video and audio playback for example), and have the _same_ source code compiled into a DHTML application". I think Eckel's points are good, but I'm not so sure about his conclusion.

Perhaps OpenLaszlo's fate will be a strong indicator of how this is going to pan out.

Ben Tremblay on March 30, 2007 8:50 AM

i'll be thankful if u help me getting a horror interface of my forum

mohamed on April 23, 2008 4:09 AM

I sure hope those screen-shots weren't made by you or that you paid for the movies :)

Tom on December 16, 2008 5:32 AM

I DON'T WANT my web apps to look like my desktop apps.

Nicolas on January 19, 2009 2:44 AM

What few bits and pieces are you missing in the WebUI exactly? The Done % bar and the Pieces graph? I see no obvious reason why these can't be implemented using Ajax if one wanted to. The tiny icons on the 'folders' and the shaded tabs? Ditto.

It's not a question if it can be done, it's rather a question if it was worth the extra overhead in the first place. There is a reason why today's MS Office measures in gigabytes rather than floppy disks.

Average Joe just wants to write a letter and download a .torrent, like you said, via the path of least resistance.

Floyd-ATC on February 10, 2009 11:32 AM

Let's not forget the cross-platform issue as well. I just got done going 1.0 with a .NET WinForms app for a trading card game. The end user feedback has been good, but of course I get a lot of "Where's the MAC version?" for this? I initially looked into updating the code to make it Mono compatible to target the Mac/*NIX users. But when given the choice, most of them said make it a web based app.

So that's the route I'm taking. Sure this is no Visual Studio type app, and I'm sure that there will always be a group of apps that need to remain desktop based, but with the power our machines have nowadays and the minimal processing actually needed, the convenience of web based apps becomes apparent.

Sean Patterson on February 6, 2010 10:03 PM

The better way is stop using HTTP to build applications with. HTTP was never intended as an application protocol, its a document protocol. I beleive others have pointed this out. Web *Browser*. Browse for documents, information. Browsers not applications, merely render content.

But when web exploded people wanted to do more, so addons were added to browsers, server side scripts, and client side script or a mix of both: Netscape Javascript, Micrsoft ASP, ASP.NET, AJAX, etc.

All previous and new solutions WORK AROUND this problem. ASP, AJAX, Javascipt, etc. are bandaids to this issue.

Now its a big pile of dodo rolling down a hill. Can't stop it, just jump in and go with the flow and do your best.

Jon Raynor on February 6, 2010 10:03 PM

I agree with Jon Raynor. Why is there a push to build desktop apps in a web browser? If you want a fat app, build a fat app. Too much web "functionality" relies on hacks, workarounds, and flat out sloppy software design in order to emulate a desktop environment.

Aaron on February 6, 2010 10:03 PM

Disagree that X11 remoting has never really caught on... in environments where Linux/Unix workstations are widely used, it's an invaluable feature. I frequently use it to access applications on my personal desktop machine from whatever computer happens to be handy...

Simon Geard on February 6, 2010 10:03 PM

What sad is that Rich internet application slowly start to solve problems we already soved for desktop systems and on the other side of the equation we managed to solve the deployment problem of desktop applications which is probably the main motivation for web-based ones anyway

I blogged about it on my Dr. Dobb's blog:
http://www.ddj.com/blog/architectblog/archives/2007/02/ria_is_it_deja.html

Arnon Rotem-Gal-Oz on February 6, 2010 10:03 PM

«Back

The comments to this entry are closed.