Hi All,
Over the past year especially, it’s become apparent to me that our existing web technology stack, involving HTTP, HTML, CSS and JavaScript, is greatly limiting what can be achieved on the free and open web. The reason is equally apparent, and that is because all of these technologies were invented in the early-to-mid 90’s, when the web was only and its potential unimagined. Standards bodies have done well trying to keep up with the increasing demands of the web, but I feel the more features which are added to these existing technologies, the more obvious it becomes that we need a complete technology overhaul. All the CSS3 and HTML5 features to me, look like hacks, and the reason they look like hacks is because they fall way outside the scope of the original technologies they’re based on.
HTTP, HTML and CSS are great for marking up documents. I’d much rather this combination of technologies than Word and an FTP server, but the web is not longer about documents, or should I say, hypertext. I’m of the opinion that one of two things need to happen, either a new technology stack needs to be developed for web applications, leaving the existing stack to solely take care of serving documents, or, what’s probably more practical, is that we need a more powerful, and less assuming stack of technologies. We don’t know what the web will be used for in 10 or 20 years time, but what we do know is that updating and renewing standards takes a very long time (at least relative to the pace of the web), so any new technology stack needs to be unassuming toward what the web is to be used for, and instead take a more generalised, toolbox type approach, which is easily extendible. In other words, we need a new technology stack for Communication (HTTP), Structure and Semantics (HTML), Style (CSS) and Behaviour (JavaScript).
There are so many inherit problems with the existing technologies, that it’s not even worth detailing any of the specific problems, but to mention just a few improvements that could be made.
- Better separation of concerns and better semantics. HTML and CSS overlap way too much, and are way too tightly bound to each other. A lot of even mildly complex designs require the use of HTML mark-up which is completely unrelated to the documents structure or semantics, and purely there to be leveraged by CSS. The style layer should be able to generate purely visual elements, which can be created and manipulated without affecting the mark-up of the actual document (the data/content).
- Common responsibilities should be moved from server-side, to client-side. Form re-population is a good example of something that SHOULD be done client side, albeit with the help of server-side code. The ability to compose a document.
- Better support for web applications. The assumption that web pages or web locations are comprised of web “documents” severely limits the capabilities of web applications. Web applications should have a new URL extension that allows web applications to change state without ever reloading the page. Currently, hackery needs to be used to achieved fulfill even the most basic needs of AJAX-driven web applications.
- Better communications. The fact that HTTP is stateless is great if serving documents, but becomes a limitation for web applications. The fact that only clients can send requests (one-way protocol) is another good example of the limitations of HTTP. No native support for sessions is also a problem; cookies are crap, let’s face.
I’ve written this post to hopefully gauge the opinions of other web evangelists, as I’m sure I’m not the only one with this opinion. It would also be good to hear from those who are adamant the current suite of technologies is sufficient for today’s and tomorrows demands.