Thinking of the web as a platform


What is a platform

We will start with defining a software platform as a specific platform that allows deployment of software in a way that is in one way or another, unique to said platform.

Some that currently exist are Windows, Linux, MacOS, Android and iOS. As operating systems they can very easily be categorized as platforms under our previous definition. Other platforms exist that are not operating systems themselves, but still qualify as distinct and separate platforms, such as Arduino, Raspberry Pi, Oculus Rift or HTC Vive can also be considered platforms, they are attached to a specific device, but they are in their own right, platforms that allow unique deployment of software, gaming consoles can also be considered in this category.

Platform

Then there’s the web. The web in it’s origins was never designed to be a platform. It was conceived of as a way to share information regardless of the platform you were in. In it’s inception nobody could ever come to consider that the web browser could become a platform, and not only was that notion wrong, it is currently the most widely used platform in the world.

Because of its ever changing nature the web transformed from being a place to browse for academic data to allow online shopping, chat and video communications, social media and much more. Very successful for a platform that wasn’t created to become one.

One of the key differences between the web and the rest of the platforms is that all platforms have originally existed to be closely tied to the hardware or to a specific operating system or more.

Another interesting detail is that barring the web, all other platforms allow you to natively run at least 2 different programming languages. In fact, the growth of a platform almost always involves it being open to more programming languages being allowed natively, as has been the example with both android and iOS with the rise of tools like React Native, Flutter, Xamarin, Swift and Kotlin.

The rise to the top

The ascent of the web as a platform is unique. Originally there wasn’t such a concept of there being apps for the browser. We had instead server applications that interacted with the web through minor scripting.

The main thing that changed over time is that the amounts of scripting that such applications only seemed to grow and grow. From using javascript for basic essentials like changing the color of a button or two, more and more ideas of how to make dynamic something mostly static sprouted very quickly. Ultimately jQuery took the web by storm because it allowed what was sorely lacking in javascript standards at the time: Uniformity.

From jQuery to the SPA era

jQuery paved the way for the modern web because it opened people’s eyes to the fact that a web application wasn’t just a server app that was consumed by a client that used a unique markup language. The possibilities were always there, but until that time they were not exploited.

jQuery gave rise to AngularJS and lessons learned from it gave rise to both React and Angular 2 and onwards. In fact it hasn’t even been 10 years since React was released by facebook.

With these frameworks came the realization that having just a server app with a little bit of scripting wasn’t enough, but that there was a world ready to welcome rich UI experiences in the web. The release of ES6 only gave more power to SPA frameworks because it allowed them to have the uniformity that had beeng missing from vanilla javascript.

The rise of the rich web UI and Webassembly

Web Assembly

Now in 2020 we are seeing a rise in popularity in SPA frameworks that had never before been seen. All those that used to be skeptics on whether this was gonna catch on or not are now like the people that wished they had bought bitcoin when it was worth a thousand dollars despite the fact that they themselves wouldn’t have touched it because it was worth only as little as that.

Like I mentioned at the beginning, a platform shows maturity when the software that can be built on it becomes more and more diverse. With the release of Webassembly in 2017 the web is now finally being recognized in history by allowing it to have it’s own unique version of assembly and finally allowing the client to run any language that can compile to WASM. The web browser went from being this cool program that you could do yahoo searches in to being the most popular platform to date, and even now it seems it’s still on the rise.

Projects like Blazor WASM (React-like for C#), Yew (React-like for Rust), asm-dom (C++ component based UI library) or even Vugu (Golang UI library in the browser) all point to a massive burst in the standardizing of the front end web as a platform that is mature enough to accept as many programming languages as there are.

This is indeed a bright future for the modern web.