its worth noting that the fork wasn't actually because of a bug in Ethereum, but because of a bug in a smart contract (the DAO). Ethereum itself worked perfectly. Bugs do exist in Ethereum and Bitcoin all the time, but they can almost always be fixed without changing the underlying protocol, so the clients just need updated.
The fork happened because the community decided the smart contract in question was important enough to the survival of Ethereum that it'd be worth essentially backing out the contract (in a roundabout way)