Saturday, August 14, 2010

Thoughts on OS

OS design has not changed much from what we read in the text books. This says a lot about progress in Operating Systems. Yes the OS has become much more complex, much more efficient and much more faster, but we have not changed it fundamentally for a long time now. The computing industry as a whole has had a fantastic run in the last two decades but somehow OS was missed.

Here is my vision for the next generation of Operating Systems.

  1. OS is free and can be open source.
  2. Applications can only be installed via Application Store (iPhone/iPad Model). Someone verifiable owns every application that runs on the OS.
  3. Application updates are owned and installed via Application Store. No need to write your own update installer and delay system startup.
  4. Non Application Store owned Applications run in Virtualized Environment. To make sure you can run your hello world.
  5. Applications are all free to install, with may be one month trial period and zero commitment. No need to ask for email address and how you found us to get a license key. OS ensure that your application is not used without user agreement to pay for the services.
  6. Applications are charged by usage. OS defines usage.  Applications define charges. The usage could be how much time the app was running or was being viewed or interacted with or amount of data saved or amount of memory used. 
  7. Applications can use user data, with users permission. Access is defined and controlled by OS. Don't store everything about user in your own format. Use what user has already defined. This could be font sizes or my picture or folder to save things or auto backup policy, etc
  8. Applications can add new system calls and interfaces. Other applications can use those "system calls and interfaces". These higher level "system calls" can be the basis for new Applications. This is the API model. First everyone was making websites and now everyone is exposing API's. What if the API was dynamically available in the OS itself and instead of people writing new websites using the API, used the same API to build native applications.
  9. The higher level system calls can be local as well as remote. Thus Applications would have the choice of implementing these system calls by sending over code to the OS or ask OS to send over the API arguments to the remote service.  
  10. Every one in the API stack is paid by usage. If someone writes a good cypto algorithm and tons of applications use it, he is paid, even though he never created an application in the current sense of software development. My dear dear open source developers would finally avoid putting GNU license in the code and can easily make some money. 
I guess the place I am coming from is that instead of making browser the OS, why not let OS be the browser. It is much better place to implement the functionality that browsers are being called upon to support.

The other problem worth fixing is the licensing. SaaS providers have done a good job but the problem is everyone needs to handle the scalability aspects of it. If OS could handle the subscriptions based pricing, SaaS companies can let the code run on the client machine itself. Downloaded software is the best scalable software architecture I have ever seen.

Yet another problem is the open source free software. I hate it. Well not exactly hate it but it is unfair. Developer should get credit for the software he writes and hence the whole concept of higher level system calls. Write whatever part of the software you are comfortable with and OS will ensure you get the money when someone decides to use it. The app store funda essentially ensures responsibility for your software. It is like a license to drive a vehicle..doesn't prevents accidents but everyone knows whom to blame. More than OS, what I am proposing is a business model for open software development. Don't worry about marketing, don't worry how you will get the money, don't worry how to patch and upgrade the software, don't even worry about scalability -- just write quality software. Reuse what you can from existing "high level system calls" without signing deals and just focus on getting things done for your customer. Amen.

No comments:

Post a Comment