<div class="gmail_quote">
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div class="im"><br> </div>Please also think about the use-cases where you *don't* want to save<br>your changes.</blockquote>
<div> </div>
<div>Changes could always be saved.  On exit, ask if the person wants to *keep* the changes.  They could be discarded if necessary.</div>
<div> </div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>At work some documents are only used like a form: they get opened,<br>filled out and printed. After that the document is closed again without<br>
saving the changes (so it's still empty at the next opening). I doubt<br>those users would be happy that they need now to click several times<br>"undo" to restore the document.<br></blockquote>
<div> </div>
<div>This should be treated as a separate *type* of document.  If we're changing the way we think about it, we shouldn't do it halfway.  Perhaps a "form interface" for filling out a form would be appropriate, but probably different approaches for different apps anyways.</div>

<div> </div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>And think also at the space-requirements for those "undo"s. Hard-disk<br>space might be cheap today, but this data still needs to be loaded from<br>
disk (or even a network storage). And some operations might need much<br>space for "undo"s, like in image-, video- or audio-editing.<br></blockquote>
<div>Saves should still be in a versioning kind of system.  Most modern advanced programs can keep "undo's" in their own file format internally, so the only thing file-wise that needs to be done is keep different "versions."  A version would be created at certain events.  If the file is left open all the time (I do this when working on large spreadsheet projects for several days) a new version is saved for each day.  Otherwise, a new version is "committed" after closing the file.  This is basically just auto-save on steroids, invisible to the user.</div>

<div> </div>
<div>Programming wise, applications would keep telling the OS to add changes to "file version" constantly.  The OS would decide when to actually write to disk.  At some point, the application would request a "commit," which would force a write to disk and logically separate as a new "version."  This commit would be either at the events determined (once a day, after certain types of changes) or whent he application closes.  If the app were to crash, the OS would still have the uncommited changes, which would also have been periodically written to the disk.</div>
</div>