An Open Letter to Web Developers

Pale Moon releases and site news
User avatar
Pale Moon guru
Pale Moon guru
Posts: 32603
Joined: 2011-08-28, 17:27
Location: Tranås, SE

An Open Letter to Web Developers

Unread post by Moonchild » 2020-03-17, 11:11

Dear Web Developer(s),

While, as a software developer ourselves, we understand very well that new features are exciting to use and integrate into your work, we ask that you please consider not adopting Google WebComponents in your designs. This is especially important if you are a web developer creating frameworks for websites to use.
With Google WebComponents here we mean the use of CustomElements and Shadow DOM, especially when used in combination, and in dynamically created document structures (e.g. using module loading/unloading and/or slotted elements).

Why is this important?

For several reasons, but primarily because it completely goes against the traditional structure of the web being an open and accessible place that isn't inherently locked down to opaque structures or a single client. WebComponents used "in full" (i.e. dynamically) inherently creates complex web page structures that cannot be saved, archived or even displayed outside of the designated targeted browsers (primarily Google Chrome).
One could even say that this is setting the web up for becoming fully content-controlled.
The more additional "features" are tacked on to these components, the less likely it is for non-Google clients to be able to display sites in full or properly. It creates problems for people who are in limited environments, need special web clients for e.g. limited physical accessibility, or need to strictly protect their privacy. What of people on older hardware who don't have the computing power to basically run all these JavaScript applications fully off-loaded in their browser just to be able to render a page? Not to mention other software that needs to be able to parse web pages as a whole like alternative search engines (another thing one could consider unfair competition from Google).
It also creates problems for any browser that is not Google Chrome or a direct descendant of it (and that includes Mozilla's Firefox, despite being developed by a well-funded corporation), which is basically enforcing a full browser monoculture in the near future if web developers continue to adopt every latest new thing that comes out of the Google web labs in an "implementation-first" fashion, and continue to implement change for the sake of change. Once more, this is doubly-important for frameworks in use by thousands of websites that are at the heart of the Internet economy like on-line stores, bank sites, media sites, etc.

Full disclosure: While it is absolutely true that it is in our direct interest that web developers don't use something we are still working on implementing ourselves (considering our limited capacity as a smaller non-profit community, which is likely the same for any other true Open Source/Libre projects out there), the impact of what is outlined above is much more far-reaching than just our own projects; not only is it pushing for a proprietary web that is vendor-locked, it also, as stated, becomes something that will be impossible to archive, save or process.

"But I like the scoped styling I can do"

One of the main reasons people want to use shadow DOM these days is because it allows them to designate CSS styling that only applies to their little corner of the web page it is in (e.g. a widget). The thing is, we already had scoped styling in a much simpler (not script or DOM dependent) way that was actually asked for by web developers like yourself, that was actually standardized, and that got implemented by browsers, but then removed... basically because Chrome didn't implement it (despite resistance from designers[1]) to be replaced with the much more complex Shadow DOM alternative; it would be much more useful to ask for that to be returned to the spec. You can help by getting involved with the requested spec change on WhatWG issue 4508 [2] and/or Mozilla's implementation bug 1542645 [3].

The big question to framework and web developers

The biggest question you should all ask yourself when you are currently considering (or already using) Google WebComponents is: Do you really need it? Do you need the complexity, inherent slowness of megabytes of client-side scripting, or the specific features of Google WebComponents? What was wrong with your previous implementation that "couldn't be solved any other way"? In my opinion, the last actual scripting standards (ES6 and extensions) already allow anything that would be needed without completely re-architecturing what the web has been building on for decades. The few missing "tricks" that these components offer are not new, after all: (X)HTML has been fully extensible by design. Things like XBL have also existed for a long time doing the exact same things now touted as "new". You also shouldn't need JavaScript and DOM to style your pages, especially with the latest additions to CSS like flexible layouts.
We know that some developers will obviously not be amenable to this request to avoid WebComponents (e.g. I don't expect Angular, developed by Google, or YouTube, owned by Google, to do anything but push these things) but we ask that you please consider this request if you don't have a direct need to actually use them.

To conclude, I'm hoping that you, our web creators, will continue to keep the big picture in mind when it comes to the internet being primarily a public exchange of information, keeping it open and accessible to all with the software your users choose or need to use.

Thanks for listening,

[1] and onwards
"The best revenge is to not be like the person who wronged you." -- Marcus Aurelius
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb