As of 2014, I understand that wallet software interoperability has been a severely overlooked issue.
Today many end-users risk losing coins because they created a wallet with software A and weren't told that restoring it into software B
is not a trivial task. Different encryption, derivation algorithms, file format/layout altogether make room for frustration and skepticism against the whole Bitcoin ecosystem. It's also worth noting that what makes the restore process difficult is geek stuff most people never heard of.
Look at this answer:
http://bitcoin.stackexchange.com/questions/13687/which-bitcoin-wallets-let-you-export-to-a-universal-wallet-formatPretty self-explanatory, all vendors/developers assume their software "is an island". I don't mean to disrespect, but I think that professional software must
also support an universal (export) format other software will agree on. It's freaking absurd that B might be unable to read a wallet from A just because A saved the keypairs in a CSV fashion while B normally saves them one per line. Someone may be cra**ing his pants for this lack of consensus.
In the end it's quite clear that the most basic wallet (I'm not considering multisig in this example) only consists of:
- a number of keypairs
- a list of transactions
More metadata can also be included for convenience:
- creation time
- wallet name
- address labels
- transaction labels
The above information is enough to reconstruct the same wallet elsewhere. Of course the format would have a version header to ease migration, enable future improvements and detect unrecoverable compatibility issues. Encrypted wallets should also be described in an universal, transparent manner.
I'd honestly urge to set a starting point, not to mention deterministic wallets where obscure proprietary settings make things much, much worse.