The current fee mechanism is confusing and difficult to implement.

The current fee system uses transaction size and the size of the block the transaction is due to appear in to calculate the fee. If you're writing a Bitcoin client such as a web wallet or android app this is not easy to implement.

Is there any reason we couldn't have a well documented fee mechanism along the following lines ?

* Fixed fee, or
* % of transaction amount, or
* % of transaction amount capped or floored.