Skip to content

braid-org/braid-spec

Repository files navigation

Braid: Adding Synchronization to HTTP

This is the working area for the Braid extensions to HTTP in the IETF HTTP Working Group. These extensions add Synchronization to HTTP. They are authored in three documents:

Braid adds to HTTP:

  1. Versioning of resource history
  2. Updates sent as patches
  3. Subscriptions to updates over time
  4. Merge-Types that specify OT or CRDT behavior

Versions identify time for distributed state. We extend existing HTTP methods (GET, HEAD, PUT, PATCH, POST, DELETE) with version semantics, so that they can read, write, and refer to multiple versions a resource as it changes over time.

A uniform approach for expressing changes to state over HTTP. Generalizes Range Requests to other HTTP methods. Defines the replacement of a range with a new value.

Merge Types specify how to consistently merge a set of simultaneous conflicting edits to a resource. If multiple computers implement the same Merge Type, they can guarantee eventual consistency after arbitrary multi-writer edits.

Linked JSON is an extension of JSON that adds a Link datatype, so that URIs can be distinguished from ordinary strings. This allows JSON documents to be nested inside other JSON documents.

Contributing

You are welcome to edit these documents. To get Github access, send your login to Michael. Discuss edits on the Braid mailing list. After editing, add your name to the authors list at the top and bottom of the document.

Discussion of the spec should occur on the IETF HTTPWG mailing list mailing list. Anyone can contribute; you don't have to join the HTTP Working Group, because there is no "membership" — anyone who participates in the work is part of the HTTP Working Group. See also Contributing to the HTTP Working Group.

All material in this repository is considered Contributions to the (IETF) Standards Process, as defined in the intellectual property policies of IETF currently designated as BCP 78, BCP 79 and the IETF Trust Legal Provisions (TLP) Relating to IETF Documents. Any edit, commit, pull request, issue, comment or other change made to this repository constitutes Contributions to the IETF Standards Process (https://www.ietf.org/). You agree to comply with all applicable IETF policies and procedures, including, BCP 78, 79, the TLP, and the TLP rules regarding code components (e.g. being subject to a Simplified BSD License) in Contributions.

Releases

No releases published

Packages

No packages published