(A) Vision of a New Web

See, I'm already two diversions deep now; this is one of the ideas that randomly happens to people during something I would like to call "inescapable break time" like taking a shower and going to the toilet. This idea came to me when I was drawing a graph for a blog post to better explain a way to write GUI softwares that I called "Model-Centric View Composition", and the reason why I'm writing a blog post for this Model-Centric View Composition idea is that it's an concept emerged from a unofficial project for a family of proprietary DSLs a few years ago, which I'm also writing a blog post to talk about.

The title of this blog post is "A Vision" instead of just "Vision", because it's only a very early idea with no development and careful inspection done on it. Maybe it's genius, maybe it's stupid, we'll see.

The graph

The graph is as follows:


Figure 1: The graph in question.

I'll explain MCVC as succinct as I can. MCVC is exactly what it's called - an MCVC app is a composition (or a combination of multiple compositions) of views with their actual content determined by models. The reason why it's called "model-centric" is that in this architecture views are conceptually not a standalone thing but a relatively autonomous part (or an avatar, to be more exact) of models. The concept of "composition" roughly corresponds (and is a generalization of) what people know as a single web page in a Multi-Page Application.

The idea of this "new web" thus goes as follows: we expose the endpoint for models and views to the public, thus enabling users:

  • Making their own views for models on the Internet;
  • Making their own scenarios using different existing models and views of one web site;
  • Making their own scenarios using different existing models and views, this time from different web sites;

All of which allows users to improve existing systems and tailor the information to the form which suits their needs the best; and since we made everything public, they can do this by themselves without asking. Even if the models are user-specific (e.g. one's account on social media), the retrieval of model endpoint can still be made very easy by generating access tokens automatically.

But what about the infrastructure?

I haven't really thought this through, which is why this blog post should really be titled "a part of a vision" instead of "a vision". One might be tempted to declare a brand new protocol separated from everyone else, like the people from the Project Gemini community did; while me in 2021 would have also believed so, nowadays I no longer think that this is the best idea; I'm starting to think that we should treat all the different protocols as media of transfers and start to believe that our ability of transferring data shouldn't be artificially restricted to only a handful kind of media if we are going to transfer the same kind of data at the end of the day.

It's a good thing that everyone is using URL; having to deal with different format of internet addresses would have absolutely sucked.

What language should this "new web" be programmed in?


I'm actually hesitant to write REBOL here; the reason I'm mentioning an obscure programming language that someone made nearly 3 decades ago is not that I truly wholeheartedly believe that this is the language that everyone should use for the new web but to incite a shock within the cognition of the person who's reading all this text, a shock that is big enough to inspire them to see the tools they've taken for granted for the longest time from a critical point-of-view and big enough to inspire them to inspect on all the pros and cons and try to come up with a better solution to their problems; and for this reason I've considered mentioning LISP here since it is, at the time of writing (early June 2024), still widely known and considered as this mysterious super-language; and exactly because it's widely known, some people could've dismissed the idea altogether upon seeing the four-letter word and I don't like that.

I expect ("expect", as in "when it actually happens I wouldn't be surprised") people to still want HTML for the new web, but I really hope people could move on from JavaScript and whatever we've built with JavaScript over the years. The idea of a simple, well-designed, homoiconic language that can be used both as a markup language and a scripting language (and can be used as such without too much hassle when switching between the two) should be re-introduced into consideration; REBOL (and by extension, Red), upon first inspection, is very close to the one I would like to see being used for this purpose.


Last update: 2024.6.5