Projet de la Semaine : Dat
Le projet vedette de cette semaine est Dat, un projet financé par des subventions, open source et décentralisé pour la distribution d’ensembles de données. Dat est produit et maintenu par une équipe géodistribuée, dont beaucoup de membre ont aidé pour écrire cet article.
Tout d’abord, qu’est-ce que Dat?
Nous voulions apporter le meilleur des systèmes distribués "peer to peer" au partage de données. Nous avons commencé avec le partage de données scientifiques puis nous nous sommes tourné vers des institutions de recherche, le gouvernement, la fonction publique et les équipes open source.
Une autre façon d’y penser est une application de synchronisation et de téléchargement comme Dropbox ou BitTorrent Sync, sauf que Dat est open source . Notre objectif est de produire un logiciel de partage de données puissant, open source et à but non lucratif pour les données de toute sorte et de toute taille.
Pour utiliser l’outil CLI dat
, il vous suffit de taper :
dat share path/to/my/folder
Et dat va créer un lien que vous pouvez utiliser pour envoyer ce dossier à quelqu'un d'autre -- aucun serveur central ou tiers n'ayant accès à vos données. Contrairement à BitTorrent, il est également impossible d'aller "fouiner" afin de voir qui partage quoi (voir le brouillon de Dat Paper pour plus de détails).
Maintenant que nous savons ce qu’est Dat. Comment Dat Desktop s’intègre-t-il ?
Dat Desktop est un moyen de rendre Dat accessible aux personnes ne pouvant pas ou ne voulant pas utiliser la ligne de commande. Vous pouvez héberger plusieurs fichiers Dat sur votre machine et diffuser les données sur votre réseau.
Quelques cas d’utilisation intéressants?
DataRefuge + Projet Svalbard
Nous travaillons sur un projet nommé Projet Svalbard qui est lié à DataRefuge, un groupe de travail pour soutenir les données gouvernementales sur le climat susceptibles de disparaître. Svalbard a été nommé ainsi en référence au Svalbard Global Seed Vault dans l'Arctique qui possède une grande bibliothèque souterraine d'ADN végétal. Notre version est une grande collection de données scientifiques publiques avec gestion des versions. Une fois que nous avons connaissance aux métadonnées et que nous pouvons leu faire confiance, nous pouvons construire d'autres projets géniaux comme un qui est un réseau bénévole de stockage de données distribué.
Regroupement de données citoyennes en Californie
CACivicDataest une archive open-source diffusant quotidiennement à partir de la base de données californienne de suivi de l'argent en politique CAL-ACCESS. Des mises à jour quotidiennes sont effectuées, ce qui oblige à héberger beaucoup de données en double dans leurs fichiers zip. Nous travaillons sur l'hébergement de leurs données en tant que repository Dat qui réduira la quantité de tracas et de bande passante nécessaire pour se référer à une version spécifique ou mettre à jour vers une version plus récente.
Mises à jour d'Electron
Celui-ci n'est pas encore concret, mais nous pensons qu'un cas d'utilisation amusante serait de mettre une application Electron compilée dans un dépôt Dat, puis en utilisant un client Dat dans Electron pour tirer les derniers deltas du binaire de l'application construite, pour économiser sur le temps de téléchargement, mais aussi pour réduire les coûts de bande passante pour le serveur.
Qui devrait utiliser Dat Desktop ?
Toute personne souhaitant partager et mettre à jour des données sur un réseau p2p. Data scientists, hackers de données libres, chercheurs, développeurs. Nous sommes très ouverts aux commentaires à propos de cas d’utilisation sympa auquel nous n’avons pas encore pensé. Vous pouvez passer par notre Gitter Chat et nous demander n’importe quoi!
Quelle est la prochaine étape dans Dat et Dat Desktop ?
Comptes d’utilisateurs et publication de métadonnées. We are working on a Dat registry web app to be deployed at datproject.org which will basically be an 'NPM for datasets', except the caveat being we are just going to be a metadata directory and the data can live anywhere online (as opposed to NPM or GitHub where all the data is centrally hosted, because source code is small enough you can fit it all in one system). Comme beaucoup de jeux de données sont énormes, nous avons besoin d'un registre fédéré (similaire à la façon dont fonctionnent les trackers BitTorrent). Nous voulons faciliter la recherche ou la publication de jeux de données dans le registre de Dat Desktop, pour rendre le partage des données sans friction.
Une autre fonctionnalité est les dossiers multi-auteurs/collaboratifs. Nous avons de gros projets pour faire des flux de travail collaboratifs, peut-être avec des branches, similaires à git, sauf conçu autour de la collaboration de jeux de données. Mais nous travaillons toujours, en ce moment à la stabilité générale et à la standardisation de nos protocoles !
Pourquoi avez-vous choisi de créer Dat Desktop avec Electron?
Dat étant sur Node.js, c'était naturel de l'intégrer ainsi. Au-delà de cela, nos utilisateurs utilisent une variété de machines depuis des scientifiques, les chercheurs et les responsables gouvernementaux peuvent être contraints d'utiliser certaines configurations pour leurs institutions -- cela signifie que nous devons être en mesure de cibler Windows et Linux ainsi que Mac. Dat Desktop nous le donne très facilement.
Quels sont les défis que vous avez rencontrés lors de la construction de Dat et Dat Desktop ?
Trouver ce que les gens veulent. Nous avons commencé avec des jeux de données tabulaires, mais nous avons réalisé que c'était un peu compliqué à résoudre et que la plupart des gens n'utilisent pas de bases de données. Donc, à mi-parcours du projet, nous avons redessiné tout depuis zéro pour utiliser un système de fichiers et nous n'avons pas regardé en arrière.
Nous avons également rencontré des problèmes généraux d'infrastructure d'Electron, notamment :
- Télémétrie - comment capturer des statistiques d'utilisation anonymes
- Mises à jour - C'est une sorte de piqué et de magie de mettre en place des mises à jour automatiques
- Versions - Signature XCode, construction de versions sur Travis, en faisant des versions bêta, tous étaient des défis.
Nous utilisons également Browserify et quelques transformations de Browserify sur le code 'front-end' dans Dat Desktop (ce qui est un peu bizarre parce que nous avons encore des paquets même si nous avons natif require
-- mais c'est parce que nous voulons les transformations). Pour mieux aider à gérer notre CSS nous sommes passés de Sass à l'utilisation de sheetify. Il nous a grandement aidés à modulariser notre CSS et à faciliter le déplacement de notre interface utilisateur vers une architecture orientée vers des composants avec des dépendances partagées. Par exemple dat-colors contient toutes nos couleurs et est partagé entre tous nos projets.
Nous avons toujours été un grand fan de standards et d'abstractions minimes. Toute notre interface est construite à l'aide de nœuds DOM réguliers avec seulement quelques bibliothèques nous aidant. Nous avons commencé à déplacer certains de ces composants dans les éléments de base, une bibliothèque de composants réutilisables de bas niveau. Comme avec la plupart de notre technologie, nous continuons à itérer dessus jusqu'à ce que nous y arrivions correctement, mais en tant qu'équipe, nous avons le sentiment que nous allons dans la bonne direction ici.
Dans quels domaines faut-il améliorer Electron ?
Nous pensons que le plus grand point de douleur est les modules natifs. Reconstruire vos modules pour Electron avec npm ajoute de la complexité au workflow. Notre équipe a développé un module appelé prebuild
qui gère les binaires précompilés, qui a bien fonctionné pour Node, mais les workflows d'Electron nécessitaient toujours une étape personnalisée après l'installation, généralement npm run rebuild
. Cela a été ennuyeux. Pour résoudre ce problème, nous sommes récemment passés à une stratégie où nous regroupons toutes les versions binaires compilées de toutes les plates-formes à l'intérieur de l'archive tar npm. Cela signifie que les archives deviennent plus grandes (bien que cela puisse être optimisé avec les fichiers .so
- bibliothèques partagées), cette approche évite d'avoir à exécuter des scripts de post-installation et évite également complètement le modèle npm run rebuild
. Cela signifie que npm install
fait la bonne chose pour Electron la première fois.
Quelles sont vos choses préférées à propos d'Electron?
Les API semblent assez bien pensées, elles sont relativement stables et ça fait un bon travail pour se tenir à jour avec les versions amont de Node, pas grand chose que nous pouvons demander !
Des conseils d'Electron qui pourraient être utiles aux autres développeurs ?
Si vous utilisez des modules natifs, essayez prebuild !
Quelle est la meilleure façon de suivre les développements de Dat ?
Suivez @dat_project sur Twitter, ou abonnez-vous à notre newsletter e-mail.