While there have been some significant advances in what web browsers can do, there is still something very wrong with the way the world wide web functions today.
Any developer comfortable using gui toolkits such as QT or wxWidgets, may have had a similar feeling when making a web application:
Why, oh why, are we still using TEXT markup language to define how a website looks, which has now evolved from being almost purely text only, with here and there an image, to full-fledged gui’s similar to desktop applications.
– warning –
Some not-very-well thought-out brainstorming follows below
– warning –
With the inflow of “new” web technologies to make web applications more interactive, we have reached a point where we are totally abusing the text markup languages out there (HTML,XHTML,CSS,etc…) to create GUI’s that really SHOULD be made using GUI toolkits.
Sure, you could use flash, or some fancy javascript library to make things easier, but there is problems with that.
When using javascript, in the end the browser is still trying to render everything using technology intended for text markup, not GUI’s.
When using flash, you are using a technology within a technology within a technology ( an applet within a *HTML page within a browser….) that also happens to be proprietary, managed by one corporate entity, instead of an open standards committee, etc,…
I don’t feel that a browser plugin is the way to fix this problem. It feels like embedding a desktop application inside a word document. It just doesn’t feel right.
What I’d like to see, is a reinvented concept of a ‘web page’, where the ‘page’ or application can either run inside or outside of the web browser (directly launched from the “start menu” or cli or whatever you like to use to launch applications). The code would not be executed on your machine, but instead you would be running some kind of a service that provides gui rendering capabilities to the application running on the ‘web server’. Similar to how an X-server has X-clients (gui applications) running on it. There could be applications that act as search engines, just like now we have web pages that act as search engines.
Developing for the web should feel like developing any other gui application, since in the end, these days, that’s what you’re making!
I think we should stop extending our text markup languages, and start anew with a gui standard/language/layer.
The current markup stuff could run inside the outer GUI layer, NOT the other way around like it is now.
I agree with you about the sorry state of affairs on the web.
I would however take a slightly different approach to what the root cause and solution of the problem is.
First let’s face facts, web applications are trying to provide the full functionality of desktop applicaitons.
Why does this seem so painful from a developer’s standpoint.
I think the reason is not the text-based nature, but the genuine awkwardness of trying to use a basically stateless context (with ugly workarounds like cookies, ajax, etc.), and having to connect so many disparate things (web server, client javascript, browser oddities), and the unpredictability of the target context (browser, screen resoltution, etc.).
While everyone is clamouring for new improved web services/languages, i think the real solution is to build an environment where “web applications” simply become desktop applications, with a standardized api for talking with remote data.
That is, i think developers should be able to code web apps/services in the same way they develop desktop applications, and every web service should be able to run locally on the deskop. It should be transparent to the application where it is running, and where it is storing data, and where it is rendering it’s user interface.
My main beef mainly is that everything is encapsulated within a text markup layer instead of the text markup layer being encapsulated within a gui layer.
It just feels completely backwards.
The fact that you have cookies, ajax, js, and all those oddities, just proves to me that layer upon layer has been added to force the TEXT markup layer do things it was never intended to do.
And I think, instead of adding layer upon layer, and extending the existing infrastructure, something new is needed that is updated to what we need today and not based upon what was used 10 years ago.
And part of how I came to the solution that I did, was the fact that back in the BBS days, to make door games and applications, you just used stdin and stdout or some library just like any other application at the time…
There was very little difference between making an application for bbs then there was for the desktop at the time.
I think we need something similar but for gui desktop applications.
im just surprised that you seem to be saying you want something other than text.. it almost sounds like you are advocating for RAD GUI stuff.. I think this may be more an issue of me misunderstanding what kind of thing you would like to see instead of what we have now..
but i do think you are onto something when you say:
“When using flash, you are using a technology within a technology within a technology ( an applet within a *HTML page within a browser….) ”
i really think this is part of what makes web programming a pain these days.. when you code a desktop app, you feel like you have some control over the environment and context of it’s use, and you feel like you are dealing relatively directly with user. but with web coding it feels like you are many levels removed, and worrying about all sorts of things that have nothing to do with making your application do what it was designed to do.. suddenly you’re worried about servers, bandwidth, hackers, browser sizes, browser versions, multiple language interactions (client js, html, php on server, web server config, etc.)
I’m not saying I’d rather have a gui over text, I’m just saying that if you ARE going to implement gui’s on web, the current system is beyond broken.
Yes, we need to separate applications and documents/discussions, although the two may be based on some similar technologies.
I believe the renewal should start by getting rid of the 35 years old SGML and all its descendants. But the goal is not to create yet another syntax, because people can’t agree on syntax, it is to create a language that can describe any syntax, whether it is binary or text, based on indentation or delimiters, etc. Once we have that we will need to adapt software like text editors and version control systems to work with syntactic trees instead of plain text.
It is a lot of work but would stop holy wars like tabs vs spaces, indented vs delimited, the 80 chars limit, naming conventions like camelCase vs underscored, etc.
Then we would be able to define two sets of semantic, one for documents and the other for GUIs; and two protocols, one for discussions (threads) and one for RPCs.
If you want to discuss such things you can find me on the XMPP MUC: utopians@muc.changaco.net
Those are some very good points, Changaco.
I’d love to pick your brain on what you think this language describing syntax should look like. Could existing parser generator software like byacc/yacc be used?
I’m not sure yet how the syntax-describing language would work. What it would look like is not important, since it can abstract itself, except for the reference syntax.
I don’t think byacc/bison can be of much help, it’s probably hard-to-read optimized code. It should be easier to start with a proof of concept in a higher-level language and let other people optimize and port it.