Web browsers are no more

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 question wasn't in the title?). We don't know what web browsers are. Rather, the name has us tricked. It no longer represents what these programs are. Before we go into details, let's talk about what was in the past.

It all started with 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, 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 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 of 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 webpage 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 words webpage and website. Generally speaking we consider those to be groups 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.

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 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. But take as an example git. 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 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 my description of web browser I should probably reword it to: a program that downloads, caches and runs a web application for the user or prepares and displays a webpage. May support history.

In other words, the main purpose for browsers is to run a web application. 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, all 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 stated the obvious. What can we learn from that? I think that these shower-thoughts can direct us to 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 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 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, depending on how they are implemented.

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.

Now then, I feel like I slightly turned into some doom seer. I won't go too deep into that because it's quite depressing and I don't want that here.

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. Start by splitting browsers into smaller programs with their own limited responsibilities.