# The operating system has ”pushed it”: either talking about hybrid language-OS (the likes of Forth-based operating systems, Java-based OS-es) or various research ideas like exokernels.
A lot of features could probably be provided in userspace (like network connectivity), but right now we pretty much have drivers for them. # The operating system integrates (necessary/convenience) features. # The operating system has integrated a lot of other features (some of them *ahem* choosing to integrate a graphics subsystem so closely you just can’t get rid of it) The days when operating systems were bootloaders for applications are pretty much long gone, and there are two main ”ways” in which they’re gone.
This is a great, big, earthshaking quagmire for the Windows ecosystem a formidable challenge for the Mac and a boon for the free software stack (although it isn’t there yet, it’s at least a surmountable goal, as we’ve seen with OLPC).ĮDIT: Yes, this means that it is much more correct to call your system KDE/Linux or GNOME/Linux than GNU/Linux. It also means that applications need to be written to understand their execution environment, which comprises the libraries provided for communication (both with the user and with other applications on the system) and the privileges it is assigned. Given the fact that applications must be integrated from the perspective of functionality and isolated with regard to security, we arrive at the conclusion that the OS is increasingly relevant, rather than the other way around. In a world where no application is trusted, where applications ideally shouldn’t run as a user with login privileges, applications must use shared libraries provided by the operating system to communicate with each other.
We already have a mechanism that allows user code to execute on behalf of a given process: shared libraries. This exposes glue as the nasty hack it is. Since each process effectively runs as its own user with the minimum privileges, this provides excellent security, but it comes with the limitation that glue code expecting another application to be running as the same user will break. On this system, each application executes in its own protection domain, or sandbox. This is why I think KDE will be a very compelling environment for Windows, which has never had an application environment that provides so much integration. Although operating systems should allow applications to reinvent the wheel, they should also provide very high-level abstractions to allow applications to present themselves and communicate with each other in a coherent way. The situation is considerably worse on Windows in theory, but in practice even Firefox looks more at home on Windows than it does on Linux.
Each has their own idea of how to provide interface widgets, fonts, interprocess communication, and more. One of the many remaining problems is that users have three application environments on their desktop: KDE/GNOME, Mozilla, and OpenOffice. Let’s consider the state of the free software desktop, for example. It’s about software/software integration, and operating systems are what provide these communication services. It’s not about hardware/software integration, and operating systems are not bootloaders for applications.