Well, as I have received no answer yet to the article on the interrupt handling model, I’ll leave it there for another week before starting work on implementation, just in case.
In meantime, I wanted to tell you about an interesting idea about file management which I’ve been toying with for some time.
In most GUIs, there are two mechanisms for deleting files. The first one is the trash, accessed via the contextual “Delete”/”Move to Trash” command or via the “Delete” key. Based on the real-world desktops, like many things in current GUIs, it implements a metaphorical trash which holds your deleted files so that you can reverse their deletion if it was a mistake, and must be emptied from time to time.
At the other extreme, we have a permanent deletion mechanism, akin to the UNIX “rm” command, and accessed via the Shift+Delete keyboard shortcut. This mechanism displays a confirmation dialog, and after that permanently removes the file from the hard drive.
Like real-world trashes, the computer trash system is boring. We can essentially separate two kind of extreme trash users, with few users inbetween: those who always forget about emptying it, resulting in the trash being filled with gigabytes of garbage unless another user of the computer does something, and those who empty it right after having deleted the file, effectively replicating the confirmation dialog of permanent deletion in a less convenient way. This has led many experienced computer users, like me, to avoid this burden altogether and disable or never use the trash mechanism, preferring permanent deletion instead.
Permanent deletion has however this big disadvantage that it is not very forgiving, like nothing should be in a properly designed user interface. For those of us backup enthusiasts who always have two copies of our mundane files and three for the very important ones, it does not matter much: if the file was not so important, we forget about it with a sigh, and if it was we go have a look at our backups in order to get it back. But although I plan to put as much emphasis on the importance of backup in this OS as is possible without making it annoying, I know that many people still won’t backup their data or will do it only infrequently because they have not experienced yet a big data loss and underestimate their importance. So it’s good to have some “damage control” mechanism like the trash around, to reduce the impact of failures.
So, what do we do ?
In my opinion, the big problem of the current trash system is that it is built around existing real-world trashes, which themselves are based on some constraints of the real world which do not exist anymore in computer software.
If we abstract ourselves from the constraints of this world, how should trashes work ? This way, in my opinion:
- You put a file in them to tell the computer that unless an unlikely event occurs, you won’t need it anymore.
- After some time (say, one month), you’ve forgotten about the file in the trash and it’s unlikely that you’ll ever need it again.
- To save space and make searches more efficient, the file should thus be permanently deleted at this point.
What are the key benefits of this approach ?
- Users don’t have to care about emptying the trash and can think about more cheerful things instead.
- Yet file deletions can still be undone, even after some time has elapsed.
- Unlike traditional emptying, this process does not delete files regardless of their age, and thus cannot remove very recent documents which could be needed again based on arbitrary criteria.
In my opinion, the transition path from the traditional trash should be as follows:
- Permanent deletion remains. If people are experienced enough to know about it, they are smart enough to find out about this innovation and reconsider their use of Shift+Del for everything.
- This process is enabled by default and based on “Suppr”, like the traditional trash mechanism. This way, people who never empty their trashes and don’t care about settings will migrate to the new mechanism effortlessly.
- The people who have to learn about this mechanism in order to take advantage of it are those used to the “Empty Trash” command.Thus, we should leave a similar command in the trash’s contextual menu. When clicked, it displays a polite and concise message telling the user about the new mechanism, and offering two options: cancelling the emptying of the trash or continuing to empty the trash. In the last case, the message will never be displayed again, as people who can’t give up on their old habits for something superior generally don’t like to be bothered.