[Inquiry]GNUCash SoC - Implementing Undo

Derek Atkins warlord at MIT.EDU
Wed Mar 28 07:46:19 EDT 2007

Quoting Jeff Carneal <jeff-ml at carneal.com>:

> On Mar 28, 2007, at 6:05 AM, Derek Atkins wrote:
>> And a "File -> Import" would be an "easily identifiable atomic  operation".
>> You did "File -> Import -> xxx" and followed a series of steps and  then
>> clicked "Done" or "Finish" or "Import" and gnucash did some magic.
> Except that the "magic" is what must be undone, not what you clicked, 
>  and it is decidedly less atomic.

Not from most user's perspective.  Even I, who knows quite clearly
what's going on under the covers, want an "import" level atomic undo,
to undo the whole import at once.   Other applications do this, too.
For example, take the "undo" in emacs....  If you're typing along emacs
does a pretty good job of quantizing your inputs for its undo list.  But
if you import a large document into your current buffer, that import
is a single quantum, regardless of how many characters/lines it is.

>> I don't know how much more atomic you can get from a user's  perspective!
> The user's perspective is that a number of things happen on import.   
> Presumably, lots of transactions, new accounts created, new  
> commodities, etc.  Which one would you like for them to single out  
> for the purposes of atomizing it in their minds?

I agree that from a DEVELOPER'S perspective a number of things happen
on import.  From a user's perspective it was just an import operation.
Go ask your mom what she thinks about it; I can tell you how MINE would
answer.  The "import operation" is the appropriate quantum for importing.
The "transaction" is the appropriate quantum when editing a transaction.
Maybe even Splits are appropriate when editing a multi-split transaction.

The point I'm trying (and clearly failing) to make is that the quanta should
be tied to the actual user operation, be it creating a new account, editing
a Customer, modifying a transaction, clicking "get quotes", or running
a QIF Import.  The Undo quanta should change based on the operation.

> My point isn't that it absolutely shouldn't be done, but rather that  
> I doubt most users have the expectation of being able to undo a full  
> import.

I've been involved here for a long time; I think you're wrong, but I'm
willing to be convinced otherwise.

I think the undo quanta needs both size and locality to the user operations.
Knowing what happens under the covers muddies the waters, so look at it
from "what did the user do", not "what happened when user did it".  Maybe
that will frame it for you?


> Jeff


       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available

More information about the gnucash-devel mailing list