SSB ( Secure Scuttlebutt ) es una red social descentralizada y el protocolo en el que opera. git-ssb envuelve los repositorios de git regulares con este protocolo. SSB quiere reemplazar a Facebook y git-ssb quiere reemplazar a GitHub. Debajo del corte: una guía rápida de git-ssb. Relevante para quienes no se sienten cómodos con la idea misma de utilizar servicios centralizados como intermediario. Una especie de pastilla roja con consecuencias inesperadas en este caso.
Scuttlebutt seguro
El protocolo SSB describe las reglas para sincronizar sus datos entre los nodos de la red interesados en ellos. Sus datos son un historial de sus acciones en la red, una lista vinculada de objetos json. La conexión se establece mediante la suma hash del objeto anterior (como en la cadena de bloques). Por tanto, una vez publicados, los objetos son inmutables y no extraíbles. Solo puede agregar al final de la lista. Un caso de uso típico supone que cada elemento de la lista es una publicación de blog o un comentario. Las imágenes y otros objetos pesados se almacenan fuera de la lista en forma de manchas y se replican por separado. Los objetos de la lista pueden hacer referencia a ellos.
La mayoría de los internautas escriben blogs sobre las aplicaciones Patchwork y Manyverse . Hay alrededor de una docena de aplicaciones de blogs, en su mayoría son compatibles entre sí y difieren en la interfaz. Además, hay ajedrez, chat, administrador de paquetes (ssb-npm) y git (git-ssb) . Algunos desarrolladores de SSB utilizan git-ssb como su principal servicio de control de código fuente. Lo intentaremos también.
Instale ssb-server y git-ssb
Se necesita ssb-server para sincronizar con otros nodos en la red p2p. Debe ejecutarse cuando empuja, extrae, recupera, crea una solicitud de extracción o bifurca un repositorio.
El paquete git-ssb incluye:
programa para administrar repositorios (git-ssb)
git-remote-helper , que entiende las direcciones que comienzan con ssb: //
web-, GitHub
ssb-server.
$ sudo apt install git nodejs npm
$ npm install ssb-server git-ssb
ssb-server git-ssb $HOME/node_modules
. , ~/.profile
:
if [ -d "$HOME/node_modules/.bin/" ] ; then
PATH="$HOME/node_modules/.bin/:$PATH"
fi
$PATH
,
$ source ~/.profile
~/.profile
. (, Xfce) . $PATH
, .xsessionrc
~/.profile
:
. ~/.profile
ssb-server .
$ ssb-server start
identity ~/.ssb
.
, . , , . . , .
. , . . , .
$ ssb-server invite.accept <-->
: , - .
@cel
@cel - git-ssb.
$ ssb-server publish --type contact --contact "@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519" --following
~/.ssb
1Gb - ( git-) , . , .
. :
web-
$ git-ssb-web
, issue . , , , , . activity log, - , GitHub.
web- (, , issue ) . , : , issue ... ssb-server ( ) .
$ mkdir my-new-repo
$ cd my-new-repo
$ git init
Initialized empty Git repository in /tmp/my-new-repo/.git/
$ git-ssb create ssb my-new-repo
Created repo: ssb://<hash-code>.sha256 (my-new-repo)
Added remote: ssb
$ git remote -v
ssb ssb://<hash-code>.sha256 (fetch)
ssb ssb://<hash-code>.sha256 (push)
git init
git-ssb create ssb my-new-repo
, my-new-repo
URL remote ssb
. remote .
ssb remote . .
: - SSB. .
$ git push ssb master
, . git-ssb pack- blob, 5Mb. . , , :
$ git push ssb master -o allow-big
(blob ), pack- , blob.
pack- - , git- pack- 5Mb.
git-ssb git-ssb. SSB DNS . ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256
web-.
$ git clone ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 git-ssb
$ cd git-ssb
$ git remote -v
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
remote, SSB.
$ git-ssb fork my-fork
Created repo: ssb://<new-hash-code>.sha256 (git-ssb)
Added remote: my-fork
$ git remote -v
my-fork ssb://<new-hash-code>.sha256 (fetch)
my-fork ssb://<new-hash-code>.sha256 (push)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
, remote.
-
.
$ git-ssb pull-request
, . , .
, . (git-ssb-intro), . @-/master
(git checkout -b @-/master
), (git push ssb
), - (git ssb pull-request
). master -.
, identity ( identity - . ) . git-ssb , . . identity, , . , , . , - , .
Identity ~/.$ssb_appname/secret
. ssb_appname
, identity (~/.ssb
). secret
, ssb-server .
permissionless , , identity.
, : - , , sudo make install
. , - . , , git pull
. , .
SSB.
?
git-ssb-intro: a guide to hacking together on the distributed web
git:
GitTorrent ( BitTorrent)
HyperGit ( Dat)
igis-remote ( IPFS)
ipld-remote ( IPFS)
GitCenter ( ZeroNet)
Mango (Ethereum + IPFS)
Radicle
Gitopia
Los cuatro primeros se analizan en detalle en el artículo de Daniel Aleksandersen " Comparación de cuatro herramientas de distribución P2P para repositorios Git ". Hay comentarios de los desarrolladores de SSB al respecto.
Gracias por la atención. Espero que no haya sido demasiado aburrido. Buena descentralización para los que se preocupan.
La imagen del encabezado se generó utilizando el servicio myoctocat.com .