Web Standards are dead, long live Web Standards!

It took few rounds and some day to realize that I’ve definitively overreacted at the news that MDN would’ve been partially rewritten with React.

If you don’t want to read that entire thread, you can skip to the most relevant part, which is this thoughtful answer from David Flanagan.

Where do I come from

Not everyone remembers tools like Microsoft FrontPage or Macromedia DreamWeaver but I started Web development in that time.

If today one might giggle a bit at people calling themselves programmers for using just some Excel like spreadsheet daily, those tools were used mostly by people not fully understanding what they were doing, or what kind of final result their “playing with the tool” would’ve produced once published.

And while those tools had a chance to enforce good accessibility practices and minimal, yet semantic, layout, the result was often rather goofy, and based on the only goal to work consistently in some version of Internet Explorer.

Add to this mix the fact that the real dynamic Web, in a pre Ajax/AMF era, was possible only through server side programming languages, I was one of those fellas producing strictly valid, semantic, and accessible, XHTML through PHP and MySQL, so that even if I was that lazy, using FP or DW to create anything wasn’t even really an option.

Consider also XSLT and XPath over XML to create XHTML, and believe me when I say that you’re lucky if you’ve no idea what I’ve just written at the beginning of this very same sentence.

The rise of the standards

In an era where the only people deserving the “Real Web Developer” badge were those knowing by heart every tag name and best practice to deliver a fast and cross browser experience, abandoning proprietary languages such ActionScript to fully embrace JavaScript was not just common, but natural.

Most of the Web leaders you know in these days advocated for long time standards as the best way, if not the only one, to move the Web forward.

I’ve tried to be one of them for a very long time, even if my writing and communication skills suck compared to people like Rachel Andrew, Chris Heilmann, Peter-Paul Koch, Alex Russel, Lea Verou or many, many others.

Now, I don’t know if due to my poor communication skills I’ve actually helped to penalize a wider adoption of standards, but thanks gosh there were dozens around me doing a better job than mine, so that the reality check is that …

Web Standards evolved, and so did tools.

What I haven’t mentioned yet, is that it was super hard, if not impossible, even for experts in the field, to modify the resulting layout of FrontPage or DreamWeaver, but this is also the difference #1 of modern tooling, represented also by frameworks, where developers have the ability to fine-tune any layout they want: lightweight? accessible? semantic? you got it!

If we consider how improved are all the underlying primitives offered by standards these days, we can definitively see that tooling on top, to simplify some pattern, is the natural consequence of an evolved, and rich, ecosystem.

After all, beside all the polyfills I’ve written, aren’t all the micro libraries I’ve ever proposed just utilities, hence tools, to simplify daily tasks?

.. and are my tools any better?

If I think about hyper or lighterhtml, I see a facade to produce right away the expected layout, and behavior, but nothing really enforcing accessibility or improving, out of the box, the quality of such layout.

Moreover, while the style attribute has basically the same React’s “magic” functionality, the self closing tag short-cut is something that quite possibly will never land in HTML.

So, after all, beside being lighter, faster, and closer to the metal than most famous and used frameworks these days, are my tools really better?

I make a lot of assumptions out of experience

As example, I’ve claimed that React uses <div> for all the things and somehow promotes the usage of inline styles.

Beside being JSX something purposely different than HTML, so actually saying it’s not standard ’cause <el className="whatever" /> in HTML won’t produce the expected result, makes probably not much sense, React is pretty capable of producing accessible and semantic layouts, just like any other modern framework.

However, in my experience, most of the produced layout via React I’ve seen in the wild over these years is actually rich in non-semantic bad practices, and yet that doesn’t mean the tool is responsible for that:

Dan was right there, and the biggest mistake of mine is assuming that, because my followers are usually developers more passionated about standards, they would produce a better layout.

Now, I don’t have data to support such assumption, but all I know for sure is that nothing stops developers using my tools to write the following:

html`<img style=${{width: '100%'}} src=${source}>`

Once that happens, an image without a title, and without some alternative high dpi friendly source, but with a useless inline style, since nothing even need runtime computation there, is born!

But if my libraries goal is to simplify, like any other, our daily tasks, who the f*** am I for telling anyone they shouldn’t simplify, as they like, when my libraries don’t even bother enforcing best techniques, and give for granted their users would know better than React, or any other framework, users?

Just use the tools you like

I think it’s time for me to stop promoting standards, at least the way I’ve done so far, and instead do my own thing, since that brings me joy, while telling everyone else they don’t really need too many tools to develop for the Web, never actually brought me anything, if not just ruined, instead, some day.

I’m also tired of X community reaction, including endless bullying, insults, etcetera, as soon as someone says something different from what they like.

But I’m also tired of myself not realizing the majority of the developers don’t care about dropping intermediate layers, if these make their life any better.

I mean, I’ve tried for years to tell people the Web was actually fine, so I guess I’ve just failed at delivering such message, or nobody really cared.

Accordingly, use what works for you, just please remember that underneath your abstractions there are glorious standards that make such beloved abstractions possible, so that maybe, it’s still worth to waste some time learning those standards to produce the best results out of your daily job.

TL;DR enjoy Web Development in 2019 with all the tooling it provides 🎉