In my very first article on RobOS I went over usage optimization briefly and one of the comments somewhat sparked this article. The comment was made by Kapil D. Pendse who said the following:
Perhaps RobOS could learn from usage patterns and customize and interactive(or rather, proactive) UI accordingly!
The idea is very interesting but I thought I would first lay down the ground work for usage optimization that a user can specify up front. My goal is to have the OS learn and train itself over time, but it has to crawl before it can walk.
There will be 3 main types of purposes for the computer: Primary, Secondary, and Optional. This means that at any given time, a user can specify up to 3 (or more) ways they primarily use their computer. Here's a basic run down of typical uses of the computer:
Productivity - This is mainly a work type environment. If this were Windows, this would be the user who uses Office heavily and relies on work related applications to function throughout the day. Optimizations will be made so that these programs will take priority over the rest of the system making sure that the user gets the most out of their day. I dare say that this will be the most widely used configuration.
Gaming - Here optimizations for the graphics card and games are emphasized. Games will have a higher priority in the system so that they run faster while background operations are kept to a very bare minimum. In fact in most cases, some or all services would be turned off for the most part
Web surfing - Web surfing requires very little load on the computer to begin with. One could do a bulk of web browsing using a pentium 166mhz machine though I wouldn't try dial-up in this configuration. Not much could be optimized, but the OS would make sure this takes priority over other processes.
Music Production - This would be my primary choice since I plan on producing music on my computer. Optimizations will be made for sound primarily as well as things like burning CDs or using music production tools like Pro Tools, Acid, FruityLoops, or any other high performance music editing software. Very little focus will be on background applications or processes, as much of the functionality of the computer will be harnessed when a person is at the console.
Movie Production - This is a lot like music production but will focus primarily on movie making software and things like burning DVDs. You can burn any media in any setting, but it will be more optimized based on what you primarily do with it. Typically no one burns albums onto DVD, though 4 gigs could hold roughly 40 albums in mp3 format.
Graphics Design - This is a tough one. Tools like Photoshop, Maya, and 3d Studio Max are beasts when it comes to the hurting they put on any system. They need tons of room and tons of ram to function correctly and “do their thing“. If you pick this, you'll probably not want to pick anything else as it'll make sure these types of applications and functions are optimized but due to the sheer size and demand these applications put on the OS, there will be very little room for anything else. I will most likely make it so that if you do choose this, it's the only thing you can select due to the requirements it needs.
Application Server - This is basically for the computer that is always on, but is barely touched. Background applications will take precidence over everything else though work can still be performed on the box. This will bring the server side of the OS into controlling more of how the computer functions and handles things. The client will still be the client, but the server will call the shots.
Network Administrator - The ultimate power user who runs multiple computers across a network. This person's main function is to handle the OS (though hopefully there won't be much to handle). The OS itself will be the most optimized part of the system and productivity will be a very close second in this scenario.
There will be a number of optional settings as tweaks, but typically you will choose between these 8 and hopefully a lot more types of usage of the computer. Based on the selections you pick, the computer will optimize itself so that it handles everything in the order of precidence you give it. There has to be a primary and secondary before optional choices, and choosing all types won't bring your system to a crawl but it won't be recommended. Most likely in that scenario no optimization will be done because if you can't decide how you primarily use your computer, you won't need to benefit from any optimizations at all.
The optimization done is primarily to facilitate UI changes and “groupings” of related tasks. If you were to pick music production for example, all of your music production applications would be brought to your finger tips. Everything you need would be right there so that you wouldn't have to hunt around. You could still access every other part of the system, it would just be slightly more difficult since your primarily used functions will be right in front of you.
There will be a most recently used programs list, a lot like the XP Start Menu has. This will keep track of your programs so that if you were to use say Acid more often, it would become the highest priority program on your list. That way on top of grouping things together, the more you use a particular item the easier it will be to use it all the time. There will also be ways to chain processes together a lot like ActiveWords or those other programs do. This will be taken a step further and I'll explain the whole Process Management Engine later.
The OS will do a little bit of training to see what you are primarily using your computer for. This is in the event that you pick something you didn't really need or if you wanted to flip-flop functions you could do so. Having a schedule might not be a bad idea either so that if you were to say work from 9-5, at 5:01 it could go to music production mode so that you can do more hobby related things. It's all about keeping your essentials right at your fingertips no matter what you perceive your essentials to be.
Also I want the AI to be able to know how you use your computer so that it can make suggestions as necessary. You can turn them off, but for the beginner they may want suggestions until they get more familiar with how they do things. For the person that doesn't know what they want to do with the computer, this can help them find their niche and do what they would enjoy doing most.
The goal is to always have the user in mind and to make sure that everything they need is right where they need it most. I switch roles constantly since I don't have a defined work schedule so I think if I can design a system that I can flip-flop around in, any typical user can benefit from the concepts. I want to make sure information is organized as clearly and neatly as possible so that the user can maximize their computing experience, not be weighed down by having to constantly remember good computing practices.
Note: Usage optimization isn't required to use the OS, it will just make it more user friendly and hopefully eliminate much of the clutter today's PCs are facing.