Forking is to take the source code from an open-source software program and develop an entirely new program.
Forking is often the result of a deadlock in an open-source project that is so impossible that all work stops. Typically this happens when development team members cannot resolve personal conflicts or fail to reach a consensus about the next steps. Forks may also occur when core members of an open-source development team decide not to address use cases that other development community members 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 more recent version of the software must have its name and developer community. However, when a new program remains compatible with the original program, it is referred to as a shallow fork.
The name fork is derived from the POSIX standard for operating systems. In this context, a fork is a process that generates a copy of itself.