After releasing our first draft a few weeks ago, we received an incredible amount of feedback and suggestions. Based on this feedback as well as discussing the problems with the IETF HTTPbis Working Group, we identified a few key issues with v0.1 of the protocol:

  • PUT requests are not appropriate for transferring partial resources
  • The Content-Range and Range headers are not meant for resuming an interrupted resource transfer.

After lots of careful thinking, we came up with a new approach that uses:

  • PATCH instead of PUT
  • A new Offset header used by HEAD responses and PATCH requests alike
  • A Final-Length header to provide the final file size to the server

We also split the protocol into a core protocol which takes care of resumability, and nothing else, as well as optional protocol extensions.

The result of this has just been published as v0.2 can be seen on the protocol page. Also included is a new FAQ section which will expanded over time.

We feel that the overall result is a drastic simplification of the problem down to its essence, and we encourage interested developers to implement prototypes.

Our next step is upgrading tusd, the jquery client and the ios client to the new protocol version. Once the protocol has reached a little more maturity, we are also thinking about providing an executable protocol verification tool for implementers.