That was my point actually. I was not accusing the developers of negligence I was saying that his platitudes are a form of "I could have done it better then them if I was them and could see the future". Well, he isn't them and they didn't see the future.
Then we are in violent agreement! Hooray!
If the network ditches 0.7 then there is no problem.
As long as the network is predominantly 0.7 this would result in you creating a single orphaned block rather then a fork. While certainly a waste, this could happen while using 0.7 to mine as well (for a different reason).
All true, but I suspect you underestimate the, uh, conservatism that makes "the network ditching 0.7" non-trivial. That may end up being the chosen way out, and Deepbit, Eligius, etc., will plan to upgrade at an appointed time. Or another solution may emerge. We've waited months for 0.8, and we can afford to wait a few more days or weeks, though the newly discovered 0.7 bug adds a reason to move.
In retrospect you are right.
The best solution would be to make a new release that does both A and B concurrently.
That is, make a version of 0.8.1 that:
A. Has a block rejection algorithm that will reject non 0.7 compatible blocks - must be programmed first as such a thing does not exist
No such thing exists, and
probably never will exist. BDB doesn't have a reliable formula for calculating how many locks a given transaction takes. Even BDB isn't consistent with itself.. When it rejects a block at runtime, it is capable of processing it a second time around when the memory state is different.
B. Is configured to not generate non 0.7 compatible blocks - functionality exists, it just needs to be configured.
Both of those can be set to expire after a certain date.
0.8 is already like this. By default, neither 0.7 or 0.8 will generate blocks that 0.7 will reject. Both 0.7 and 0.8 can be configured to make blocks that will break 0.7. Given the right luck, a block could be generated that broke some 0.7's and not others.
The fork happened because somebody used the -blockmaxsize setting to change its behavior and create valid, full sized blocks.
This would make v0.8.1 superior for mining than 0.7 because even though it rejects the same blocks 0.7 does, it has the advantage of not ever generating such blocks (which would be orphaned). Mining on 0.7 is thus more risky as there is a chance that you will generate a block that will be incompatible and orphaned.
There is no silver bullet. The only robust solution is to have people either:
1) update to 0.8+ (except for the large mining pools).
or
2) update to a (yet to be released) fixed 0.6 or 0.7 that increases the lock tables such that this will never happen again
or
3) manually raise the lock table limits, via DB_CONFIG.
Once the merchants and end users have had time to do their updates, then the mining pools can fix their end.
People who are mining as part of a pool should still update. What matters is what their pool is running, not what you're running.
0.8.1 can't fix this problem. The mining pool hashpower is holding back to buy people time to upgrade.