Hometus.io logo

Towards tus 2.0

Published on by Marius Kleidl

Seven years ago, in November 2015, we announced the release of tus 1.0, the first major and stable version of our uploading protocol. In the past months, we have been actively working on the next steps for tus and wanted to share early details about tus 2.0.

tus 2.0 will keep the same principles and approaches for how uploads are performed. This ensures that upgrading the uploading infrastructure from tus 1.0 to 2.0 is as seamless as possible for the end-users as well as for the developers. The most important changes will happen to the structure of the protocol:

The specification of tus 1.0 consists of the core uploading protocol and multiple optional extensions, such as the creation extension, termination extension, and checksum extension. All of these specifications have been hosted on our website tus.io and we have been pleased to see a wide variety of implementations, in part because it is based on open standards like HTTP.

Looking to the future, we’d like to further encourage native implementations of the uploading protocol in browsers and mobile platform SDKs, as well making resumable uploads accessible to more people. To that end, we would like tus 2.0, to be an open standard. In considering how to approach standardization, we believe that turning the core uploading protocol into a clear and concise standard within the IETF is most appropriate. We have published a first revision of an Internet-Draft and are engaging with the process of formal adoption into a suitable venue at the IETF.

What will change between tus 1.0 and 2.0?

tus 2.0 will keep the same uploading approach and most functionality. The most important changes will happen to the structure of the protocol:

The specification of tus 1.0 consists of the core uploading protocol and multiple optional extensions, such as the creation extension, termination extension, and checksum extension. Our major goal with tus 2.0 is to turn the core uploading protocol into an IETF Internet Standard. The tus protocol will still be open and freely accessible and usable, but with a more formal standard.

Features that currently exist as optional extensions in tus 1.0 might not be part of the standardized upload protocol. These features will also be included in tus 2.0 as optional extensions, that live outside the standardized upload protocol. This helps ensure that the standardized upload protocol is concise and focused, while also continuing to support additional use cases.

What is the current status of tus 2.0?

As of the time of writing, we are actively working on the core uploading protocol, which will seek adoption and standardization of in the IETF. You can see the current draft at tus.github.io/tus-v2 and join the discussion in our GitHub repository at github.com/tus/tus-v2. We have published a first revision of an Internet-Draft and are engaging with the process of formal adoption into a suitable venue at the IETF. Work on additional tus 2.0 extensions, that will cover the content from tus 1.0 that will not be included in the standardized upload protocol, has not been started yet.

What will happen to the client and server implementations?

For all of our official implementations, we are going to add support for tus 2.0 while also keeping support for tus 1.0. This ensures a seamless upgrade to tus 2.0 while also supporting existing users of tus 1.0.

So far, tusd and tusdotnet contain experimental support for tus 2.0. These might change however as the tus 2.0 specification matures.

Can I contribute to tus 2.0?

Yes, of course! Many details of tus 2.0 are not settled in stone yet. You can always check out the current state and join the discussion in our GitHub repository.

Thank you to all contributors

A grateful “Thank You” goes especially to Guoye Zhang, Jiten Mehta, Justin Ruggles, Lucas Pardue, and Stefan Matsson. All of them have dedicated their time and efforts into working on tus 2.0. Thank you all!