tus 1.0 für zuverlässige, fortsetzbare Uploads vorgestellt
Es ist eine Weile her, seit wir tus erwähnt haben, aber es gab einige spannende Entwicklungen, und wir möchten Ihrem Gedächtnis gern auf die Sprünge helfen.
Tja, das Hochladen ist kaputt
Bei Transloadit legen wir Wert darauf, einen zuverlässigen Upload-Dienst anzubieten. Manchmal kann es jedoch passieren, dass sich unsere Server danebenbenehmen, dass ein mobiler Nutzer die Verbindung wechselt oder dass Ihr Endnutzer instabiles WLAN hat.
Wir tun stets unser Möglichstes, um solche Fälle zu begrenzen, müssen uns aber auch der nüchternen Realität stellen, dass ein Upload zu oft von vorn wiederholt werden muss.
Das führt zu einer schlechten Nutzererfahrung, besonders wenn es mitten in einem 2 GB großen Upload über eine schlechte Verbindung passiert. Schlimmer noch: Je länger ein Upload dauert, desto länger ist er dieser schlechten Verbindung ausgesetzt.
Da Medien immer größer werden und Netzwerke fragil bleiben, brauchen wir einen besseren Umgang mit diesen Ausfällen und Aussetzern.
Fortsetzbare Uploads
Auch wenn jede ordentliche Netzwerkbibliothek Retries implementiert, lässt sich noch viel verbessern. Im Idealfall würden Retries dort ansetzen, wo der Nutzer aufgehört hat, und nur die verbleibenden Bytes hochladen, sobald die Verbindung wiederhergestellt ist.
Wenn das sozusagen unter der Haube geschieht, bemerkt der Nutzer womöglich gar nicht, dass seine Verbindung unterbrochen war, da sich die gesamte Upload-Dauer kaum verändert.
Wenn wir das zudem so umgestalten könnten, dass sich mehrere Dateiteile gleichzeitig senden lassen, könnte der Upload sogar schneller werden.
Damit all das funktioniert, brauchen wir jedoch zunächst fortsetzbare Uploads.
Es gibt viele Programme und diverse Implementierungen, die bereits fortsetzbare Uploads anbieten, doch sie sind nicht so gründlich oder interoperabel, wie wir es uns wünschen. Sie alle sprechen einen anderen Dialekt.
Stellen Sie sich vor, jeder Webbrowser hätte seinen eigenen, inkompatiblen HTTP-Dialekt. So sollte ein offenes Web unserer Meinung nach nicht funktionieren.
Tausend inkompatible Ein-Wochen-Projekte, die kaum funktionieren, obwohl wir doch nur ein einziges echtes Projekt brauchen, das richtig gemacht ist.
Und genau das ist tus.
tus
tus ist ein offenes Protokoll, das seit über einem Jahr in Entwicklung ist, mit hochkarätigen Beiträgen aus aller Welt und von verschiedenen Unternehmen wie Vimeo.
Hier ein Beispiel dafür, wie ein einfaches Hin und Her zwischen einem Client und einem Server aussehen würde, die den tus-1.0-Prerelease-Entwurf sprechen. Die Header-Namen haben sich vor dem finalen Release geändert; für neue Integrationen siehe die aktuelle Protokollspezifikation:
Client:
POST /files HTTP/1.1
Host: tus.example.org
Content-Length: 0
Entity-Length: 100
TUS-Resumable: 1.0.0
Metadata: filename d29ybGRfZG9taW5hdGlvbl9wbGFuLnBkZg==
Server:
HTTP/1.1 201 Created
Location: https://tus.example.org/files/24e533e02ec3bc40c387f1a0e460e216
TUS-Resumable: 1.0.0
Client:
PATCH /files/24e533e02ec3bc40c387f1a0e460e216 HTTP/1.1
Host: tus.example.org
Content-Type: application/offset+octet-stream
Content-Length: 30
Offset: 0
TUS-Resumable: 1.0.0
[first 30 bytes]
Server:
HTTP/1.1 204 No Content
TUS-Resumable: 1.0.0
tus ist nicht nur ein leichtgewichtiges und gut dokumentiertes Protokoll, sondern bietet auch zwei Beispielimplementierungen:
Darüber hinaus gibt es viele von der Community bereitgestellte Implementierungen in Sprachen wie iOS, Android, Ruby, Node.js, Python, PHP usw. Da wir tus auf reinem HTTP aufbauen, ist es sehr unkompliziert, Implementierungen in Ihrer Lieblingssprache zu erstellen. Wenn Sie das Protokoll vollständig implementieren und es unter der MIT-Lizenz lizenzieren, ziehen wir es durchaus in Betracht, Ihr Projekt zu übernehmen.
Kurz vor 1.0 - letzte Gelegenheit für Feedback
Die Neuigkeit heute: Wir sind wirklich
nah an der Veröffentlichung einer stabilen Version
1.0 des Protokolls und unserer Referenzimplementierungen. Aus diesem Grund
bitten wir nun um eine letzte Runde Feedback in unserem
Pull Request 1.0 auf GitHub.
Bitte seien Sie nicht schüchtern. Wir freuen uns über Ihre Kommentare und Empfehlungen, wie wir tus 1.0 noch besser machen können.
Abschließend ermutigen wir alle, die mit Uploads zu tun haben (ja, auch Mitbewerber), sich tus anzusehen und den Einsatz in Ihrem nächsten Release in Betracht zu ziehen. Auch wenn tus von Transloadit initiiert und finanziert wurde, gehört es vollständig der Community, und daran wird sich nie etwas ändern.
Hier bei Transloadit wollen wir tus noch in diesem Jahr in unseren Upload- und Encoding-Dienst integrieren.
Kommentare gern auf Hacker News
