Is the modern operating system a tool of facilitation that should provide just the basic necessities of a system and no more, staying out of the way of the user? Or should the modern OS assist the user in their everyday tasks, sorting and displaying relevant information, providing a filter between the ever increasing amount of information and the task at hand.
Even the most sophisticated OS’s currently available are no more aware of the actions and intent of the user than an OS ten years ago. Better technology and programming have provided us with more elegant, graphical, and functional systems, more capable of handling and processing our data in the desired manner without crashing or corrupting our files, but for the most part this is taken care of by the individual pieces of software using system resources doled out by the system kernel. A computer running a modern OS may be able to simultaneously run hundreds if not thousands of threads, which the user has come to expect, but besides a table of currently running threads and system resource blocks, the OS is not really aware of what programs are running, and is incapable of easily facilitating the filtering of data. But why should it be? Because an OS that is aware of the current and past states of the system is better able to determine how to exchange, present, sort, and display data to the user depending upon what, where, when and how the user is using the computer.
Before you jump straight to the idea of an annoying talking paper-clip assistant on the operating system level, telling you which files you are trying to access and offering you alternative methods of formating your data, let’s look at how systems are already beginning to show a shift towards predictive computing, and explore some concepts that are not yet implemented, but would appear to be immediately beneficial.
The loading of program resources at the beginning of a user session or at the startup of a system is a move towards a predictive OS that tries to anticipate what programs and files the user will need during their work session. Most current Operating Systems have some method of preloading resources or programs, such as the Startup folder in Windows, and almost all of them fall short of being truly predictive. The startup folders tend to be controlled by individual programs instead of being controlled by the operating system, and what could be a very useful predictive tool becomes a means of jockeying for file associations or user time, as is evident in the constant reassignment and reclamation of media file types by a range of different media programs like Real Player, Windows Media Player, and Quicktime. While this is more prevalent on different Operating Systems it is an obstacle to be aware of for any system that attempts to implement predictive resource loading.
A more successful example of predictive computing that is becoming more common among applications and Operating Systems is the inclusion of Recently Used Files listings. In individual applications the list of most recently accessed files makes management of any multi file project easier, but on the Operating System level Recent File lists can be useful and extremely distracting at the same time. When confined to a single application it is usually quite obvious that you will be working on a file of a type associated with that program, so the Recently Used File listing inside the program is something of a no-brainer. But on the OS level, when the number of commonly used programs is in the double digits, the number of file types accessed is equally high, and the number of individual documents accessed can reach into the hundreds, simple lists of the most commonly accessed files, or the most recently accessed programs seem archaic and misguided.
So how can you improve the Recent Files and Recent Programs on an OS level to reflect the usefulness of the Recent File list in an application? One of the answers is quite simple, and opens the way to more predictive practices that could be incorporated into current or future Operating Systems to change the way we work and play on our computers. The easiest list to address is the Recent Files list. The first step to a more predictive listing is to apply filters to the types of files being listed at any given time depending upon the currently open or active programs. Filtering the content of the file listings in this manner is a great step towards improving the utility of the Recent File List. Additionally groups of files in different directories can be included and excluded from the file list depending upon the time of day, according to either preset filters defined by the user or behaviors learned by the OS itself.
Some of the same techniques can be applied to Recent Programs listings, but a few modifications are necessary. While it may make sense to filter the list of recent or commonly used programs by the current time of day, filtering the list according to the currently active programs must take a different form than it did for the Recent Files list. The ability to set a series of rules guiding the available programs on the Recent Programs list could be incorporated into an OS through the analysis of patterns of application use. For instance: The majority of the time that I open a document editor and an email program, I also end up opening one of three different Internet browsers. Once an OS has learned patterns of this sort (commonly known as Markov Chains) it has the ability to analyze the currently active applications and fill the Recent Programs list with programs that I would commonly use in association with what I am already doing, eliminating from the list programs that I never open in conjunction with what I am working on at the moment.
These additions to the Recent lists are theoretically simple enough to add onto existing Operating Systems without having to significantly alter any facet of the system. In fact most of the additions so far could be patched onto an OS through a constantly running background application. But the model of behavior prediction explored so far can be extended to include more than lists of common files and programs, and if incorporated at the OS level can influence user habits and efficiency throughout the system.
The aforementioned behavior prediction systems could be easily added to an OS that incorporated behavior analysis and modeling at the system level, keeping track of all user interaction with the system and individual programs, constantly recording statistics and actions to build a profile of typical user behavior patterns. The behavior patterns are not a set series of steps, rather a large set of behavior sets and small patterns that are constantly analyzed against the current user behavior. And to what end? By building a ‘memory’ of how the user interacts with the system it is possible to incorporate into the system a number of immediately relevant functions to improve how the user interacts with the computer, and how the computer reacts to the user.
Using predictive patterns it would be possible to implement an intelligent version of the system Startup folder; rather than open a number of random programs at the beginning of a session depending upon which programs have added themselves to the startup sequence, a predictive system could determine at any point during a user session that a certain program or system resource is probably necessary in the imminent future, and begin preloading the resource in response.
Predictive modeling of future user actions can also help prevent the user, or unauthorized users, from harming the system. By tracking user interactions with the system and comparing them with a known set of behavior patterns the system can attempt to determine when an unauthorized user is trying to use the computer, as this person’s use patterns will more often than not vary from the normal user or users. This is not a new concept in system security, but when implemented on the system level can provide a much better profile of user behavior, and can monitor computer use as part of the system kernel. In addition to preventing unauthorized use the predictive system could monitor when authorized users begin to venture beyond their normal behavior patterns, and provide sufficient system warnings to the user alerting them to potentially dangerous commands or actions.
Once a predictive system has begun to learn the typical behavior patterns of a user it can aid the user in highlighting or ignoring different programs and system messages depending upon prior observed patterns, and the current behaviors of the user. Take, for example, a user who watches DVDs on their desktop computer. While watching a DVD the user receives a not too critical message from a program running in the background, which pops up in front of the movie. The user, quite annoyed, quickly closes the notice and returns to the movie. The predictive system would record this reaction as part of the normal analysis of user behavior, and would begin to block non-critical messages from that background program while the user has DVD software open on the desktop. Many such links between programs and events can be thought of in just a few minutes, and many more would begin to emerge for various users as the predictive system analysis their typical behavior. Any system of this type would need to be flexible, constantly updating and altering it’s rules and settings as it builds and rebuilds the map of user behavior.
These ideas are only intended to further the exploration of what new and current Operating Systems could evolve into when we think about giving the system the chance to help the user. As we know from any existing OS, one method is not the answer for everyone. While some people would benefit from and enjoy the experience of a highly interactive and predictive system, others would be insulted by the slightest appearance of the system trying to analyze their behavior. As with any system, a predictive operating system needs variable levels of analysis and interaction. These ideas are not written in stone, and the actual mechanisms of implementation are purposefully not discussed, as that can often lead to abandonment of exploration in favor of technical detail. But in light of the number of OS’s under development, both commercially and independently, this is a prime time to discuss how future versions of any OS could become more aware of the user, and begin to aid the user as well as the application.
About the Author:
A long time programmer and computer user, Patrick Dwyer is a Graduate Student at the Interactive Telecommunications Program at New York University. Besides exploring the possibilities of future Operating Systems, Patrick works with system level electronics, robotics, and software design.