Forking is often the result of a deadlock in an open source project that is so insurmountable that all work stops. Typically this happens when development team members are unable to resolve personal conflicts or fail to reach a consensus about next steps. Forks may also occur when core members of an open source development team decide not to address use cases that other members of the development community feel are important.
Software forks can be controversial when they duplicate efforts, but most developers agree that the right to fork is open source software's greatest strength. A successful fork can save development time, inspire other uses for old code and create new business opportunities.
To be considered a fork, the newer version of the software must have its own name and its own developer community. When a new program remains compatible with the original program, it is referred to as a shallow fork.