My Imaginary Operating System.

What do you think of this post?
  • Awesome (25.0%)
  • Interesting (25.0%)
  • Useful (12.5%)
  • Boring (12.5%)
  • Sucks (25.0%)

I kind of feel bad for not posting anything for so long, and so I decided to make a post about some ideas and random thoughts about my imaginary operating system.

First the problems that I identify for a new operating system:

  • Fragmentation:
    It creates users and developers division that are forced to choose between where they will run their favorite applications.
    In the end people just want to run applications with the least amount of effort.
  • Applications: the number of applications on a operating system depends on the number of developers that are creating new applications, and this
    is normally related with the number of users, therefor its a cycle/loop, we need developers to get users, we need users to get developers.
  • Developing: Operating systems are complex, hardware support is not easy sometimes closed and non-existing and they take a long time to develop.
  • Cant remember anything else…

My imaginary operating system should have this:

  • It should run everywhere: even on top of other operating systems as an application, on the browser, on the cloud, doesn’t matter.
    This should combat the fragmentation problem:

    • first we get users on the browser, where they can easily try the OS and switch to their host OS.
    • If users like the browser version they will get it as an application, that has more features (like file system access).
    • If users like the application version they will start trying the standalone OS.
  • It should build its own cloud: every instance of the operating system should be a node on the cloud, so if you are running on your android, desktop computer, tv, browser all resources are shared on the OS private cloud, such as CPU, files, … Same operating system everywhere.
  • Developing: to run everywhere the best option I think would be html5/js. The operating system should separate all services with a [REST] API, the client UI could be implemented as html5 or any other technology (but html5 would be better).
    The rest service should be stateless and use tokens. Client applications can be separated using different tokens and living on a complete isolated environment using frames.

Implementation Plan

  • First I would try to define a Operating System API that should be kind of a standard. The API should work locally and remotely, implementation doesn’t matter (this can be achieved by a rest service coupled with some client server library’s).
  • Its a good idea to separate Server (API) and Client (UI) as independent projects,
    this will allow server developers to concentrate efforts on doing a very stable server without concerning how data will be handled and displayed to the user,
    it will also give many options to client developers that would have the freedom to choose any technology and library’s that they like.
  • The server could be implemented as:
    • Headless Server: using nodejs with modules like express, fs …
    • Desktop Application: using nodewebkit that can use nodejs server and allow to call directly the API from the UI.
    • Mobile Application: similar to desktop app but implemented on cordova.
    • Standalone:The easy solution would be running linux booting to the “headless server” or “desktop application”. But what would be really
      great would be something like runtimejs

After a little of research I found the most promising, open-source, projects:

  • runtimejs,
    “Operating system kernel built on V8 JavaScript engine”. Its a very interesting project using v8 as intermediate layer between the hardware
    and the software, this level of abstraction makes it possible to code almost everything in javascript even drivers.

    I didn’t test it yet, but reading the page there is very interesting features and ideas: isolates, rpc’s, …

  • OS.js-v2,
    “OS.js is a JavaScript web desktop implementation for your browser with a fully-fledged window manager, Application APIs, GUI toolkits and filesystem abstraction.”.
    • What do you think of this post?
      • Awesome (25.0%)
      • Interesting (25.0%)
      • Useful (12.5%)
      • Boring (12.5%)
      • Sucks (25.0%)

One thought on “My Imaginary Operating System.

  1. Pingback: Astropay

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>