Bitcoin has no central authority to push updates. Changing consensus rules requires most users and miners to run compatible software.
Soft vs hard
A soft fork tightens rules: new blocks are still valid to old nodes. A hard fork loosens them: old nodes reject new blocks and, without universal upgrade, the chain splits. Bitcoin's deliberate rule upgrades since 2010 have been soft forks, including P2SH, BIP66 strict signatures, CLTV, CSV, SegWit and Taproot.
Why miners signal
With a soft fork, if only some miners enforce the rules, others could mine a block breaking them, and old nodes would follow it. That risks reorganizations. So activation tries to ensure most hash power enforces the new rules first.
BIP9: version bits
Each deployment gets a bit in the block header version, a start time and a timeout. Nodes count signals in each 2,016-block retarget period. The states are DEFINED → STARTED → LOCKED_IN → ACTIVE, or FAILED at timeout. On mainnet, the threshold was 95% (1,916 of 2,016 blocks). After LOCKED_IN, one more period passes before ACTIVE. CSV (2016) was the first BIP9 deployment.
The SegWit lesson
In 2017, SegWit signalling stalled at roughly a third of blocks for months. BIP148, a user-activated soft fork (UASF), proposed that nodes reject non-signalling blocks from 1 August 2017. BIP91 was adopted by miners, and SegWit locked in and activated in August 2017. The episode showed that under BIP9's 95% threshold, a small minority of hash power could stall an upgrade.
BIP8: lock-in on timeout
BIP8 uses block heights instead of times and adds a lockinontimeout parameter. If set to true, the fork locks in at the end even without miner support, and nodes reject non-signalling blocks in the final period. Whether to use LOT=true or false was a major debate before Taproot.
Speedy Trial
Taproot used Speedy Trial: a signalling window of about three months (May–August 2021) with a 90% threshold, and a minimum activation height. It locked in in June 2021 and activated in November 2021.
Today
Proposals such as covenants are debated without any agreed activation method. The bar is intentionally high, because a failed fork could split the network.