bokeep-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bokeep-devel] the bo-keep way and the way to be obtrusive


From: Mark Jenkins
Subject: [Bokeep-devel] the bo-keep way and the way to be obtrusive
Date: Fri, 15 Apr 2011 07:17:02 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100915 Thunderbird/3.0.8

As a follow-up up to the discussion on bug 32814
https://savannah.nongnu.org/bugs/?32814
and as some much needed bo-keep core dump from me:

I think I could try to summarize my version of "the bokeep way" as:
 * Don't be obtrusive
   - stay out of the user's way
   - don't interrupt their workflow with error dialogs
   - if necessary display errors non-obtrusively in places like labels
- let the user do what they want, including browse away when things aren't perfect * Exception -- disabling a widget whoes use doesn't make sense at a given moment isn't obtrusive; it's effective communication * Save everything the user throws at you, even if it's garbage, and let them move on and fix it later

The separation of Bo-Keep's database from the underlying accounting program and the design of the Bo-Keep api enables this non-obtrusive, "user-trusting" philosophy without compromising the integrity of underlying books.

The most important responsibility for a plugin is to raise BoKeepTransactionNotMappableToFinancialTransaction when get_financial_transactions() is called if it's unhappy with the state of a Bo-Keep transaction and doesn't consider it worthy of the accounting backend. Backend plugins pay attention to this, they remember dirty bo-keep transactions that fail to successfully provide good offerings via get_financial_transactions(), and they keep trying to call get_financial_transactions() everytime there is a backend flush until things have been righted by the user.

I'm not into idiot proofing. As a /user/ I can't stand it, and as a developer who has to eat his own dog food, I'm not going to impose it on myself.

Good news is that the bo-keep api allows me to have my dogfood and others to choose to live in their bird cages as needed.

The way to keep everyone happy isn't to give plugins the power to decide if things should be obtrusive or not (e.g. barking orders at the shell such as "don't leave me, I'm not right!" ) . The BoKeepTransactionNotMappableToFinancialTransaction raised by get_financial_transactions() can be dealt with non-obtrusively as my current shell does, or obtrusively if a different shell (or shell configuration) so wishes.

Long term I could imagine many different bo-keep shells emerging and folks choosing what suites their taste. But, seeing how the shell is responsible for the GUI side of the plugin API we do need to be careful -- we want all shells to be able to run all plugins, so we have to keep them all to the same API.

Fragmentation can be dangerous.

For now, I think the following tasks (to be posted would suffice for our needs:

 * http://savannah.nongnu.org/task/index.php?11090
We develop the ultimate idiot proof shell where you don't have the power to configure bo-keep, configure plugins, change books, change transaction type, navigate between transactions, and explicitly create or delete them. This one will operate plugins in a stand-alone mode where you are only responsible for one transaction of a particular type at a time. When you reach and signal some kind of "done point", your relationship with the transaction is "done" and you're then working on another new transaction of the specified type.

I envision this being most useful for folks using the "end of night cashout" example configuration that will be developed for the multi-page-glade plugin and the eventual port of the ParIT Cash Register (http://parit.ca/products/parit-cash-register) to being a Bo-Keep plugin.

And I imagine some variations for this -- at the "done" point we can either close the window and have the new transaction start once the shell is re-launched (cashout case) or keep the same window and continue operating on the same transaction there.

Further -- an idiot-proof stand-alone shell can be configured to be obtrusive on close or at the "done" point if it makes sense (cashout case) -- perhaps by checking get_financial_transactions() and saying "we don't have something book worthy yet, are you sure you want to leave me?"



* http://savannah.nongnu.org/task/index.php?11091
You can manually look for bo-keep transactions in the current shell that have not had a successful call to get_financial_transactions() after a backend flush, but it would be good if there was a way to find this specifically. Broadly speaking, it would be nice if this was done as the beginings of a bo-keep shell search infrastructure.

* http://savannah.nongnu.org/task/index.php?11092
The current bo-keep shell could have an optional obtrusive mode (my kryptonite!) where it refuses to let you browse away from a transaction with get_financial_transactions() not being happy. We'd still allow closing the entire window and walking away (after an annoying prompt) of course.


Mark



reply via email to

[Prev in Thread] Current Thread [Next in Thread]