Presentamos el protocolo tus 1.0: subidas reanudables y fiables
Ha pasado un tiempo desde la última vez que mencionamos tus, pero ha habido avances interesantes y queremos refrescarte la memoria.
Así que sí, subir archivos está roto
En Transloadit nos importa ofrecer un servicio de subida fiable. Sin embargo, a veces puede ocurrir que nuestros servidores fallen, que un usuario móvil cambie de conexión o que tu usuario final tenga un WiFi inestable.
Siempre hacemos lo que podemos para limitar casos como estos, pero también debemos afrontar la cruda realidad de que, con demasiada frecuencia, hay que reintentar una subida desde el principio.
Esto genera una mala experiencia de usuario, sobre todo si ocurre justo en medio de una subida de 2 GB con una conexión deficiente. Y lo que es aún peor, cuanto más tarda una subida, más tiempo queda expuesta a esa conexión deficiente.
Con archivos multimedia cada vez más grandes y redes que siguen siendo frágiles, necesitamos una forma mejor de gestionar estas caídas y contratiempos.
Subidas reanudables
Aunque cualquier biblioteca de red decente implementa reintentos, todavía hay mucho por mejorar. En una situación ideal, los reintentos continuarían donde el usuario se quedó y subirían solo los bytes restantes en cuanto se restableciera la conexión.
Si esto ocurre de forma interna, por así decirlo, puede que el usuario ni siquiera note que tuvo una conexión interrumpida, ya que el tiempo total de subida apenas se vería afectado.
Además, si pudiéramos rediseñar esto de manera que nos permitiera enviar varias partes de un archivo simultáneamente, la subida incluso podría volverse más rápida.
Sin embargo, para que todo esto funcione, primero necesitamos subidas reanudables.
Existen muchos programas e implementaciones diversas que ya ofrecen subidas reanudables, pero no son tan completos ni interoperables como nos gustaría. Todos hablan un dialecto distinto.
Imagina que cada navegador web tuviera su propio dialecto HTTP incompatible. No creemos que así deba funcionar una web abierta.
Mil proyectos incompatibles de una semana que apenas funcionan, cuando todo lo que necesitamos es un proyecto de verdad, bien hecho.
Y eso es exactamente lo que es el protocolo tus.
El protocolo tus
El protocolo tus es abierto y lleva en desarrollo más de un año, con contribuciones de alto nivel de todo el mundo y de distintas empresas, como Vimeo.
Este es un ejemplo de cómo sería un intercambio sencillo entre un cliente y un servidor capaces de hablar el borrador del prelanzamiento de tus 1.0. Los nombres de las cabeceras cambiaron antes de la versión final; consulta la especificación actual del protocolo para nuevas integraciones:
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
Además de ser un protocolo ligero y bien documentado, el protocolo tus también ofrece dos implementaciones de ejemplo:
Además, hay muchas implementaciones aportadas por la comunidad en lenguajes como iOS, Android, Ruby, Node.js, Python, PHP, etc. Como estamos construyendo el protocolo tus sobre HTTP simple, resulta muy sencillo crear implementaciones en tu lenguaje favorito. Si implementas el protocolo por completo y lo licencias con MIT, sin duda consideraremos adoptar tu proyecto.
Nos acercamos a 1.0: última llamada para comentarios
La noticia de hoy es que estamos muy cerca de publicar una versión
1.0 estable del protocolo y de nuestras implementaciones de referencia.
Por esa razón, ahora convocamos una última ronda de comentarios en nuestra
pull request de 1.0 en GitHub.
Por favor, no seas tímido. Nos encantaría conocer tus comentarios y recomendaciones sobre cómo hacer que el protocolo tus 1.0 sea aún mejor.
Por último, animamos a todo el que trabaje con subidas (sí, también a la competencia) a echar un vistazo al protocolo tus y a considerar usarlo en tu próximo lanzamiento. Aunque el protocolo tus fue iniciado y financiado por Transloadit, pertenece por completo a la comunidad y eso nunca cambiará.
Aquí en Transloadit, este año buscaremos implementar el protocolo tus en nuestro servicio de subida y encoding.
Recibimos con gusto tus comentarios en Hacker News
