Agustin´s Blog

Nature, Adventure, Photos, Trekking, Travels....

56 notes &

equipo:

StreamBuilder: el entorno de trabajo de código abierto con el que desarrollamos el Escritorio

Nos emociona muchísimo poder anunciar que hemos puesto a disposición de toda la comunidad de desarrollo el entorno de trabajo personalizado que creamos para que el Escritorio de Tumblr sea una realidad. Se llama StreamBuilder, llevamos años usándolo y, gracias al código abierto, ahora tú también puedes.

Si no sabes qué es el código abierto, no temas: te lo explicamos. Se trata de un modelo de desarrollo de herramientas informáticas descentralizado que fomenta la cooperación en un entorno colaborativo y abierto, como su propio nombre indica. Por explicarlo de una forma más simple, hablamos de cualquier programa cuyo código fuente esté disponible para que otras personas o desarrolladores lo usen o modifiquen a su antojo.

Entonces… ¿en qué consiste StreamBuilder? Es muy sencillo: cada vez que ves el contenido recomendado para ti y que sigues, los resultados de búsqueda, publicaciones de un blog o que incluyan una misma etiqueta o blogs recomendados, estás usando este entorno sin saberlo. Si quieres echar un vistazo al código, puedes hacerlo en GitHub.

StreamBuilder es un sistema complejo. La arquitectura principal gira en torno a lo que llamamos «flujos» de contenido, ya sean las publicaciones de un blog, una lista con todos los que sigues, contenido que incluye una misma etiqueta o resultados para una búsqueda. Cada uno de ellos corresponde a un tipo de flujo distinto: a veces se pueden combinar, filtrar en función de criterios determinados u ordenar en función de su relevancia o de las probabilidades de que generen interacciones, entre otros ejemplos.

Desde la semana pasada, puedes ver mezcladas publicaciones de los blogs que sigues con otras de las etiquetas que sigues y blogs recomendados en el Escritorio de Tumblr. Cada uno de estos elementos corresponde a un flujo distinto, con su propia lógica, pero enmarcado dentro del mismo entorno de trabajo. Insertamos esas recomendaciones en intervalos concretos, filtramos las publicaciones en función de los blogs incluidos en tu lista de bloqueados y las ordenamos en función de su relevancia si tienes la opción «Mostrar lo más interesante primero» activada. Todos son ejemplos de lo que nos permite hacer StreamBuilder.

¿Qué incluye?

  • La biblioteca de códigos del entorno completo que usamos en Tumblr para mostrar prácticamente todos los flujos de contenido que ves en la plataforma.
  • Unas reglas de sintaxis de YAML que permiten crear flujos de contenido y las explicaciones para filtrarlo, insertarlo y ordenarlo.
  • Abstracciones para crear, filtrar, ordenar, insertar y solucionar errores en los flujos de forma programática.
  • Abstracciones para combinar varios flujos (con carruseles o flujos dentro de otros flujos, por ejemplo).
  • Una abstracción para plantillas de flujos complejas que permite gestionar la paginación con cursores.
  • Pruebas unitarias que cubren desde la interfaz pública de la biblioteca hasta la mayoría del código subyacente.

¿Qué hay en camino?

  • Mucha documentación: tenemos que migrar un montón de información de nuestras herramientas internas y dejarla por aquí.
  • Más plantillas e implementaciones de ejemplo de distintos tipos de flujos de contenido.

Si tienes cualquier duda, echa un vistazo al código y abre cualquier incidencia directamente allí.