I've always wondered, how do devs developing on Bitcoin upgrade the system without affecting the live network? We typically see a site under maintenance when big companies revamp their site, but how does Bitcoin do it?
Most network changes are totally backward-compatible. When two Bitcoin nodes first contact each other, they tell each other the latest protocol version they support. They then use the oldest version of the two. In this way, even really old clients can connect to the network because all other nodes will switch to the old protocol version when talking to them.
Occasionally, it's necessary for all miners or (extremely rarely) all Bitcoin users to change some network rule at the same time to prevent the network from splitting in two. This is done by adding the change to the code, but only activating it at some particular time some weeks/months/years after the change is added. After the time has elapsed, most people will have upgraded to the new version of Bitcoin, and doing the change will cause minimal disruption. Instead of updating at a particular time, changes can sometimes also be activated when nodes detect via info inserted into the block chain that most other nodes have upgraded.