A result of changes in the software. This is typically done with blockchains although not exclusive to this realm.
Forks occur when developers decide to make changes in the code (rules) which the blockchain operates. This results in two paths created, the old one along with the newer iteration.
Often the old fork is discarded by the block producers if the fork was planned. At times, other developers will use the software for the foundation of their project and fork the chain, creating a new one for themselves.
This is often the solution to community battles, with one faction forking the chain and operating according to the rules they establish.