This Resource is created by forming a graph of Changes and then using Refs to point to the latest heads of the change graph.

    Currently, the protocol's only ChangeResource is the @Document

    The Change blobs describe the operations to add/remove data from the resource. They depend on other Changes, and you can walk through all changes, applying operations, until you reach the current state of the Resource.

    Changes are the raw data with version history, and a Ref specifies the actual location.

    Unlike basic Resources, the ChagneResource allows easy branching, redirecting, and re-publishing.

    Branching

      If you want to create your own branch of an existing ChangeResource, you can simply create a Ref that points to the desired set of Changes.

    Deleting

      To delete the resource, create a new "tombstone" ref which marks the resource as deleted.

    Redirecting

      You can create a special Redirect Ref, so that you will be moved to another location when attempting to open this Resource.

      Republishing

        In cases where you want to redirect but keep showing the current URL, we allow a republish flag to be set on a redirect.

      Move

        To move a ChangeResource, you should create a new Ref at the new location.

        With the old location, you should probably set a redirect to the new location, so links won't be broken. But if you want to break links, you can delete the old Ref.

        Note: For users who have already downloaded the content and who want to refer to exact versions, links will not break.

    Generations

      Generations are numbers used to manage the lifecycle of ChangeResource Refs. This number must be incremented when deleting or undeleting the Resource. It can also be incremented if your ref shifts to an entirely unrelated change history.