Braid-HTTP: Synchronization for HTTP
draft-toomim-httpbis-braid-http-01

Document Type Active Internet-Draft (individual)
Last updated 2019-11-18
Replaces draft-toomim-braid
Stream (None)
Intended RFC status (None)
Formats plain text pdf htmlized bibtex
Stream Stream state (No stream defined)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date
Responsible AD (None)
Send notices to (None)
Internet-Draft                                                 M. Toomim
Expires: Mar 10, 2020                                  Invisible College
Intended status: Proposed Standard                             G. Little
                                                       Invisible College
                                                               R. Walker
                                                            Bard College
                                                              B. Bellomy
                                                       Invisible College
                                                            Nov 17, 2019

        \=/====\\  |//===\\=      /=\     =\==\|\=/== =|====\==
        ||/    |\\ ||\    |\\   /|| \|\       |//     //|    \\\
        |\\    |// |\\    |//  //|   \\\      \\\     /\/    |||
        \=|====|=  |/====/=\  /=\/====|=\     =\=     \\=    =/=
        //\    /\\ //|    |\\ |/|     |||     \\\     |||    |//
        |||    ||| |\\    |// |\/     \|/     /|\     |=\    |\\
        =\=\==/=/  ==|    |\= ||=     /== ===/=|=\=== |==\===//

                  Braid-HTTP: Synchronization for HTTP
                   draft-toomim-httpbis-braid-http-01

Abstract

   Braid is a set of extensions that generalize HTTP from a state
   transfer protocol into a state synchronization protocol.

   Braid adds to HTTP:

     1. Versioning to resources
     2. Subscriptions to GET requests
     3. Patches built on Range Requests
     4. Merge-Types that specify OT or CRDT behavior

   These extensions enable a web resource to synchronize automatically
   across multiple clients, servers and proxies, and guarantee
   consistency using a OT, CRDT, or other algorithm.




Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.  The list of current Internet-Drafts is at
   http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   https://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   https://www.ietf.org/shadow.html




Table of Contents

   1.  Introduction ..................................................4
   2.  Versioning for Resources ......................................5
   2.1.  Comparison with ETag ........................................5
   2.2.  PUT a new version ...........................................6
   2.3.  PUT a new version as a patch ................................6
   2.4.  GET a specific version ......................................8
   3.  Subscriptions for GET .........................................9
   3.1.  Creating a Subscription ....................................11
   3.2.  Sending multiple updates per GET ...........................11
   3.3.  Continuing a Subscription ..................................12
   3.4.  Ending a Subscription ......................................12
   3.5.  Errors .....................................................12
   4.  Design Goals..................................................13
   5.  Use Cases ....................................................13
   5.1.  Dynamic Resources ..........................................13
   5.2.  Dynamic Proxies and Caches .................................14
   5.3.  A Serverless Chat Example ..................................14
   6.  Related Work .................................................15
   6.1.  Web Frameworks .............................................15
   6.2.  Existing IETF Standards ....................................16
   7.  IANA Considerations ..........................................16
   7.1.  Header Field Registration ..................................16
   8.  Security Considerations ......................................16
   9.  Conventions ..................................................16
   10. Copyright Notice .............................................17
   11. References ...................................................17
   11.1. Normative References .......................................17
   11.2. Informative References .....................................18
   12. Acknowledgements .............................................19
   13. Authors' Addresses ...........................................20



1.  Introduction

   When a client GETs a resource over HTTP, the server sends the latest
   version, but does not send updates when the resource changes.  If a
   web programmer wants to synchronize with state as it changes, she
Show full document text