Here is my take:
1. Crash protection -- Mandatory. Systems crash. Any design that does not 
compensate for crashes is a loser. I would even say that it is unethical to 
leave crash protection out of any system without a big disclaimer up front. 
When a user types into a word processor, they entrust the system with 
something of value. You either do everything reasonable to protect the 
treasure, or you state up front  that you have not taken every reasonable 
precaution. If your reasons appear lame, well...
2. Autosave in place. Personally, I hate this, because, as Paul points out, I 
am one whose work style does not assume that the latest is always the best, 
but without crash protection, I put up with it.
3. Versioning. I have coded with emacs set to keep 3 versions for so long, I 
assume in the back of my head that I have the same feature on every 
editor/word processor I use, and like all programmers, checking in and out of 
a version control is a natural. 

And there you have my ideal: crash protection, keep the results of a few 
recent sessions around, and be able designate certain "copies" as significant 
enough to keep forever (or some approximation of forever). This is my ideal, 
probably a little too elaborate for everyone, but still, I think, essential 
for anyone who uses a word processor for producing documents that  are more 
than one-offs.

Now, how to implement. First, look at emacs and RCS as a prototype 
implementation. What are the downsides: Directories full of copies are 
confusing and waste disk. You have to remember to check in and out of RCS. 
The upsides: the implementation is simple, reliable and relatively easy to 
explain and understand. It is pretty easy to understand what is saved and 
when it is saved, so that you usually know right after you delete yesterday's 
perfect version that you just shot your foot off.

I am going to stop now. I would like to listen for a bit.

Wilddonkey 
 

Reply via email to