Browser extensions = Kernel ModulesReading time: 4 mins
The browser extensions that we use today might be the future of operating system design
The browser has become such a ubiquitous component of our daily lives. We use it for just about everything but its intricate design and function has become inspiration for operating system design. One of the most interesting developments in a browser is that of the manner in which we install extensions. Everyone has their own favorite set of extensions that make browsing the web easier but it’s a very simple click-and-install process. A whole marketplace has opened up with extensions and they are becoming advanced enough to be self-contained applications. To the point that the browser itself is becoming a (somewhat) complete operating system with functional applications as extensions. Chrome OS in the early stages championed this line of thought. In one version, the entire OS was just the browser. That was it. You could use it to surf the web, other applications opened up as part of the browser such as Google Docs and more. The concept of desktop was fading away makes a lot of sense given that most tasks today can be performed simply in a web browser. In addition, we also spend anywhere around 70-80% of our time in a web browser as is.
The marketplace for apps on Chrome OS got me thinking about the applications for the operating system and the future of operating system design. The Linux kernel can dynamically load these modules which provide extra functionality and sometimes are used for debugging. These modules become a part of your operating system providing you with key functionality or features that were lacking for you. The process to make a module and then eventually load it on a kernel is slightly complicated but nothing crazy. Eventually, we can hope the process becomes even easier and in the near future, the idea of loading new functionality might become as easy as in the browser.
Currently, if you want to create a custom kernel with new features, you have to go through the configuration where you can add or remove features. The process is an awful lot like adding extensions and what a future version of the browser might be able to do. The boot version of a browser based OS has already been tested and proven by Chrome OS. One use case of this in the near future ca be imagined as: A user downloads something like Chrome OS which is actually a build system (or an installer) instead of a functional operating system. From there, the user can go select addons that they want in their build (and even get some paid addons if they want) which provide additional functionality - One example is that of ads, Adblocker addons are so common that almost everyone install them first. Imagine one day down the line, the adblocker becomes a part of the operating system. It isn’t really part of the OS in the traditional sense, but now the browser is essentially your OS so the adblocker is not much different from a kernel module. This will do for operating systems what Play Store or the App Store have done for mobile devices. And that’s what makes this whole idea so incredibly exciting, the build system them compiles the browser and adds all the requested addons to it building the custom OS that the user requested. And the core premise of it remains the same as Chrome OS: Take the shortest time possible to get the user on the browser where the user spends a majority of their time as is.
Finally, it is interesting to note that build systems like this already exist for full operating systems. SUSE Studio is one such example that allows you to custom create the full OS with applications installed, but I think that the core premise of Chrome OS is absolutely spot on: In the future, we really might not need the desktop anymore, and a browser will be all that we use. New innovations fundamentally change what it meant to do something, in the future, what would it mean to open a new tab? A new process spawns in the background where we can open a terminal in the new tab, and the tab after that has a word processing application. The tabs of the browser become applications that we use, and all of them benefiting from the same core functionality that the browser has installed through those addons. A very interesting framework to think about and with it doesn’t seem too far out there either, most of the components already exist in some shape or form.