The word “fork” is somewhat confusing because there are different kinds of “forks” that can mean very different things.
A codebase fork is a copy of the code of a software implementation. A codebase fork typically makes tweaks to the original codebase. In the context of Bitcoin, codebase forks can be entirely compatible with the Bitcoin protocol, they can cause a blockchain fork or they can establish a whole new cryptocurrency.
A blockchain fork happens when a blockchain branches into two versions of transaction history. This can happen for a number of reasons, can be expected or unexpected and can, depending on the circumstances, lead to a number of outcomes, ranging from a single orphaned block to a whole new cryptocurrency.
A hard fork is a type of protocol upgrade that loosens or removes rules. If all users upgrade, a hard fork doesn’t cause a blockchain fork. Especially in the context of Bitcoin, some argue that unless all users upgrade, the “upgraded” protocol shouldn’t be called a hard fork at all, but a new cryptocurrency or “forkcoin.”
A soft fork is a type of protocol upgrade that tightens or adds rules. Soft-fork upgrades can cause blockchain forks, but enforcement by a majority of hash power guarantees eventual convergence on the same transaction history. A miner-activated soft fork (MASF) is triggered by hash power, while a user-activated soft fork (UASF) is activated by users.
While the different terms seem clear enough, the reality of Bitcoin is complex. The difference between hard and soft forks is not always obvious, and sometimes it’s not even clear what should be considered a protocol upgrade at all. There are a number of cases in which experts to this day disagree on how certain events should be categorized, and there have been politically motivated attempts to rewrite history to boot.