The Web is inherently an inadequate application development platform.
I recently wrote about Pyro Desktop. Pyro is essentially an effort to merge the desktop and the Web, which I think is a poor idea. I’ve gotten some interesting feedback on that article from others, and I’d like to address their comments.
The first comment is from Manuzhai, over at Reddit. It focuses on the suitability of the Web as an application development platform. The basic suggestion is that while the browser may not have been an adequate platform in the past and even the present, the continual evolution of JavaScript will change that.
I do agree, to some extent. We are seeing an evolution of JavaScript. But the problem, I think, isn’t so much about change that needs to still happen. The problems we see are inherent to the very nature of HTTP, JavaScript, and the concept of a Web browser. They can’t be solved by evolution alone.
What’s missing is the support necessary for large-scale application development. JavaScript is excellent for adding a small degree of interactivity to an otherwise static Web page. But we start running into problems when we push it beyond that. We end up with the problems we see from many Web apps today, even those developed by well-funded companies with some of the top talent. When using a technology such as AJAX, such problems include excessive memory consumption, a lack of responsiveness, security issues, excessive CPU consumption, and so forth.
It’d be one thing to suffer some performance, reliability and quality loss were there major gains being made in other areas. But that’s just not the case with Web applications. We don’t get an increase in developer productivity. It’s quite the opposite; complex Web applications are often far more difficult to effectively develop, implement, debug and maintain. Likewise, the user experience is often inferior to that when using equivalent desktop software.
The only way to fix many of these issues would be to strip away the browser, to strip away JavaScript, to change the nature of HTTP and the related conventions. But by that point we’ve essentially changed everything about the browser. Thus I would tend to think that the problems we encounter are inherent to the concept and idea of the Web browser.
The second comment, by beza1e1, was left as a reply to the article itself. It focuses on the only benefit we see from Web apps: accessibility from essentially any Internet-enabled computer. For people on the go, it is essential to have access to your information rapidly and effectively. But we don’t need the Web for this, and we certainly do not need Web applications.
In the past, I’ve written about how easy and effective it is to just use existing, decades-old technology to access your typical desktop applications from virtually any Internet-enabled computer. All we need to do is use proven technologies like SSH and X11, or VNC. We get the benefits of our full-featured desktop apps, with the high degree of connectivity many of us need, while having far greater control over how our important (and often private) data is stored and managed.
In closing, I would like to thank those two individuals for their comments. They provoked some interesting thought and consideration on my part, and hopefully for you, as well.
July 21st, 2007 at 7:21 pm
You’re welcome!
… but damn, you just countered another comment of mine.
http://programming.reddit.com/info/287qy/comments/c288pl
July 21st, 2007 at 9:36 pm
Sorry, I can’t hear you over all my web productivity.
July 22nd, 2007 at 12:09 am
Heh, you actually pay attention.
But I still don’t agree with your point. You say “complex Web applications are often far more difficult to effectively develop, implement, debug and maintain.” Yet in my experience, even with the current state of cross-browser compatibility, building an interface using HTML and CSS is far easier than getting into a toolkit, event loops, different threads and window repainting.
Maybe AJAX isn’t perfect yet, but I think we’ll get there, and it won’t take long (already, toolkits like jQuery take a lot of the pain away).
July 22nd, 2007 at 1:46 am
Hey!
I have to say, while I generally enjoyed the article, the last point, about web apps being accessible from any web enabled computer and why desktop apps can match that, is pretty weak and you sort of seem to brush off the issue and don’t give it as much thought as it would deserve.
First of all, users who aren’t computer savvy don’t have any idea what SSH, remote X11 and VNC are.
And even if you are knowledgable about computers, it still requires setting up your machine, a client on where you want to access your desktop apps from, sufficient upstream bandwidth and of course your computer has to be on all the time. And all that for what? Accessing some of your bookmarks or something when you can just go to your del.icio.us account or something with one click.
Another thing is, you can’t do remote X11 via a cell phone or some other devices. Sure, some phones have SSH clients, but so what? The commandline only has appeal to us geeks. Whilst web application interfaces can be delivered in the form of good, semantic, degradable (X)HTML, which can be viewed by just about anyone, on anything, anywhere.
July 22nd, 2007 at 11:11 am
Very nice thoughts indeed.
However there is one factor that could be the clincher to some software development companies when looking for a platform to develop on.
Piracy.
it is impossible to illegally copy a web app (given a certain level of administrator savvy-ness).
so if you are selling / licensing an application on the internet, the best way to make money is to make it a subscription service web-app (unless you are completely funded by advertising revenue which works for some things but not all business domains)
July 22nd, 2007 at 11:22 am
@Manuzhai: Well, `building an interface using HTML and CSS is far easier than getting into a toolkit, event loops, different threads and window repainting’, indeed, but don’t think all desktop development is as it is with Win32 APIs, and their other similarly-bloated cousings in Java and .NET. And GTK+ and Qt (just to be sure I anger fairly (o:).
It can be cleaner. The future will tell.
August 1st, 2007 at 12:38 pm
Web apps are going to get “too big” for the browser and will force the use of custom apps. The firefox guys are already working on something like this ().
At this point the browser will disappear and we will be back at the desktop with apps which connect to a site/multiple sites.
Like with an RSS reader where we save many URL’s for the sites we are interested in, so will it be for all other apps.
Then IPV6 will be adopted so every body can have their very own public IP and be accessible from anywhere.
Since everyone is accessible, we’ll just run our own services, post blogs on our own computers, run our own mail+messaging services (just like a mobile phone — the call comes directly to your phone).
Then we’ll all add our friends’ addresses to our RSS reader-like apps so we can chat with, call, read their blogs, send them mail, access their shared files, etc
So at this point, the internet is getting distributed.
It will now become hard to keep up with adding addresses to apps — not difficult though because it would be as easy as adding a bookmark. But by now each one has a few hundred addresses in their apps.
Adding addresses then becomes fully automatic and we start seeing distributed search engines, etc
It will be as easy as when you add a person’s address, you will access their services instantly i.e. shared calenders, blogs, news, files, chat, calling, email, etc