Bitcoin's software is open source, which means that the code is free and available for all to view and utilize. However, for those wishing to participate in the Bitcoin network as a miner, node operator, or wallet administrator, updating and maintaining current versions of the Bitcoin software code ranges from important to absolutely necessary.

As Bitcoin evolves, some changes need to be made to the protocol. These changes can range from adding new feature sets (such as the enabling of multi-sig) to changing a core metric of the protocol, such as increasing the maximum block size.

In open source software development, a fork generally refers to the event of a project spinning off of another project by copying the codebase and running it. For example, the Debian Linux distribution is a fork of the Linux source code, meaning that Debian forked native Linux code and ran a separate project. The cryptocurrency Litecoin is a fork of Bitcoin because the Litecoin developers copied Bitcoin's code, made some changes, and launched a separate project.

Changes made to the protocol can require either a soft fork or a hard fork of the Bitcoin software. Conducting a fork of the Bitcoin software differs from other open source projects because every user running a Bitcoin node needs to maintain compatibility with the network. If a miner is using a version of Bitcoin software that is not compatible with the version everyone else is using, then they would be mining the wrong Blockchain. However, miners can use different versions of the Bitcoin software and mine the same Blockchain if the different versions are compatible (compatibility is important here).

A soft fork is a fork where updated versions of the protocol are backwards compatible with previous versions. Older versions of the Bitcoin software will recognize new blocks. Conducting a soft fork of the Bitcoin software has less of a chaotic effect on the network as only a majority of node operators need to upgrade. When a soft fork change is made, all nodes (whether upgraded or not) will continue to recognize new blocks and maintain consensus on the Blockchain.

A hard fork change can be tricky. A hard fork is a change of the Bitcoin protocol that is not backwards compatible with older versions of the client. Any participants running a node in the Bitcoin network would absolutely need to upgrade their software in order to recognize new blocks.

The biggest risk in executing a hard fork is a situation where nodes running the new software are separated from the previous version, resulting in a fork of the Blockchain. If half of the nodes are running the latest version and mining blocks, and the other half are running the older version and mining a different set of blocks, then you would have two different chains resulting in a fork of the Blockchain (which is different from a fork of the software).

Due to Bitcoin's incentive structure, miners are incentivized to prevent a fork of the network from happening. Because the tokens mined have monetary value, miners have financial incentive to maintain the integrity of the network by mining on the main chain.

How consensus is both achieved and maintained is absolutely crucial in Bitcoin. Even when the Bitcoin developers come to consensus in making a change in the protocol, the change will only carry persistence if the miners choose to accept it. If the developers are unable to "sell" new changes to the miners, then the miners may choose not to upgrade their software and remain on a previous version.

A loose "checks and balances" exists between developers and miners where any change to Bitcoin ultimately needs to have consensus across the entire system.

In working on a young protocol valued at over $4 billion, the developers take a conservative and thoughtful approach in making any changes to the protocol. The process of considering, debating, and implementing a change to Bitcoin's code can take months, if not years. This process becomes more stringent when an upgrade to the protocol can induce a hard fork.

In his argument for increasing the block size, Gavin Andresen proposed that a hard fork was most likely necessary in order to change the block size from 1MB to 20MB. If a hard fork is highly likely to happen due to a change, the full software upgrade can be planned several years in advance so all clients have time to upgrade. The only real hard fork in Bitcoin's history was planned two years in advance, and there was no evidence of nodes failing to upgrade in time for the protocol change.

Bitcoin is strongly anti-fragile, meaning that a complete destabilization of the entire network is extremely difficult.