Was just casually (well ok maybe it’s more compulsive than that) browsing HN and was pleasantly surprised to find tus on the front page. I’m one of the core contributors and happy to answer questions. Although it’s late here so it may take a few hours while I’m asleep :)
S3 Multi-Part Upload API can be used to chunk an object into smaller parts, which can succeed or fail independently.<p><a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html" rel="nofollow">https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview....</a>
If I read the spec correctly, PATCH method is actually more of APPEND, no?<p>It would seem logical and practical to allow PATCH to modify any part of a resource that is already present on the server and/or to extend it by appending. This would also make the whole thing useful beyond resuming of interrupted uploads, e.g. to allow for rsync-style updating of existing files.
The HTML5 FileAPI has been around for a few years now yet a lot of sites don't support resumable uploads. I know it adds a bunch of complexity server side as you have to restitch those pieces together but it makes for a good user experience.
Slight Offtopic - why after so many years Chrome & Firefox have so poor support for resuming interrupted file downloads? In case of Firefox I am almost sure it was better in past. I have to use 'wget -c' or <a href="https://www.freedownloadmanager.org/" rel="nofollow">https://www.freedownloadmanager.org/</a> for bigger filles.
See also: <a href="https://news.ycombinator.com/item?id=10591348" rel="nofollow">https://news.ycombinator.com/item?id=10591348</a>
There is a ruby implementation too: <a href="https://github.com/janko-m/tus-ruby-server" rel="nofollow">https://github.com/janko-m/tus-ruby-server</a>
Zawinski's Law needs some revision. Not only do WWW apps expand until users can chat asynchronously, but WWW protocols expand until they incorporate ZMODEM. (-:
Tus-Version: 1.0.0,0.2.2,0.2.1<p>seems like over design. The list will get very long over time.<p>Just use a single integer instead and have the header include min and max version supported. E.g.<p>Tus-Version: 1-4<p>meaning it supports version 1 thru 4. No reason to be able to say version 1 and 4 but not 2 and 3.
Is there a TL;DR? I see the whole spec is there but I don't have time to read it just this second.<p>Does it use anything fancy like fountain codes or does it just renegotiate chunks each time or something else?