Solar wrote:
The restarting feature sure is a nice one, and I would like to know if anyone has done design work in that direction that is a bit less... well, radical.
I've thought about doing that and all I thought about was sending all applications something similar to a signal, telling them they were about to be stored for a long time, so the user might want to do something with the connections, and then storing the entire image (in a somewhat smart way) to the disk. Upon bootup, you load all images for the processes and send them something like a SIGWAKEUP to make them connect again.
As a sidenote, using that signal also fixes programs that use features such as clock synchronisation, or at least, makes it possible for them to fix those problems. Simplest solution in the program is to register a handler for it, and to synch all clocks to a program-based master clock. Then the master clock can be offset by as much as the real computer has slept, so the virtual clock seems to keep running for them (things like duration measurements).
I thought this approach was complete enough for it to work all the way, without hesitations.
Also, if you already have this mechanism, you might as well be able to tell the computer that a certain task is not going to be restarted in some time (such as a school report >[) so that they can be fully stored to disk.
I've also thought about using a Job-like structure, which is like the start beam in windows, but with a number of them. You can drag (move processes) between them, system keeps them all in separate job bags, and when you are busy with one job you are not hindered by all the windows that are not part of your job. Seems to me this would allow you to work a lot faster on multiple things at once (such as doing a remote gentoo linux in a remote window with some HOWTO's in your browser as 1st task, fixing OS bugs for your own OS in the second and doing your long-lost homework in the third) without being disturbed by an excessively full set of things that is active.
Come to think of it, it's similar to kde's multiple windows. Just that it doesn't require you to memorize everything that's running, or keep a strict line between the jobs...