It has been clear for some time now that the Web is iredeemably broken. Dvorak comes late to this conclusion, but his concerns are all valid.
The way the Web works now is an incredible rat’s nest of twisty little programs, all alike. The server, originally intended simply to copy files to to a user’s computer in an efficient manner, now does all kinds of processing by means of CGI or J2EE or ASP or ASP.NET or whatever, somehow collects the data it needs and spits it out as an incredibly poorly organized collection of plain text in half a dozen formats, some of which are declarative (HTML), some declarative with side effects at incredible distances (CSS), some actual program code (JScript, etc.); as well as various kinds compiled or byte-code (Java, ActiveX, Flash, etc.).
This mish-mash then gets read by your browser, which tries (and usually fails miserably) to present it to you in something resembling the fashion the creator intended.
I won’t even mention the evil that is the DNS and the URI.
All this is stateless, which is obviously ridiculous for any task more complicated than reading text files, which is why there’s an incredible overhead of passing and handling session and state information in any “Web Application” (ptui).
Things like Ajax are simply a colourful band-aid attemping to cover a seeping pustulent wound.
Oh for the good old days of Gopher! Or distributed systems like Plan 9, where access to any application on any computer is completely seamless and transparent. Or even X Windows (shudder).
What we need is a complete redesign of the way networked computing works. The goal of the Web should be to enable content providers to present applications and documents in a fashion that enables easy discovery (via searching, indexes, etc.) and use by users.
- DNS should never be exposed to the user. Apps should be referenced by human-readable names, and the system should provide a distributed index of these names, with descriptions, and functionality for choosing between them. For example, a user might search for someone’s name, and be presented with a list of apps that share that name, along with descriptive text to help the user choose between them. This gets rid of domain squatting, typo-squatting, and a whole host of other issues, most importantly the complete and utter disorganization of the DNS namespace.
- Grandma should never have to worry about URI’s, which should only be part of the very bottom layer of the system, usable only by real wizards, not every webmonkey with delusions of grandeur.
- Unfortunately for Microsoft-bashers, the “web browser” should disappear into the general resources provided by the operating system. (It’s ironic that while the MS browser fracas was going on, GNOME and KDE were quietly integrating their browsers into the system.)
- Apps are real programs, whether traditional apps or Flash- or HyperCard-like (running in a sand-box, of course), communicating via RPC (XML-RPC is fine) or some other protocol with stateful instances on servers. They are free to present their display using whatever technology they wish, but the responsibility is the app’s, not some browser whose functionality is completely out of the control of the content author.
I’m thinking that it should be pretty easy to implement this system alongside the traditional web, and gradually replace the present horror show.
Update: From Bruce Tate’s Beyond Java:
The vision of Internet applications is not yet complete. Google is now experimenting with Ajax , which seeks to provide a better experience to users with generated JavaScript and XML that communicates with the server. Applications like Google Maps show that it’s possible to create richer applications with JavaScript and active communication between the client and server, but we desperately need a new user interface technology providing the advantages of easily deployed servlets and the richness of applets. JavaScript is broadly available, but it’s a haphazard, problem-prone scripting language that’s different on each different browser.
The distinction is that GNOME and KDE aren’t OSes. If you choose Linux, you can choose which, if either, to install. I just thought I’d bring that up.