A Monolithic but… Modular Operating System Architecture

Yeah, I might be just re-inventing the wheel here, who knows? But I had this (original? I doubt it) idea a few months ago and I was meant to write about it for some time now. So, my idea is about creating a new operating system that is like none of the current ones. It would be so different, that porting applications from other “traditional” systems wouldn’t be possible. But the gains would be much more important of what we would lose by implementing a brand new new system.So, here is the idea: You got a fully multi threaded, multi-buzzworded OS with all the latest modern goodies in it, but no applications. Yes, the OS would not include any application with the traditional sense of the word. Instead, all it will support would be modules. The UI would be task-based and file-based at the same time. The way you access your work files is by a panel that includes all the mime types and depending which mime type you pick from the list, you can sort their resulted files found on your hard drive based on how much you are using them, recently modified, file size and more such criteria (sometimes, different criteria for files with different MIME types).

Let’s say that you want to load a PNG graphics file. You open the file and you got the graphics image in front of you. Now, you must decide what you want to do with this file.

Let’s say that you want to apply a filter, resize it and then save it. But there is no application like The Gimp, or Photoshop or PaintShopPro to do so. Instead, the OS provides the use of modules to carry out such actions. Each module is like a very small library/application, loaded by the system for use with specific MIME types (each module should include a header section where describes itself, its relationship with other modules and the system) and each of these modules only do a very-very specific job. So, you use one module to save as PNG, you will need another module to apply the “watermark” filter, and another one to be able resize the image. All these modules can be written by completely different authors, but because they are doing a very specific job, these can be easily and timely implemented by developers. So, even if you think “wow, no applications for this OS?”, the reality is that the most common needs will be satisfied in a very short period of time from a general release.

As you can see, with this system, there will never be Photoshop and PaintShopPro fighting for market share. There will be NO full applications whatsoever about any kind of usage (no sound apps, no CAD apps, no DTP full apps etc). Some pros and cons for this system on top of my head:

* Natural multi threaded code, pretty responsive implementation by design.
* The user will get a default OS installation with only the most needed features and not one more that he/she might not need.
* Adding new modules will be easy, downloading and installing via the web, and each module will hardly be more than 20-100 KB (depending on what is for), so download times are not an issue at all and almost instant even for modem users.
* The user will know exactly how to use his/her computer because the number of modules installed are decided by the user and they are probably there because he/she needs them in the first place. The operation of the computer is now simpler and fully customized.
* Price of operating a computer is now lower (e.g. no need to buy Photoshop for $500 and then only use 20% of its capabilities – you only have installed what you need each time). Renting software is now much easier and lots of free modules will be available anyway.
* Less bugs and security concerns overall, as debugging a smaller piece of code is way easier.
* Infinite functionality. The more modules you install, the more functionality you get. There are no functionality barriers.
* No more “leaning” on a particular piece of application or big corporations who might ask big amount of money for some of their full pledged applications that include features that you might never use.
* Modules are able to communicate with other modules and some modules can only be used if another third party module is installed. This way, even modules themselves can be extended, not just the root level of OS functionality.
* Such a modularity and with the help of (maybe an XML-based) description for each module can make an Artificial Intelligence system on top of the base OS way easier to be implemented.

* It will be a challenge to create an OS in such a way that it doesn’t deadlock with all these modules and at the same time is able to inter operate between them seamlessly.
* Designing the UI for such an OS is also a challenge, as having, let’s say, 300 modules particular to sound files, is a challenge of its own on how to sort them out logically so the user can easily find what he/she needs each time.
* Destroying big markets of applications, can never be good for the IT market. However, a new kind of market would emerge, where the user is more in control.
* This system is fundamentally different from everything around today in the small server/desktop OSes market, so that means that nothing will be able to get ported, as the whole philosophy is different. Developers might have trouble programming for this OS, at first.
* Too much work to have something like this up and running. Today, most new OSes just use some freely available tools and libraries to speed up their development instead of re-inventing the wheel (eg. Gnu tools). For this OS, a lot of re-invention and re-coding will have to be done.
* General consistency between modules might be an issue as they come from completely different developers. General inter operability between modules might be an issue too, at least until the system matures.

Microsoft with .NET and Oberon have some similar concepts, but none go to the extreme of implementing this architecture. (Update: readers now tell me that the Taligent/OpenDOC architecture had some similar concepts, but still, not quite the same.)

What do you think? Would something like it work? Try to think “out of the box” before trying to answer though.


  1. 2002-11-08 12:13 am