That's the problem here, actually, but not in the way you think. There are alternatives (Canvas, SVG, etc.) but they're not as good for the standard use case of coming up with something quick that fulfills the business requirement.
And then we need to recognize that that stack is a fucking abomination that should be burned with fire. It should so deeply embarrass us, that we wouldn't want to admit that we use it in polite company.
We need people who are willing to experiment with new ideas and give us something better than HTML/CSS/JS. And we need them to get funding.
The basic thing to remember is that HTML was never meant to handle UIs. It was a very basic document layout format, with some simple ways to provide the reader with addresses for references etc.
It was in effect Netscape that tried to turn it into an UI as a way to get into the office network market. This riled up Microsoft, and the rest is history.
>We need people who are willing to experiment with new ideas and give us something better than HTML/CSS/JS. And we need them to get funding.
It’s coming. In 5 years Javascript development will be a distant bad memory. Front end web will become much like native mobile development but with a richer ecosystem of IDE’s and languages based around WASM.
What should embarrass us so deeply and why? HTML and CSS are some of the most generative, enduring, and transformative technologies ever. I wouldn't fund anyone who doesn't recognize how great they are!
They're embarrassing once you realize what's been done in the past, with incredibly smaller 'stacks' in much simpler systems, producing more powerful capabilities.
HTML and CSS require that a large amount of information be pre-shared and implemented by different systems (i.e. all browsers need to implement ginormous standard with all subtleties). After all that, you don't even get much interactivity, you need Javascript.
A better design would be to share a tiny set of primitives that are designed to compose nicely and that can be used to build up much more powerful apps.
HTML & CSS were good for the early web, when it was a simple document layout platform. They're not ideal for building rich UIs and applications. Just because they've been extended to allow that doesn't mean they are the best tool for the job. Similarly, Excel is abused to do all sorts of things it's not intended for as well, when there are better options for databases, financial applications and data science.
There is a huge difference between Excel and HTML: the former is Turing-complete (in addition to containing Turing-complete scripting language(s)) and was like this for as long as I remember, while HTML is not. I guess CSS nowadays may be Turing-complete (?), but HTML is most decidedly not.
That difference means that it's orders of magnitude easier to "abuse" Excel to do some things it wasn't designed to do than to do the same with HTML. I seriously wonder if the reliance on HTML to this day is not a kind of "job security" thing for web devs (like myself, btw)...
I have been working with the web since 1997, but almost only on the server-side (back in the the simpler web 1.0 days) and (during the past decade) on the browser UX/network side.
I just recently started looking at actually creating some web content that uses the modern web stack. Holy moly. What a cluster f__k of insanely over/badly-engineered craziness.
Try Mithil.js/HyperScript for defining HTML and Tachyons for inline-ish CSS. I've been happy with that mix. Both emphasize simplicity and maintainability.
It is terrible though. It is worth stating the obvious fact once in a while.
This organic design of the web stack with layer upon layer upon layer upon layer can't go on for forever. At some point it will just become too painful and an alternative will emerge.
The web platform has its virtues though. I can still load a webpage made in 1996 and at least read the text if nothing else; we can't say the same of erstwhile competitors like Flash, Silverlight, Java applets...
> And in large part i fear we get this because the people in charge are hell bent on recreating printed media in electronic form.
I agree. I see the conflict between designers and users to be one of the primary reasons for the current state of the web.
The conflict is about who gets to control how the content looks. The web was intended for users to have that control. The browser is your "user agent", you get to decide what and how gets fetched and displayed. The designers, on the other hand, want to treat webpages as color magazines - they want to have full control over what's shown on your screen, as for them the form is just as important as the actual content. They would happily serve you the web page as a PDF, if they could get away with it.
Personally, I'm firmly in the "user gets to control" camp, but the market prefers the "designers get to control" camp. So here we are, with web browsers continuously removing the ability to control anything, and the HTML/CSS accruing more and more layout control tools.
The JS just fetches the text over the network and transforms it though. The browser still renders HTML markup in the end.
I agree with the rest of what you said but those are just design decisions. My point was that, regardless of the code headaches, the platform itself (HTML, CSS, JS) is an incredibly flexible and resilient system.
I do like Jade, but my HTML ETN is not Jade either. The little tiny details have big downstream implications for parsing and static tools. My language has a pure Tree Notation grammar.
The benefit of that is tools written for an HTML ETN also work for a C ETN or a Swift ETN, and vice versa. So as we get more ETNs and more ETN tools, the network effects will be quite large.
But what alternative do we have / had?