Web Browsers Are No More

Published on 2020-07-28 19:39:00+02:00, last updated on 2021-07-25 12:56:00+02:00

Browsers, we all know what those are, right? We use them every day and it wouldn't be an exaggeration to say that they are one of the most used pieces of software all over the world. They have tremendous impact on not only the industry, but also on regular life of normal people. We sure do know what they are, right?

By the power of Hinchliffe's Rule I say no (is it really if the question wasn't in the title?). We don't know what web browsers are. Rather, the name got us tricked. It no longer represents what those programs are. Before we go into details, let's talk about what was in the past.

It all started with the WorldWideWeb, followed by NCSA Mosaic, which in turn spawned Netscape Navigator. To wage a war against it, Internet Explorer has been created. In late '90 and early '00 all major players (with exception of Chrome) have made their appearances. By the time Chrome finally arrived, that's 2008, the term "web browser" was widely understood and had established its meaning. The way we understand browsers is from sometime of that period.

Mozilla tells us that a web browser takes you anywhere on the internet, letting you see text, images and video from anywhere in the world. That's vague as hell but Wikipedia isn't really better with: browser is a software program for accessing information on the World Wide Web. It then describes a simple use case: a user requests page from a website, browser retrieves the content from a web server and then displays the page on the user's device (quote slightly adjusted in size).

These descriptions should resonate with most of us when we think "web browser". At least to some degree.

If I were to describe it with my own words I would probably say something of the sort: program that downloads, prepares and displays content of a website to the user. May support stylesheets, history, cache and scripting engine for dynamic content.

It's still vague but it gives some more hints regarding the functionality. In all this, the key to the meaning is hidden inside the word website. Generally speaking, website provides webpages that are hypertext documents. Where hypertext usually means HTML. It's fair to simplify it into: website is a group of HTML documents with optional images or other files, all served via HTTP. Rarely we expect browser to support anything else than, in terms of formats: HTML, images, video, plain text or maybe pdf, and in terms of protocols: HTTP. Sometimes they implement stuff like FTP or maybe torrent, but that's not really their main purpose.

Browsers aren't really web browsers like: entire web browsers. They can just show you a selected part of the web and that's OK. And I think that's part of the reason it all went wrong. People didn't think it's OK but it was OK. And then, they wanted even more.

drawing of surprised birds

Thus, functionalities were migrated to browsers. The number of use cases steadily rose. To be honest, it's very hard to draw a line between things that should be in a web browser and things that should not. It's slightly clearer if there is a protocol that supports the same functionality like in case of e.g., e-mail reading and sending. Take git as an example. Is cgit a bad idea? I wouldn't call it "bad" straight away. I'm not sure if I would call it "bad" even after months of contemplating about it.

The second part of the reason for the downfall of the browsers is Javascript. Dynamic content was made extreme. It no longer was there to support the user and extend the content, but it started to become the main component of this new thing served over the web. Now, we know what this new thing is called: Web Application.

Coming back to the description of a web browser I should probably reword it to: a program that downloads, caches and runs web applications for the user or prepares and displays a webpage.

In other words, nowadays the main purpose for browsers is to run web applications. It doesn't sound very browser-ish now, does it?

Please, don't get me wrong. There's nothing ultimately evil about that. It's only natural that over the years the purpose and expectations have changed. I think what's important is acknowledging this change and being aware of the new meaning. I believe most people who work in web dev are aware of these changes, although I never heard or seen anyone explaining clearly where we stand now.

drawing of a fox

Firefox, Chrome, Edge and others, are platforms for seamlessly acquiring and running applications on user's computer. The applications are somehow mixed with webpages but are normal computer programs nonetheless.

In the end, I feel like I stated the obvious. Still, what can we learn from it? I think that these shower-thoughts can help us see our needs better. What we have is a platform that can seamlessly launch cross-platform programs in a sandboxed environment. Additionally, these programs and their views (sometimes with selected parameters) can be expressed as globally unique identifiers in form of the URLs.

The problem is that this can easily lead us to a very unhealthy situations. The overall dependency on the Internet connection for running local programs will only increase. This in turn, can make things as "Application as a Service" more and more prevalent. I don't necessarily think they are bad, but they may become bad for the user, depending on how they are implemented and sold.

Trends like Electron partially fight this. On the other hand, they create other problems including astoundingly enormous duplication. Each electron application usually has its own web engine. The good thing is that at least partially user owns the software. The bad thing, is that generally speaking it wasn't intentional. The fun thing is that these somehow sandboxed applications are now distributed through sandboxed platforms like snap. I wonder how fast will we get yet another layer of sandboxing there.

Anyway, don't be angry, be thankful. We know where we stand and what we have in hands. Let's face it, solutions like browser applications are extremely convenient. Let's create a way to handle them and integrate into currently existing environment in a healthy way or create something entirely new that will make us all hide in shame, because we didn't think of it earlier. Myself, I want to explore breaking down the monolithic browsers into smaller pieces.