Forking describes the process of creating a standalone copy of a central repository for each contributor. Each developer can work independently of the central repository. They can commit and test as they like, and when finished create a pull request into a branch in the central repository.
Following this approach, you can add maintainers to your repositories that can request reviews of pull requests and control whether a pull request is merged or rejected. Forked repositories have two remotes—an upstream remote pointing to the forked repository, and an origin remote pointing to the fork itself.