For many of those who are forum regulars, you should know that I started a documentation effort with the old doku wiki here:http://www.bitcoin.org/wiki/doku.php?id=bitcoins_draft_spec_0_0_1
In addition, with the move of the "documentation" to bitcoin.it, there is now a new effort here:https://en.bitcoin.it/wiki/Protocol_specification
Furthermore, there are additional efforts to formally document the protocol at the following locations:
In addition, there is always the C++ code of the reference implementation of the Bitcoin client itself that "documents" the protocol by way of the source code itself.
Mind you, I'm not here telling anybody that they shouldn't try to start their own documentation effort for the protocol, but I think it would be to a great advantage to everybody involved if we all worked together rather than having this accomplished as a bunch of different and separate efforts. More significantly, I would like to get a forum or some place where we as a community can intelligently debate and discuss the internal workings of the software and specifically do either a "cleanup" of the protocol or to rationally make changes to the overall protocol that can be beneficial.
Some of this is planning ahead and trying to anticipate the needs of the community, but I would like to point out that this network protocol really is bitcoin
in its most raw and base level. From long experience I've seen how coding first and documenting later can be a bad thing once you are trying to put some stability to some software.
Yes, there is a need to do rapid prototyping when you aren't sure about how to proceed with a software development project, and sometimes you can get ahead of yourself where you keep coding, but with the thousands of dollars (and other kinds of currencies) now invested into Bitcoins and (we all hope) soon to be millions involved, it is about time we also discuss just how the "protocol development" ought to proceed. Some new structures were introduced into the Bitcoin software v 0.3.17 and while there has been some introduction to those structures, I think it would be wise to debate those structures in a public forum before they get implemented in software more completely. There are also other ideas which have been discussed elsewhere, including perhaps things related to the "Bitcoin-DNS" projects and other "extensions" to Bitcoin that may prove to be useful.
In other words, I am also calling for a more formal approach to the protocol development. This is not really a technical issue so much as a political issue. Enough of the protocol has now been documented that alternate implementations of the protocol are now possible based strictly off of this documentation, and Bitcoin is about to hit a new level of organization where people using this documentation will take the concept of cryptocurrency to many new directions. With web protocols, we have the "world wide web consortium", and of course with more general network protocols we have the IETF. How can or should the "governance" of the bitcoin protocol happen, and in what ways can changes to bitcoin help benefit the community?
More specifically, I'd like to end the confusion and make at least one documentation effort more or less "semi-official" at the moment by general community consensus, but at the same time we ought to be discussing where we can or should go from here with this documentation effort too. To me it seems to be the wrong way to get things accomplished by publishing code and expecting the documentation to catch up... at least if the goal is to stabilize the network. There are also some "flaws" in Bitcoin which also need to be intelligently discussed, including known weaknesses with the current specification.