L'Univers dat et le P2P

@xavier m’a demandé d’élaborer sur l’Univers dat alors voici.

Première chose, dat c’est un protocol P2P, au même titre que bittorrent. Avec les années, bittorrent a vu plusieurs implémentations et même des versions web. Dat est apparu sur github en 2013 et depuis c’est passé par plusieurs évolutions. Dat, c’est aussi le nom du prorgamme cli (y’a aussi dat-desktop, basé sur Electron) et aussi le nom de l’archive (bittorrent vs torrent).

MISE À JOUR: Le plus simple pour utiliser dat est de télécharger le binaire dat à partir de github. Ce binaire autonome comprend node et dat dans un beau gros fichier.

Depuis un an environ, il existe le fureteur Beaker construit sur Electron (et donc, Chromium). Ce fureteur permet aussi bien de consulter que d’éditer des dat. Ça repose sur HTML, JavaScript et CSS comme n’importe quel fureteur, mais en plus d’utiliser http/https pour le transport, ça utilise aussi dat en dessous.

Plusieurs applications web existent maintenant pour Beaker/dat.

Il y a quelques semaines, Mozilla annonçait qu’il ouvrait la porte au P2P, section Support for Decentralization Protocols.

Brave aussi a annoncé qu’il supporterait dat bientôt.

Bref, pour moi c’est très prometteur. C’est pour ça que je réfère à l’Univers dat (ce lien est aussi disponible à dat://univers-dat-millette.hashbase.io/univers-dat.html pour les initiés).

Peut-être que ça ne remplace pas NextCloud aujourd’hui, mais ça s’en vient et c’est pour ça que c’est mon objectif pour l’année 2018, sachant qu’on y arrivera pas dans le premier trimestre.

Une des affaires que je comprends pas bien, c’est la relation avec IPFS. Il me semble que les deux projets sont très similaires non?

Ou alors Bittorrent sync? Comment ça se compare aux alternatives?

Réponse, incomplète…

https://docs.datproject.org/faq#dat-vs

Dat n’a pas de lien direct avec IPFS, sauf que c’est du P2P.

En fait, il existe déjà une tonne de solutions P2P:

  • ZeroNet Réseau ouvert, libre et incensurable,
    utilisant sur la cryptographie Bitcoin et le réseau BitTorrent
  • Scuttlebutt a decent(ralised) secure gossip platform
  • IPFS IPFS is the Distributed Web
  • Etc.

Du lot, je n’ai pas essayé IPFS encore. C’est le plus ancien mais je ne le connais pas vraiment.

J’ai passé très peu de temps avec ZeroNet, un peu plus sur Scuttlebutt, mais je me suis ensuite rabattu sur dat pour plusieurs raisons personelles:

  • Implémentation de référence en JavaScript
  • Progrès récents (dont l’apparition de Beaker)
  • Similarité avec Bittorrent - mais qu’on peut mettre à jour (un torrent est statique)
  • Ma compréhension des building blocks

Alors voilà, je me concentre sur dat depuis un an parce qu’on ne peut être partout en même temps.

j’ai essayé IPFS et je peux dire que je rejoins les observations de Dat: c’est un peu embêtant pour les gros fichiers parce que ça copie tout le fichier dans le stockage interne de IPFS. je pense qu’ils essayaient de régler ça, mais je sais pas s’ils ont réussi. du coup, ajouter un gros fichier, c’est hyper long. dat semble plus prometteur à ce niveau, particulièrement au niveau des révisions…

J’ai aussi gossé avec Scuttlebutt, mais ça n’a pas super marché pour moi. Le client était super lourd et j’ai pas trop vu où ça s’en allait leur truc. Mais c’est vraiment intéressant aussi.

Le problème que je vois avec tout ça, c’est que ça prend une appli custom pour fonctionner. Oui, certains browsers supportent IPFS/dat/etc, mais tant que c’est pas là par défaut, on peut pas vraiment s’en servir plus largement…

On en est encore là, dans la réalité:

1 « J'aime »

clarification:

c’est expérimental, mais il y a maintenant moyen de faire ipfs add --nocopy foo/: c’est quand même sémantiquement différent de dat share

le plus gros problème que je vois avec dat présentement, c’est… er… javascript. je sais que c’est un peu du trolling, mais je suis devenu un peu allergique à Electron, node et compagnie… Je préfère, de loin, les languages compilés comme Golang ou avec un runtime un peu plus « natif » comme Python… mais bon, je suis vieux jeu comme ça, désolé. :slight_smile:

Mais bon, peut-être que ça revient au même? Au bout du compte, ces protocoles vont être vraiment établis seulement quand ils vont sortir de leur implantation initiale anyways. J’ai lu le « paper » de dat, et ça semble pas si complexe, bien qu’il y a un autre sous-protocole nommé « SLEEP » (Syncable Ledger of Exact Events Protocol) pour le format de stockage… Pas évident, tout ça!

En fait, un dat peut-être aussi gros que tu veux, infiniment, puisque ça stream itou :wink:

Avec mon propre dat-shell on peut ouvrir un dat sans downloader son contenu, faire un named pipe (la fonction ln dans dat-shell) et puis streamer un mp4 ou un ogg à partir du réseau P2P sans jamais en avoir une copie complète.

1 « J'aime »

sans vouloir m’enfoncer dans mes fleurs de tapis, j’ai fait d’avantage de recherches, et pour installer Dat sous Debian, il faudrait d’abord que j’installe npm, et pour installer ça, ben faudrait que le package soit à jour. hors, npm était tellement pas à jour quand Debian stretch est sorti l’an passé qu’il a été retiré de Debian. Du coup, npm n’est plus dans debian. Le package semble même abandonné. Le mettre à jour implique en effet uploader environ 150 packages dans Debian…

curl 'https://wiki.debian.org/Javascript/Nodejs/Tasks/npm?action=raw' | grep -v '{OK}' | grep '^||'  | sed 's/.*──//;s/ ||.*//' | sort -u | wc -l

Considérant qu’il y a déjà 180 packages node qui traînent dans le NEW queue, disons qu’on est pas sortis du bois. En fait, il y a tout un stress dans Debian lié au fait que les packages Node sont souvent minuscules et triviaux, et donc demandent un temps fou à réviser, même pour des petits programmes… La vaste majorité des packages en attente d’entrer dans Debian viennent de Node:

$ ./new-stats
NEW queue count: 294
Top 10 (maintainers)
      3 Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
      3 Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org>
      3 Maintainer: Debian Let's Encrypt <letsencrypt-devel@lists.alioth.debian.org>
      3 Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
      3 Maintainer: Debian Science Team <debian-science-maintainers@lists.alioth.debian.org>
      5 Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
      5 Maintainer: Debian PostgreSQL Maintainers <pkg-postgresql-public@lists.alioth.debian.org>
      6 Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
      9 Maintainer: Debian Go Packaging Team <pkg-go-maintainers@lists.alioth.debian.org>
    180 Maintainer: Debian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org>
Top 10 (sponsors)
      2 Sponsored-By: buildd_armhf-arnold@buildd.debian.org@debian.org
      2 Sponsored-By: fabian@debian.org
      2 Sponsored-By: jcc@debian.org
      2 Sponsored-By: tille@debian.org
      2 Sponsored-By: tobi@debian.org
      2 Sponsored-By: uhoreg@debian.org
      3 Sponsored-By: buildd_amd64-x86-ubc-01@buildd.debian.org@debian.org
      4 Sponsored-By: kilobyte@debian.org
      6 Sponsored-By: stapelberg@debian.org
    178 Sponsored-By: praveen@debian.org
Top 10 (changed-by)
      3 Changed-By: Navaneeth Kishore <daltonfury42@disroot.org>
      3 Changed-By: Raju Devidas <rajudev@disroot.org>
      4 Changed-By: Salvatore Bonaccorso <carnil@debian.org>
      5 Changed-By: Arnaud Rebillout <arnaud.rebillout@collabora.com>
      5 Changed-By: Christoph Berg <christoph.berg@credativ.de>
      6 Changed-By: Julien Puydt <julien.puydt@laposte.net>
      6 Changed-By: Sruthi Chandran <srud@disroot.org>
      8 Changed-By: Manas kashyap <manaskashyaptech@gmail.com>
     13 Changed-By: Daniel Ring <dring@wolfishly.me>
    128 Changed-By: Pirate Praveen <praveen@debian.org>

Chapeau quand même à praveen pour ce travail herculéen… mais c’est pas de si tôt que je vais pouvoir rouler dat!

@milette comment tu roules tout ça anyways? :slight_smile:

@anarcat pour rouler tout ca, je…

Le plus simple pour rouler node (une version récente) c’est d’utiliser un gestionnaire de version de node. Moi j’aime n pour ça. Pour installer n et le tenir à jour (pas que ça change souvent), je recommande n-install. Fun stuff!

En plus, avec n (ou nvm, un autre gestionnaire node populaire) tu ne risques pas de problèmes courant quand on fait npm install --global PAQUET - une installation globale avec straight npm va demander sudo parfois, parce que ça installe dans /local/lib (ou ché pas trop - mais globalement). Tandis qu’avec n (ou nvm), le sudo n’est pas nécessaire puisque l’installation de node est faite dans le home du user.

Enfin, quand tu as n-install, n, node et npm, tu peux tout simplement (haha) faire:

npm install --global dat-shell

Et à partir de là, dat-shell sera dans ton path. Note que pour installer n, il faudra se relogguer (ça modifie son .bashtruc ou équivalent).

J’ai tendance à être un peu bleeding edge alors je roule n --lts - qui est la version 8.9.4 à l’heure actuelle (les version impairs ne sont pas LTS). Je crois que 8.9.4 est installé par n-install.

Note que quand on install node depuis la source (via n ou nvm), ça installe aussi npm, qui est un composante essentiel de node.

P.S.: je vais peut-être transporter mon message dans un autre thread plus approprié à node directement. À suivre…

P.P.S.: je suis pas fan d’Electron non plus, loin de là. Pour dat, y’a du travail qui se fait (un peu) en c, rust et go je crois. C’est à suivre. Je prévois une trajectoire pour dat assez semblable à bittorrent (et ses nombreuses implémentations).

attends, pour installer mon package manager, faut installer un autre package manager?? je pensais que c’était une joke dans cet article:

All of that bundled together is the popular way to work in 2018. But other people’s toolchains are absolutely inscrutable from the outside. Even getting started is touchy. Last month, I had to install a package manager to install a package manager. That’s when I closed my laptop and slowly backed away from it. We’re a long way from the CSS Zen Garden where I started.

mais ouais, j’aimerais bien voir les implantations alternatives de « dat »… le FAQ y fait référence, mais je n’ai rien vu sur Github…

1 « J'aime »

@anarcat Doh, y’a un binaire pour dat de disponible.

Pas tout à fait, faut d’abord installer l’installateur de gestionnaire de node:

curl -L https://git.io/n-install | bash 

Mais je sais que tu lanceras pas ça sans regarder de près. Alors je t’ai donné l’explication au long… Mais c’est pas une farce. Ce n’est pas obligatoire non plus.

Tu peux aussi aller sur la page de node.js, et ramasser le binaire où la source directement. (Hmm, je ne me souvenais pas de .xz comme extension de compression - ça demande probablement le paquet Debian xz-utils).

Je comprends parfaitement la «pas joke», d’où:

ouais ben, curl pipe bash c’est un peu ce que je voulais éviter ici… tant qu’à ça, il y a un binaire Appimage de dat-desktop aussi… :stuck_out_tongue: mais ouais, je peux probablement installer un binaire pour npm, mais c’est le genre de choses que j’essaie d’eviter…

cela dit, c’est là que c’est plus intéressant pour moi… :wink:

Merveilleux!

1 « J'aime »