A fork is a copy of a project in HASH that has been ‘split off’ from it at a particular point in time.

“Forking” something means to create a copy of it, usually with the intention of making minor modifications.

Forked projects contain metadata that allow their provenance to be tracked back to the source-code of the original project as it existed at the point of being forked.

Forking projects on HASH, and code in software development more generally, is common practice. It occurs both frequently:

  1. behind closed doors by companies developing software, and
  2. in public, in particular within open-source projects that accept contributions from the public.

Forking allows individual developers or teams to work on their own versions of a thing, safely in isolation from changes that others may be working on.

It can also be desirable to create a fork of something as a backup, in the event you are uncertain whether the original project or repository will remain accessible in future. Once a project has been forked, a copy of it (including any code or data within) exists in your namespace. However, forked projects may still be subject to the licensing terms of the original publisher.

Forked projects can be diffed against any version of another project to see how they have evolved over time. This is especially helpful in the merge process.

Read more about forking and merging in our docs.