I have a semi-constructive proposal. There has been a lot of whining and quarter-baked proposals floating about changes and improvements to the Satoshi client. It is hard to judge whether these proposals are made by incompetent programmers or just programmers that haven't thoroughly reviewed the code and its architecture.
To save the further anguish I propose that anyone who wants to be treated seriously should explain how his proposed improvement will deal with the following pseudo-code (from wallet.cpp & ui.cpp):
CWallet::SendMoney() {
grab_the_wallet_lock();
solve_inverted_knapsack_problem_to_select_the_best_coin_subset();
fee = compute_the_required_transaction_fee();
yesno = ::ThreadSafeAskFee(fee);
commit_transaction_and_release_lock(yesno);
}
Basically, show us that you know how to solve the inversion of control problem that is posed by this code. For extra credit, show us that your modification will deal properly with chain reorganization while waiting inside the UI for the user to accept the fee.
If you don't know how to solve those problems please send your proposal to /dev/null or nul:, as the case may be.
I think John Smith did a feat of software engineering comparable to doing a successful face transplant on a Frankenstein.
An interesting problem, perhaps we could crowdsource a solution.
Oh wait, nobody without a masters in software engineering is qualified to make suggestions on the architecture of the client.
http://www.tomsguide.com/us/video-game-foldit-research-aids-virus-folding,news-12584.htmlYou might be interested to note most of the gamers didn't have degrees in molecular biology.