Apresentando o tus 1.0 para uploads retomáveis confiáveis
Faz um tempo que não falamos do tus, mas houve novidades bem legais e queremos refrescar sua memória.
Pois é, o upload está quebrado
Na Transloadit, nos preocupamos em oferecer um serviço de upload confiável. Às vezes, porém, pode acontecer de nossos servidores se comportarem mal, de um usuário de celular trocar de conexão ou de seu usuário final ter um Wi-Fi instável.
Sempre fazemos o possível para reduzir casos como esses, mas também temos que encarar a dura realidade de que, com frequência demais, um upload precisa ser reiniciado do zero.
Isso resulta em uma experiência ruim para o usuário, principalmente se acontecer bem no meio de um upload de 2 GB em uma conexão ruim. E o pior: quanto mais tempo um upload leva, mais tempo ele fica exposto a essa conexão ruim.
Com arquivos de mídia cada vez maiores e redes que continuam frágeis, precisamos de uma forma melhor de lidar com essas quedas e instabilidades.
Uploads retomáveis
Embora qualquer biblioteca de rede decente implemente novas tentativas, ainda há muito a melhorar. Em uma situação ideal, as novas tentativas continuariam de onde o usuário parou e enviariam apenas os bytes restantes assim que a conexão fosse restabelecida.
Se isso acontecer nos bastidores, por assim dizer, o usuário talvez nem perceba que a conexão foi interrompida, já que o tempo total do upload quase não seria afetado.
Além disso, se pudéssemos redesenhar isso de forma que nos permitisse enviar várias partes do arquivo simultaneamente, o upload poderia até ficar mais rápido.
No entanto, para que tudo isso funcione, primeiro precisamos de uploads retomáveis.
Existem muitos softwares e diversas implementações que já oferecem uploads retomáveis, mas eles não são tão completos ou interoperáveis quanto gostaríamos. Cada um fala um dialeto diferente.
Imagine se cada navegador tivesse seu próprio dialeto HTTP incompatível. Não achamos que é assim que uma web aberta deveria funcionar.
Mil projetos incompatíveis de uma semana que mal funcionam, quando tudo de que precisamos é um projeto de verdade, bem-feito.
E é exatamente isso que o tus é.
tus
O tus é um protocolo aberto que está em desenvolvimento há mais de um ano, com contribuições de alto nível do mundo todo e de diferentes empresas, como a Vimeo.
Veja um exemplo de como seria uma troca simples de mensagens entre um cliente e um servidor que falam o rascunho da versão prévia do tus 1.0. Os nomes dos cabeçalhos mudaram antes da versão final; consulte a especificação atual do protocolo para novas integrações:
Cliente:
POST /files HTTP/1.1
Host: tus.example.org
Content-Length: 0
Entity-Length: 100
TUS-Resumable: 1.0.0
Metadata: filename d29ybGRfZG9taW5hdGlvbl9wbGFuLnBkZg==
Servidor:
HTTP/1.1 201 Created
Location: https://tus.example.org/files/24e533e02ec3bc40c387f1a0e460e216
TUS-Resumable: 1.0.0
Cliente:
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]
Servidor:
HTTP/1.1 204 No Content
TUS-Resumable: 1.0.0
Além de ser um protocolo leve e bem documentado, o tus também oferece duas implementações de exemplo:
Além disso, há muitas implementações fornecidas pela comunidade em linguagens e plataformas como iOS, Android, Ruby, Node.js, Python, PHP etc. Como estamos construindo o tus sobre HTTP puro, é muito simples criar implementações na sua linguagem favorita. Se você implementar o protocolo por completo e licenciá-lo sob a licença MIT, certamente vamos considerar adotar o seu projeto.
Chegando ao 1.0: última chamada para feedback
A novidade de hoje é que estamos muito
perto de lançar uma versão estável 1.0
do protocolo e das nossas implementações de referência. Por isso, estamos abrindo uma última rodada
de feedback no nosso
pull request 1.0 no GitHub.
Não seja tímido. Adoraríamos ouvir seus comentários e recomendações sobre como deixar o tus 1.0 ainda melhor.
Por fim, incentivamos todos que lidam com uploads (sim, concorrentes também) a dar uma olhada no tus e considerar usá-lo no próximo lançamento. Embora o tus tenha sido criado e financiado pela Transloadit, ele pertence totalmente à comunidade, e isso nunca vai mudar.
Aqui na Transloadit, pretendemos implementar o tus no nosso serviço de upload e codificação ainda este ano.
Comentários são bem-vindos no Hacker News
