Proyecto de la semana: Dat
El proyecto destacado de esta semana es Dat, una herramienta financiada por donaciones, de código abierto y descentralizada para distribuir conjuntos de datos. Dat está construido y mantenido por un equipo geodistribuido, muchos de los cuales ayudaron a escribir este mensaje.
En primer lugar, ¿qué es Dat?
Queríamos unir las mejores partes de los sistemas distribuidos y de igual a igual al intercambio de datos. Comenzamos con el intercambio de datos científicos y luego comenzamos a sumergirnos en las instituciones de investigación, el gobierno, el servicio público y los equipos de código abierto.
Otra manera de pensar en ello es sincronizar y subir aplicaciones como Dropbox o BitTorrent Sync, con la diferencia de que Dat es de código abierto. Nuestro objetivo es ser un potente software de código abierto, sin ánimo de lucro para compartir datos grandes, pequeños, medianos, para lotes de datos grandes y pequeños.
Para usar la herramienta CLI de dat
, todo lo que tienes que escribir es:
dat share ruta/a/mi/carpeta
Y Dat creará un enlace que puede usar para enviar esa carpeta a otra persona -- ningún servidor central o terceros tienen acceso a sus datos. A diferencia de BitTorrent, también es imposible esnifar quién está compartiendo qué (ver el borrador de Dat Paper para más detalles).
Ahora que sabemos que es Dat. ¿Cómo encaja Dat Desktop?
Dat Desktop es una forma de hacer que Dat sea accesible para personas que no puedan o no quieran usar la línea de comandos. Puede alojar múltiples dats en su máquina y servir los datos a través de su red.
¿Puedes compartir algunos casos de uso?
DataRefuge + Proyecto Svalbard
Estamos trabajando en un código llamado Proyecto Svalbard que está relacionado con DataRefuge, un grupo que trabaja para respaldar los datos climáticos gubernamentales en riesgo de desaparecer. Svalbard lleva el nombre de la cámara de semillas globales de Svalbard en el Ártico, que cuenta con una gran biblioteca de respaldo subterráneo de ADN vegetal. Nuestra versión es una gran versión controlada de conjuntos de datos científicos públicos. Una vez que conocemos y podemos confiar en los metadatos, podemos construir otros proyectos geniales, como una red de almacenamiento de datos distribuida voluntaria.
Coalición de datos cívicos de California
CACivicData es un archivo de código abierto que ofrece descargas diarias desde CAL-ACCESS, la base de datos de California rastreando dinero en política. Hacen lanzamientos diarios, lo que significa alojar un montón de datos duplicados a través de sus archivos zip. Estamos trabajando en alojar sus datos como un repositorio de Dat que reducirá la cantidad de problemas y ancho de banda necesarios para referirse a una versión específica o actualizar a una versión más reciente.
Actualizaciones de Electron
Esto aún no se ha concretado, pero creemos que un caso de uso sería poner una aplicación compilada de Electron en un repositorio Dat, luego usar un cliente de Dat en Electron para extraer las últimas deltas de la aplicación compilada binaria, para ahorrar tiempo de descarga, pero también para reducir los costes de ancho de banda para el servidor.
¿Quién debería usar Dat Desktop?
Cualquiera que quiera compartir y actualizar datos a través de una red p2p. Científicos de datos, hackers de datos abiertos, investigadores, desarrolladores. Somos super receptivos a la retroalimentación por si alguien tiene un buen caso de uso en el que todavía no hemos pensado. ¡Puedes pasarte por nuestro Chat Gitter y preguntarnos cualquier cosa!
¿Qué será lo siguiernte en Dat y Dat Desktop?
Cuentas de usuario y publicación de metadatos. Estamos trabajando en una aplicación web de registro de Dat para ser desplegada en datproject.org que será básicamente un 'NPM para conjuntos de datos',salvo que vamos a ser un directorio de metadatos y los datos pueden vivir en cualquier lugar en línea (a diferencia de NPM o GitHub, donde todos los datos están centralmente alojados, porque el código fuente es lo suficientemente pequeño, por lo que puede caber todo en un solo sistema). Dado que muchos conjuntos de datos son enormes, necesitamos un registro federado (similar a cómo funcionan los rastreadores BitTorrent). Queremos facilitar a la gente encontrar o publicar conjuntos de datos con el registro de Dat Desktop, para que el proceso de intercambio de datos no tenga obstáculos.
Otra característica son las carpetas multiescritores/colaborativas. Tenemos grandes planes para hacer flujos de trabajo colaborativos, tal vez con sucursales, similares a git, pero diseñados en torno a la colaboración con los conjuntos de datos. ¡Todavía estamos trabajando en la estabilidad general y estandarizar nuestros protocolos!
¿Por qué eligió construir Dat Desktop en Electron?
Dat está construido utilizando Node.js, por lo que fue un ajuste natural para nuestra integración. Más allá de esto, nuestros usuarios utilizan una variedad de máquinas como científicos, investigadores y funcionarios del gobierno pueden verse obligados a usar ciertas configuraciones para sus instituciones -- esto significa que necesitamos ser capaces de funcionar en Windows, Linux y Mac. Dat Desktop hace que sea muy fácil.
¿Cuáles son algunos de los desafíos a los que se enfrenta mientras construye Dat y Dat Desktop?
Averiguar lo que la gente quiere. Empezamos con conjuntos de datos tabulares, pero nos dimos cuenta de que era un poco complicado y que la mayoría de la gente no usa bases de datos. Así que a mitad de camino del proyecto, rediseñamos todo desde cero para usar un sistema de archivos y no volvimos la vista atrás.
También nos encontramos con algunos problemas generales de infraestructura en Electron incluyendo:
- Telemetría - cómo capturar estadísticas de uso anónimas
- Actualizaciones - Es un poco fragmentario y mágico configurar actualizaciones automáticas
- Lanzamientos - la firma de XCode, lanzamientos de construcción en Travis, haciendo versiones beta, todas eran desafíos.
También usamos Browserify y algunas Transformaciones Browserify en el código 'front end' en Dat Desktop (que es algo extraño porque todavía empaquetamos aunque tengamos require
nativo -- pero es porque queremos las transformaciones). Para ayudar a gestionar mejor nuestro CSS cambiamos de Sass a usar sheetify. Nos ha ayudado mucho a modularizar nuestro CSS y nos ha hecho más fácil mover nuestra interfaz de usuario a una arquitectura orientada a componentes con dependencias compartidas. Por ejemplo, dat-colors contiene todos nuestros colores y se comparte entre todos nuestros proyectos.
Siempre hemos sido un gran fan de los estándares y las abstracciones mínimas. Toda nuestra interfaz se construye utilizando nodos DOM regulares con unas cuantas bibliotecas auxiliares. Hemos empezado a mover algunos de estos componentes a base-elements, una biblioteca de componentes reutilizables de bajo nivel. Como en la mayoría de nuestra tecnología seguimos repitiendo sobre ella hasta que la hacemos bien pero como equipo tenemos la sensación de que vamos en la dirección correcta.
¿En qué áreas debe mejorarse Electron?
Creemos que el punto más doloroso son los módulos nativos. Tener que reconstruir sus módulos para Electron con npm añade complejidad al flujo de trabajo. Nuestro equipo desarrolló un módulo llamado prebuild
que maneja binarios preconstruidos, que funcionó bien para Node, pero los flujos de trabajo de Electron todavía necesitaban un retoque después de la instalación npm run rebuild
. Fue molesto. Para abordar este tema hemos cambiado recientemente a una estrategia donde empaquetamos todas las versiones binarias compiladas de todas las plataformas dentro del tarball de npm. Esto significa que los tarballs se hacen más grandes (aunque esto puede optimizarse con archivos.so
- librerías compartidas), esto evita tener que ejecutar scripts post-instalación y también evita el patrón npm run rebuild
por completo. Significa que npm install
hace lo correcto para Electron a la primera.
¿Qué es lo que más le gusta de Electron?
Las APIs parecen bastante bien pensadas, es relativamente estable y hace un buen trabajo en mantenerse al día con las versiones originales de Node. ¡No podemos pedir mucho más!
¿Algún consejo sobre Electron que pueda ser útil para otros desarrolladores?
¡Si usas módulos nativos, dale a prebuild una oportunidad!
¿Cuál es la mejor manera de seguir los avances de Dat?
Sigue @dat_project en Twitter, o suscríbete a nuestro boletín de correo electrónico.