We're getting there, but it will take time. I really hope in a year or two there will be at least three or four different bitcoin implementations all producing blocks, validating transactions, etc. And in ten years there will be a dozen or more.
Gavin--First, thanks for your and the other devs' work. The rest of the world and I get the product of your labor for free. That's pretty cool.
Second--if you really want to have multiple, interoperable implementations, I think you have to get past the "source code is the protocol documentation" idea.
I understand the argument that additional implementations must mirror bitcoind behavior exactly, including bugs, or else risk block chain splits that could have a large financial impact. However, source-code-as-documentation does not work well as a guide to other implementers. It fails to distinguish between behavior that is essential and behavior that is contingent and arbitrary (just happened to be that way, could be otherwise.)
Developers writing additional implementations are unable to objectively verify that what they have done is proper, without some standard from which they can create unit and overall feature tests.
Yes, I'm familiar with what exists now on the wiki and elsewhere. It is useful as a learning tool, and others have written bitcoin-related functionality based on it. But documentation written by "reverse engineering" the thinking of developers based on source code suffers from the same problems.
Of course, it is possible to get into documentation paralysis, where so much time is spent nailing down details that actual development stalls. However, this can be solved in an incremental and iterative way rather than an all-at-once, serial fashion. I think merely having the sanction of the bitcoind dev team and a vision that someday the bitcoind code will follow the spec, not the other way around, would motivate a lot of people to participate.
This isn't a complaint, per se--you guys are doing the work and giving it away, and you are of course free to do whatever you wish. Consider this a polite request to reconsider your team's attitude toward formalizing the protocol using something beside the source code itself.
Regards,
A very happy bitcoind user and fellow full-time open source developer.