Neil McAllister caused quite a stir with his quick remark about the deficiencies of web apps. While web apps justifiably are a good target for criticism, I feel that his points are badly chosen.
Client-server
Web applications encourage a thin-client approach: the client handles UI rendering and user input, while the real processing happens on servers. What sense does that make when any modern laptop packs enough CPU and GPU power to put yesterday’s Cray supercomputer to shame?
The browser is not a thin-client, at least not in the traditional sense. The amount of processing power that goes into displaying your web app is higher than most people think. A browser is not a trivial application. People tend to forget that, because creating HTML is so damn trivial they are somehow fooled into believing that they might just as well create more powerful display code on their own. They’re mistaken.
In fact, the distribution of processing, storage and rendering power has proven to be quite robust. Data centers are very well optimized for delivery and reliability, while client machines have gotten quite powerful UI advances. Offline functionality remains a problem, though. Google Gears is not going to fix that any time soon, because it just introduces one more complication and abstraction into the code. Look at the time it has taken them to integrate Gmail, arguably their number-one web application. I happen to believe that running fully functional local servers is an often-underestimated choice. At least that way developers have to code the majority of their app just once (instead of twice: server-side code for the real functionality and then again in obscure Javascript calls for a limited offline mode, and probably once again for synchronization).
Now, this part cracks me up:
Furthermore, security vulnerabilities abound in networked applications, and the complexity of the browser itself seemingly makes bugs inevitable. Why saddle your apps with that much baggage?
Sure, browsers have vulnerabilities (some more than others). But how on earth do you arrive at the conclusion that if individual developers all implement their own clients, we’d somehow arrive at more secure and stable applications? Have you ever written widely deployed client UI code yourself? Probably not, otherwise you would recognize how utterly mistaken that approach is.
On the messieness of web UIs
The Web’s stateless, mainly forms-based UI approach is reliable, but it’s not necessarily the right model for every application.
That’s actually true. It was a big mistake not to make some sort of IRC-like protocol part of the standard web technology stack. In fact, IRC would be perfect. It would enable developers to run servers with a realtime communications channel, with very little overhead and high efficiency. I hope we’ll get there. There is no reason this couldn’t be part of the standard browser somehow.
This is where it gets hilarious again:
And while systems programmers are accustomed to building apps with consistent UI toolkits such as the Windows APIs, Apple’s Cocoa, or Nokia’s Qt, building a Web UI is too often an exercise in reinventing the wheel. Buttons, controls, and widgets vary from app to app. Sometimes the menus are along the top, other times they’re off to the side. Sometimes they pop down when you roll over them, and sometimes you have to click.
Really? Because Win32 and Cocoa applications all have a consistent UI? Someone give me a pipe of whatever that guy is smoking. I’ll take standard web-based buttons over, say, a “real” Windows UI anytime. At least the web does have a standard way to call components. Have a look at the Win APIs’ specs and tell me the same is true for Microsoft’s desktop with a straight face. And tell me that Flash UI isn’t a total trainwreck. Please.
The limits of browser technologies
There are some distinct areas where the browser tech stack is severely limited. I already mentioned real-time communications channels and offline functionality. In fact I’d like to expand that with two more: SVG and VRML (or a better 3D environment). It’s a shame that SVG isn’t better integrated, some browsers don’t support it at all. Most of the current 2D UI limitations could be solved with SVG if someone had bothered to think that through instead of assuming SVG to be just another image format for eccentric people. The state 3D UI is even worse. VRML had a lot of promise, but it’s not in any way supported by any of the major browsers. It should be. And add some media (especially sound) support to browser scripting. That’s it, the whole list of improvements. That’s all we need to fix and it’s not like there are any real technological difficulties to overcome for these improvements to happen. Like the space program, it’s a severe lack of vision and focus that got us to the artificial limitations we have to live with today. And not one of them is caused by a fundamental inability of the browser concept to live up to those tasks.
What’s more, HTML and CSS are clearly deficient when it comes to rich interactivity. Witness the proliferation of multimedia plug-ins such as Flash, QuickTime, and Silverlight. Relying on these outside dependencies increases the complexity and support cost of your applications.
Flash and Silverlight are the scourge of the web. They’re resource-hogging abominations of eye-gouging inconsistency and prime examples of everything that can go wrong with UI. The reason those applets suck so much is not complexity and support cost. It’s their whole concept that makes them that way, and it doesn’t matter if they’re integrated into the browser itself or just plugins, they are still the worst possible choice for 95% of all things you might want to do on the web. By the way, those every more prevalent Flash games? 95% of them could be done in DHTML and they’d be more enjoyable for it. Flash and Silverlight, give me a break! In fact I’m glad they are plugins, so I can at least block them more successfully from harassing me.
Big vendors calling the shots
Recently, Sun Microsystems CEO Jonathan Schwartz described the browser as “hostile territory” for independent developers. It’s a world divided between giants, he said, with Microsoft’s Internet Explorer on one side and Google’s stake in Chrome and Firefox on the other. Schwartz’s statements may be self-serving, but he does have a point.
It’s too bad you can’t see me right now, because now I’m really laughing my ass off over here. First, when did Sun become the friendly and powerless underdog who has any right to complain about bad technologies sucking up valuable developer resources because of mass market muscle? The sheer audacity, it’s mind-boggling! From the creators of Java, for chrissakes, this is comedy gold!
Anyway, Firefox (and, by extension the whole open source community) is not exactly what I would call a big vendor seeking to enslave the mindless masses of powerless users. If there is one big lesson to be learned from the exponential growth and success of the internet, it is how an extremely low barrier of entry combined with no-bullshit, actual freedoms for developers can make radical change possible in the first place. With the way the web works today, I can develop a complete application on frigging Notepad, deploy it on an open source server stack, and anybody with any browser and any operating system in any part of the world can use it instantly. Contrary to what you might have been lead to believe, there is no Java EE necessary in any of these steps, nor do I need Visual Studio for this. How perverse to suggest otherwise.
Should every employee have a browser?
At one point, a computer on an employee’s desk was for work. Today, every Web-enabled PC is a gateway to shopping, TV and movies, games, music, online chat, and countless other diversions — up to and including more illicit activities, including porn and copyright infringement — to say nothing of making them vulnerable to phishing and malware attacks.
Oh my god, really? You know, people who are bad employees have indeed been slacking off long before the internet came along. You do get that, don’t you? Useless people are all everywhere, how is the web responsible for that? And most people are not even really useless, but tend to slack off once in a while.
Employees do occasionally use company time for personal stuff, within limits that’s unavoidable and even healthy. Conversely, if it has come to the point where you feel it’s appropriate to surf porn at work, you and your employer have bigger problems than the shocking lack of innate censorship options built into contemporary IT systems.
The watchword is responsibility. Censorship and draconian restrictions are in fact not a substitute for commitment and responsibility, contrary to what you might have learned from the way our government is run. To blame the internet for moral degradation is in vogue, but not very smart. There’s a touch of evil and totalitarian stupidity to that argument, even.
Neil, your article is ill-conceived and it’s hard to see why it got so much undeserved attention, but there you go, that’s just a weakness of the web I guess. Instead of invoking straw man reasoning and using ignorance as if it were a virtue, you could have used the popularity of InfoWorld to actually carry a constructive message across by addressing what specifically should be fixed (like I did above). But alas, what a waste.
Possibly Related Posts:
- Google Gears And The State Of Offline Webapps
- WPF/E
- Always On vs. Offline Web Functionality
- Followup: Buzzwords …er Web 2.0
- XAML and XUL
More:
Google Gears And The State Of Offline WebappsWeb apps are great, especially for data entry and data...