I was going to make a post similar in content to davec's, but he already made my points.
One of the reasons why I didn't get involved with bitcoin at the beginning was because it was a complex distributed system that had a code base but no real specification. It was genius and luck that bitcoin took off and still works. There should be a formal specification, but the problem will be keeping it in sync with the code base. This will be politically impossible so long as there is only a single code base. So for the long term good of bitcoin it is imperative that there be different code bases.
There will be forks. There are airline crashes. People still fly. In the aerospace safety world, the phrase is, "All progress comes as the result of crashes."