SSB ( Secure Scuttlebutt ) adalah jaringan sosial terdesentralisasi dan protokol yang dioperasikannya. git-ssb membungkus repositori git biasa dengan protokol ini. SSB ingin mengganti Facebook, dan git-ssb ingin mengganti GitHub. Under the cut - panduan cepat untuk git-ssb. Relevan bagi mereka yang merasa tidak nyaman dengan gagasan untuk menggunakan layanan terpusat sebagai perantara. Semacam pil merah dengan konsekuensi tak terduga dalam kasus ini.
Scuttlebutt aman
Protokol SSB menjelaskan aturan untuk menyinkronkan data Anda antara node jaringan yang tertarik padanya. Data Anda adalah riwayat tindakan Anda di jaringan, daftar objek json yang ditautkan. Koneksi diatur oleh hash-sum dari objek sebelumnya (seperti di blockchain). Jadi, setelah dipublikasikan, objek tidak dapat diubah dan tidak dapat dilepas. Anda hanya dapat menambahkan ke akhir daftar. Kasus penggunaan umum mengasumsikan bahwa setiap item dalam daftar adalah entri blog atau komentar. Gambar dan benda berat lainnya disimpan di luar daftar dalam bentuk gumpalan dan direplikasi secara terpisah. Objek dalam daftar dapat merujuk ke mereka.
Sebagian besar blog netizen menggunakan aplikasi Patchwork dan Manyverse . Ada sekitar selusin aplikasi blog, sebagian besar kompatibel satu sama lain dan berbeda dalam antarmuka. Ada juga catur, obrolan, manajer paket (ssb-npm) dan git (git-ssb) . Beberapa pengembang SSB menggunakan git-ssb sebagai layanan kontrol sumber utama mereka. Kami akan mencoba juga.
Instal ssb-server dan git-ssb
ssb-server diperlukan untuk melakukan sinkronisasi dengan node lain di jaringan p2p. Ini harus dijalankan saat Anda mendorong, menarik, mengambil, membuat permintaan tarik, atau membuat garpu repositori.
Paket git-ssb mencakup:
program untuk mengelola repositori (git-ssb)
git-remote-helper , yang memahami alamat yang dimulai dengan 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
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
. , .
?
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)
-
-
Empat yang pertama dianalisis secara rinci dalam artikel Daniel Aleksandersen " Empat alat distribusi P2P untuk repositori Git dibandingkan ". Ada komentar dari pengembang SSB untuk itu.
Terima kasih atas perhatiannya. Semoga tidak terlalu membosankan. Desentralisasi yang baik untuk mereka yang peduli.
Gambar di header dibuat menggunakan layanan myoctocat.com .