When the web was created, it was meant to be a network of knowledge:
Documents that refer to each other via hyperlinks connect related pieces
of information in a way that is easy to access and discover. Combined
with a global internet this technology allowed unprecedented access to
information (and still does)! Since its inception the technology has
continously evolved and is now capable of supporting complex interactive
applications.
The web’s capabilities were drastically expanded over the
decades, but little has been done to improve the core feature of
document retrieval and -viewing.1 In fact, there are
serious issues that arose over time and that plague today’s web.
I want to mention what I think are the most important aspects in which
the modern web is problematic: It is privacy-hostile by default, it is
computationally inefficient, and it is being subverted by bad actors.
The days of the web being about static documents are long gone and
browsers have increasingly become a kitchen sink of technologies that
transform the web into something else completely: An application
platform. The web platform allows for ever more powerful and complex
applications to be distributed and executed. Web standards are
constantly evolving: CSS is getting entirely new layout concepts like
recently flexbox and grid, JavaScript is getting new language features
(some good, some not so good), even HTTP is being completely scrapped
and might eventually be succeeded by QUIC (even if it will be branded as
HTTP/3). And not to mention all the additions to browser APIs like
Workers, WebRTC, and a bazillion device APIs. This makes it so that web
developers enjoy job security and it provides them with a growing
toolbox to build rich applications.
This evolution has both good and bad consequences, but this text is not
about the merits of the web platform for applications. Instead, this is
about the web as a tool for retrieving and viewing documents and on that
front, not much has happened in the last 20 years that is actually
useful.
Quite the contrary: The modern web is hostile towards the most basic
usecases. It does get some things right, like ease of content
distribution, scope sand-boxing, and
layouting, but it miserably fails in other categories – e.g. performance.
Web browsing is increasingly demanding when it comes to client hardware and network speed.
With no tabs open Firefox already occupies 300MB for showing me a white
rectangle. With a couple of tabs open it quickly takes up over a
Gigabyte. An abundance of inefficient and/or unnecessary scripts on
sites, together with useless effects and animations slow down my whole
computer noticeably. I can almost incapacitate my laptop by going to a
website with only subtle animations. The spinning globe on GitHub’s
homepage e.g. is enough to reliably make my Macbook’s fans spin up
(which are otherwise never audible) and cause the whole system to lag.
Whatever computationally challenging work is being done there, not only
can I suspect that it is implemented inefficiently, but more
importantly: I didn’t ask for it! It contributes nothing to my web
experience!
Not only are slowdowns like this annoying and completely
unnecessary. The expectation to “keep up” with the demand for powerful
hardware by software that simply doesn’t need it, is short-sighted and
harmful.
The fact that you can not reasonably browse the web – where 90% of
the interesting content is text – without a fairly modern computer is
absurd. Sadly there are far too many sites that include an unreasonable
amount of images, scripts and animations that contribute nothing to the
page’s content.
Dogshit performance aside, the single most important anti-feature that
makes it unsafe to browse the web without precautions, is the ability
for websites to trigger network requests without the user’s approval.
Every image, stylesheet, font or script that is embeded in a site will
be automatically loaded by your browser, thereby leaking information –
potentially and commonly to third-parties. The ability to run arbitrary
client-side scripts allows sites to create unique system fingerprints
and then send those back over the network.
The web’s most powerful features, those that allow it to be a viable
application runtime and distribution platform, are what makes it
dangerous to use if you value your privacy. An increasing number of sites
refuse to work without scripting – for no good fucking reason!
But as soon as you enable scripting, you open yourself up to privacy
violations.
To mitigate these issues you have to take a concious effort to disable
most of the browser’s features thought ad-, cookie- and script-blocking.
The fact that you can not browse the web without the prying eyes of
tracking companies following you around, is
inacceptable and appaling!
You have to rely on adblockers and powerful tools like
uMatrix2 in order to get through the web safely. Browsing
the web without a client that has most of its innovative technological
features disabled allows third parties to track you across the web.
Unless you purposefully cripple the modern web’s capabilities, your
every move is recorded and aggregated by bad actors.
Without the technological expertise to prevent the browser from
executing tracking code or establishing unwanted network connections to
Big Brother, you can not use the web safely. (Unless you want to
restrict yourself to visiting trusted sites that don’t include any
tracking code).
Why do sites include tracking code though? The economic
incentives3 seem to cause site owners to either do their own
tracking or – more commonly and dangerously – opt in to the cancerous
tracking networks run by companies that make money by spying on people.
It does not reflect well on our civilization that over the course of just a
couple of years we managed to take what is maybe the most influential
technology since the printing press, and turn it into the dystopian
surveillance and control apparatus that it is today. This amazing
technology is now used to keep people tapped in to never-ending feeds of
“content” while spying on them for money. The Panopticon is real.
Suffice to say, this is fucked up.
Most people either don’t mind the way in which they are being surveilled
or they don’t fully understand it. Either way, as long as society does
not come around to stand up to these bad actors by establishing
effective government regulation, we need to come up with technological
solutions to subvert surveillance efforts.
But working against the behemoths that rule the modern web is not easy.
The web used to be open, the competition between browser vendors was
fierce and they were under real pressure to innovate. This lead to
terrible compatibility but opened up a space of opportunities for the
community to explore. Fortunately the technology has somewhat converged
and inconsistencies betweens browsers are less relevant today. But this
process was accompanied by a dangerous consolidation of power in the
hands of some very few.
The most important player when it comes to all things web is obviously
Google. Their business is on the web and so they understandbly push the
web platform. Its unfortunate that a bad actor such as Google has such
an immense power when it comes to determining the future of this
integral technology.
Modern web technologies – as cool as they are – exist first and foremost
to consolidate the surveillance machine that makes Google money. I’m not
against making money, but I am against surveillance. Very much so,
in fact.
The full description of how Google’s influence on the web is problematic
probably requires its own text. But the basic point is this: They are
the majority browser, the majority ad company, the majority email
provider, the majority media platform, the majority mobile OS vendor…
This kind of vertical integration fundamentally disenfranchises end
users. (Even if it was done by a company that is not as evil as Google
is).
Google abuses their position to push the web in a direction that suits
them and everybody else can take it or leave it. There is nobody who
fundamentally opposes them in this regard4: The other two
browsers, Firefox and Safari, are not standing up to Google. And why
would they? Web developers actively want a more powerful web platform to
make their lives easier and actually celebrate every new feature
addition to web technologies.
different strategy when it comes to the web. Obviously they don’t do
that for ideological reasons. They make money by
taking a cut on app store purchases so they want to disincentivize the
use of web apps. But their resistence seems futile as they can only
slow down the process of the web becoming whatever Google wants it to
be. Apple does not seem to have a vision of how to save the web.
At this point, nobody can just go ahead and write a new web browser from
scratch – that ship has sailed. If someone were to try and write a new
browser engine, and try to be mostly spec-compliant and actually just
work with any existing websites: That’s a multi-million dollar
investment in development resources. If even Microsoft decides that it
is no longer worth it for them, who else can do it?
This leaves Google with a more or less direct control over the future of
the web. We are entrusting a data brokering company with the future of this
precious piece of technology. Like that’s going to end well…
Why does any of this matter? Why is it relevant that the modern web is a
tool to spy on people in exchange for delivering mediocre applications?
There is simply no running away from the web. Applications increasingly
migrate to the web platform. This is actually not bad for security, but
comes with the problems that I have outlined above.
For some use-cases the transition to web might make some sense if their
problem domain is inherently online. For most applications it does not
provide the user any benefit. But as the web platform matured in its
ability to host applications, vendors began to understand how delivering
web applications can benefit them.
While the web became more useful as an application platform, it did not
provide any substantial improvement for its original use case of
distributing and displaying hypertext documents.
This basic use-case is still possible of course, and there are
well-behaved websites that do not include tracking code and do not
expect users to load styles and images from 10 different domains. And
those are the sites with the most interesting content anyway. But:
For accessing and viewing very simple, textual websites, it seems
unnecessary to use a resource-hungry application such as a modern web
browser,
There are, sadly, a lot of sites with some interesting content that
is made inaccessible by being packaged it in a needlessly complex
document-application chimera,
There is no alternative to the three main browser engines and it is
unlikely that one will emerge in the future,
Without adequate protection in the form of script-, ad-, cookie-, and
request-blockers you can not safely click any link without knowing whose
third-party tracking code will be automatically executed on your
system!
The different use-cases of documents vs. applications cause noticeable
friction: The technology is over-engineered ad absurdum for its original
use case, while still being held back and limited by it. A possible
solution to this might be a bifurcation into separate, more focused
platforms.
Sure, the line between applications and documents is incredibly blurry,
but maybe that is part of the problem. Instead of focusing on the
technical problems and how to solve them, we might instead take a step
back and properly evaluate what users ultimately want to achieve.
Most of what I want to do on the web is read static text documents. The
web lets me do this of course, but it is overkill. Loading up hundreds
of megabytes of engine code to load a text document is like using a
cargo plane to go grocery-shopping. On the modern web you only really
find out whether a site is well-behaved once you go there. And there is
no safety-barrier protecting you from wandering off to less
well-behaved sites.
A new web should do less. It has to consist of a semantic markup
language, a styling system, and… that’s basically it. It does not need
any scripting, because 99% of sites don’t use scripting for
anything useful anyway.
HTML and CSS as the backbone of the web aren’t even so bad, but they are
too complex. Most well-behaved websites can work perfectly fine with a
small subset of HTML and CSS.
Exploring what a good subset of HTML and CSS might look like is a matter
for another time.
Most of the web’s problems that I described have to do with bad
websites: Sites that track you, sites that waste computational
resources, sites that rely on all the latest features of the moving
target they are today’s web standards.
Following that logic, the problem isn’t so much with the web itself but
with bad sites. The web works okay if you only visit well-behaving
sites. So why argue for a new web?!
On a simpler web, misbehaving sites just would not be possible and to me
that seems desireable. If the web sucks because of bad websites, let’s
build a new web where bad websites are not even possible.5
What makes me somewhat optimistic that the vision of a better web can be
achieved is that I am evidently not the only one who feels about the
modern web the way I do. Other people have written similar texts to this
one – a lot of people seem to agree on the diagnosis of what is wrong
with the modern web.
And there are interesting projects that explore the space of how
alternative technologies can look like: The most prominent one being of
course Gemini. I am not yet sure
whether Gemini is what I want from a better, leaner web, because it is a
bit too limited for my taste, but we will see…
Gemini is really promising and I am excited to see how its ecosystem
will develop.
There might be a danger that the community of people who want a better
web will get fragmented over multiple technologies, but the degree to
which that happens is hard to predict.
The web is constantly getting better for application development with no
regard for other, traditional use-cases like reading texts. It is not
advisable to browse the web without using a modified browser that blocks
ads, third-party requests and scripts. This is not only a high bar for
most casual users, but it also nullifies some if not most of the
“improvements” to web technology.
We developers should try and figure out better ways to enable users to
achieve their goals. These goals do not include looking at ads, being
spied on, buying a new computer every few years to keep performance as
it was, or relying on technology that is largely controlled by a few bad
actors.
The technical hurdles to build something better are not that high.
It is more a matter of awareness and determination. We can build the
better web that we so desperately need – so let’s get to it.