The state of web development


What happened to the days where the web was for reading articles, forums, and watching porn?
Sure we have social media now, which makes sense to be on the web, and some other things. But why would I want to draw up diagrams, edit spreadsheets, read email, and all sorts of other things in a browser? It is subpar, and you are exposing yourself to security vulnerabilities; all built on JavaScript (ECMAScript), which I believe was to be a temporary solution to a problem. But as with all software, the temporary solution always becomes permanent. Also known as the quick and dirty, and after a while everyone forgets about the quick and only the dirty remains.

Web-applications

The appeal of web-applications does make sense. You can serve your application to anyone, without the need to worry about software updates, the underlying operating system, or the device they are using. The last point actually not being so easy to solve, due to different screen sizes and orientation.
Note that I did not mention browsers. This is because not all browsers and their underlying rendering engines are created equally, which results in special sections of CSS for different browsers.

In my opinion, the biggest issue is security. Except for all the obvious issues like Cross Site Request Forgery and Cross Site Request Scripting, you are also exposed to vulnerabilities in the browser’s JavaScript engine and the browser itself.

Web Frameworks

This is where the problems start. There are currently more web UI frameworks than there are countries in the world, and a new one, or backwards incompatible version is released every week. It is that age old problem of people wanting to be anal about what they want. The “this framework is not exactly what I want, so I am going to build my own one” thing.

First there are the frameworks to interact with the components on the web page. For the non-technical people, those are the boxes you put information into, the buttons you click, and a bunch of other paraphernalia.
There are many to choose from, the question is which one. It “depends on your requirements” is the usual answer that will not get flagged on forums. If you are getting into web-development, good luck not losing your mind and just becoming a back-end developer using a real programming language. If you choose to do front-end development, I only have one question for you: Who hurt you?

Personally, I have tried a few different ones; Svelte, Flutter, and Angular, I have not tried React yet and I am not sure I want to.
Most of these frameworks are used to build Single Page Applications (SPAs), which basically lets all you code run in the browser, with a back-end serving minimal things, and causing your browser to use 1.5 GB of RAM for a single tab.

The latest trend seems to be moving back to Server-side Rendering (SSR). This used to be the norm, but it now has a label, and the people giving it this label seems to think they thought out the concept. It has been there. You are not that special. This is not the point being discussed, just worth mentioning.

The above just covers the components of the page. It is still going to look basic, and with basic I mean that if you show it to a anyone younger than a millennial, their brains will literally seize up.

To get the eye-candy on your page, you need a CSS framework. There are more CSS frameworks than the UI frameworks previously mentioned. You can pair them up and mix and match however you want. Just more of a mindfuck if you weren’t already confused and what to use.
Firstly, you will have to add a few million “div” tags to your HTML, then for different elements you will add many “classes” that it should use to format this specific element. These classes are so abstracted that only the people who created the framework really knows how to use it, and sometimes Chat-GPT can help a bit, but it also gets it wrong most of the time.

Why can’t there be a proper standard. Yes, there is the W3C with their standards. I am not referring to those ones, why can’t there be a standard for UI.

What about a better solution

Why hasn’t something been thought out? Or has it been, and I just don’t know about it? Sure, you get frameworks like Flutter, trying to standardise web, desktop and mobile applications. But this has a specific look and feel to it, if you use the built-in Material designs. Then there is the fact that everything is a class instance, passing instances to other instances in a such a way that a page with more than two buttons is so complex, that mere mortals like me find it very over-complicated.

What about a standard for the UI, and a standard for the components’ reactivity? Something that will use the colour scheme of the underlying “desktop” environment? Where the user’s choice of colours, font size, and the remainder of the look and feel aligns with what the user has chosen. There is nothing worse than having as high contract dark theme and then some app uses a white background with some difficult to read shade of grey, burning holes into your retinas as soon as you open the app.

It will solve many problems, especially in terms of accessibility. See this post.
There is REACT Native too, but I also think it is limited, and please correct me if I am wrong here.
.NET MAUI looks promising, but it does not support web from what I could find on it.

There are many smart people in the world. Every second Youtubers call themselves an expert, even if they are only 23, and many people are self-proclaimed geniuses.
The first mentioned are mostly ex or current FAANG employees, making them experts by association.
If everyone are so smart, then why is there not a standardised platform?

A standardised platform will be something in the line of:

  • A simple markup language for Layout, with basic customisation of buttons and other elements. Think back to the Win 32 API we used for desktop apps in the late 90s and early 2000s.
  • Standardised embedding points on components, where you can put in whatever logic you need there for updating other components and so on.
    What comes to mind is an application builder I used many years ago, called Clarion for Windows. It really made it easy and made it possible to focus more on the business logic.
  • A standard programming language used for the embed points, which will not happen before the world ends.
  • Browsers should support this standard by using the underlying Operating System’s UI API, if the author decides to publish to the web.
  • A compiler that can compile to all operating systems worth compiling to. All the UI APIs on all operating systems should expose this standardised interface and make it work with their underlying API.

One framework to rule them all kind of thing.

Final Thoughts

I am sure someone else has also thought of this previously and made a blog post somewhere.

Asking people to comply to a standard is like asking people to put aside their differences and not go to war. I guess in a world where people can’t even agree on borders, rights, and other socio-economic issues, this is probably too much to ask.

But if something like this can be done, imagine the number of problems that can be solved by apps built on a single standard. Imagine every developer involved in writing and maintaining UI and CSS frameworks being able to spend time on solving business and other problems instead of making just another fucking UI library.

Maybe it should be called “Just another fucking UI library”, or JAFUIL.