2 poin oleh GN⁺ 2024-03-06 | 1 komentar | Bagikan ke WhatsApp
  • Radicle Heartwood adalah implementasi ketiga dari Radicle Protocol, yang menyediakan stack kolaborasi dan publikasi kode peer-to-peer tanpa code forge terpusat
  • Repositori ini mencakup alat baris perintah rad yang digunakan langsung oleh pengembang dan daemon jaringan radicle-node
  • Dirancang sebagai pengganti code forge seperti GitHub dan GitLab, dengan keamanan dan desentralisasi, serta pelestarian kedaulatan pengguna sebagai tujuan utama
  • Lingkungan instalasi memerlukan sistem operasi berbasis Linux atau Unix, Git 2.34 atau lebih baru, serta OpenSSH 9.1 atau lebih baru yang menyertakan ssh-agent
  • Mendukung instalasi biner maupun dari source Rust, tetapi email umpan balik akan diposting otomatis ke kanal Zulip publik sehingga nama dan alamat email dapat terekspos

Apa yang disediakan Radicle Heartwood

  • Heartwood adalah versi iterasi ketiga dari Radicle Protocol, sekaligus stack lengkap untuk kolaborasi dan publikasi kode peer-to-peer
  • Repositori ini mencakup komponen utama yang diperlukan untuk implementasi Heartwood
    • rad: antarmuka baris perintah yang ramah pengguna
    • radicle-node: daemon jaringan
  • Radicle dirancang sebagai alternatif untuk code forge seperti GitHub dan GitLab
    • Tujuannya adalah menjaga keamanan, desentralisasi, serta kedaulatan dan kebebasan pengguna
  • Informasi umum tersedia di Radicle home page
  • Percakapan proyek dapat dilakukan di Zulip chat
  • Cara kerja Radicle dijelaskan lebih rinci dalam Protocol Guide

Instalasi dan menjalankan

  • Persyaratan instalasi adalah sebagai berikut
    • Sistem operasi berbasis Linux atau Unix
    • Git 2.34 atau lebih baru

      • OpenSSH 9.1 atau lebih baru yang menyertakan ssh-agent
      • Instalasi biner memerlukan curl dan tar, dan rilis terbaru dapat dipasang dengan perintah berikut
curl -sSf https://radicle.dev/install | sh
- Biner juga dapat diunduh dari halaman [download](https://radicle.dev/download)
- Untuk memasang dari source, diperlukan **toolchain Rust**, lalu jalankan perintah berikut di dalam repositori
cargo install --path crates/radicle-cli --force --locked --root ~/.radicle
cargo install --path crates/radicle-node --force --locked --root ~/.radicle
cargo install --path crates/radicle-remote-helper --force --locked --root ~/.radicle
- Instalasi juga bisa dilakukan langsung dari seed node
cargo install --force --locked --root ~/.radicle \
    --git https://seed.radicle.dev/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git \
    crates/radicle-cli crates/radicle-node crates/radicle-remote-helper
- File **systemd unit** untuk node berada di folder `/systemd` dan dapat digunakan sebagai titik awal untuk kustomisasi tambahan
- Untuk menjalankan dalam mode debug, lihat [HACKING.md](https://radicle.network/nodes/iris.radicle.network/rad%3Az3gqcJUoA1n9HaHKufZs5FCSGazv5/tree/HACKING.md)

Umpan balik, kontribusi, lisensi

  • Umpan balik dapat dikirim melalui rad issue, Zulip, atau feedback@radicle.dev
  • Umpan balik yang dikirim lewat email akan diposting otomatis ke kanal publik #feedback di Zulip
    • Selama proses posting, header From akan dipublikasikan, yang biasanya mencakup nama dan alamat email
  • Panduan kontribusi tersedia di CONTRIBUTING.md dan HACKING.md
  • Radicle didistribusikan di bawah lisensi MIT dan Apache License 2.0
  • Detail lebih lanjut tersedia di LICENSE-APACHE dan LICENSE-MIT

1 komentar

 
GN⁺ 2024-03-06
Opini Hacker News
  • Saya salah satu pendiri Radicle. Jika penasaran dengan cara kerja internal protokolnya, mulai saja dari dokumentasi: https://docs.radicle.xyz/
    Dokumentasinya masih dalam proses penulisan

    • Setelah membaca dokumentasinya, bagian yang menarik perhatian saya adalah “repositori Radicle bisa bersifat publik/privat, dan dapat berisi kode sumber, dokumentasi, serta dataset arbitrer”
      Pada dasarnya, kalau ini adalah aplikasi berbagi berkas P2P, saya penasaran di bagian mana protokol menangani penyalahgunaan. Kalau tidak, saya tidak tahu apa bedanya dengan aplikasi berbagi berkas generasi sebelumnya seperti BitTorrent atau Winny, yang dipakai untuk membagikan konten berhak cipta seperti film, musik, dan perangkat lunak secara sembarang. Sepertinya segelintir pengguna jahat bisa merusaknya, dan saya juga penasaran apakah jaringan “pribadi” bisa dipisahkan agar kita yakin tidak ikut terlibat dalam hal-hal ilegal
    • Proyek yang menarik. Saya penasaran dengan model bisnisnya
      Di Crunchbase tercantum bahwa mereka menerima investasi 12 juta dolar, jadi sepertinya ada rencana monetisasi
    • Saya tidak secara aktif mencari pengganti layanan proprietari seperti GitHub atau GitLab, tetapi sesekali saya menerima permintaan untuk menanyakan alternatif. Saya menyukai solusi self-hosting terdistribusi, jadi arah Radicle terasa tepat, tetapi saya agak terganjal oleh bagian persyaratan yang menyebut Linux atau sistem operasi berbasis Unix
      Untuk jenis proyek yang saya bantu, ini bisa menjadi penghalang fatal. Kodenya tampak ditulis dalam Rust, jadi saya penasaran apakah ada rencana dukungan untuk MS Windows. Mac OS bisa dianggap termasuk keluarga Unix, kan? Walaupun bukan dukungan Windows resmi, saya penasaran apakah port MSYS2 memungkinkan
      Sebagai sedikit latar belakang, saya bukan orang yang berada di posisi mengambil keputusan seperti memilih penyedia layanan, tetapi saya terkait dengan organisasi semi-pemerintah yang menaruh basis kode open source yang cukup besar di GitHub. Sesekali saya punya kesempatan mengusulkan ide tertentu, tetapi keputusan adopsi bukan wewenang saya. Organisasi ini punya motivasi kuat untuk memiliki ketahanan agar tidak terseret kebijakan penyedia swasta, serta melakukan “hal-hal baik” seperti keberlanjutan dan aksesibilitas yang luas. Sebagai organisasi pemerintah Eropa yang tipikal, GitHub bertabrakan dengan kebijakan semacam itu
      Ada juga lembaga pemerintah lain yang menangani arsip atau dukungan jaringan, tetapi kapasitasnya kurang atau masih terpaku pada cara lama, dan mereka juga sering terjebak perangkap yang dipasang penyedia. Misalnya, layanan arsip mengadopsi DataBricks secara menyeluruh tanpa tahu bahwa DataBricks adalah produk komersial sumber tertutup. Jadi harapan saya rendah bahwa organisasi itu akan memanfaatkan solusi self-hosting dengan baik, dan solusi terdistribusi tampak menarik. Namun alat yang tidak berjalan di lingkungan PC umum utama tidak bisa digunakan
    • Saya penasaran berapa anggaran yang masuk ke Radicle, berapa orang yang membuatnya selama berapa lama, dan siapa yang menggunakannya
    • Saya suka desain situs web dan aplikasinya. Banyak proyek open source benar-benar runtuh dalam hal desain visual, dan meskipun itu hanya unsur tampilan luar, desain yang cantik membuat saya lebih ingin berinteraksi dengan proyek tersebut
      Saya juga penasaran tingkat adopsi seperti apa yang dulu dan sekarang mereka perkirakan, serta apakah hasil nyatanya sesuai dengan ekspektasi itu
  • Menarik melihat bagaimana Radicle berevolusi selama kira-kira 5 tahun terakhir. Saya menghadiri lokakarya Protocol Berg 2023, dan menurut saya mereka membuat sesuatu yang cukup kuat dan baru
    Yang terutama menarik adalah bahwa fitur kolaborasinya pun local-first. Kita bisa mengirim patch dan issue tanpa internet, dan setiap kali GitHub bermasalah, seluruh tim tidak perlu menempel di HN

  • Untuk tujuannya, ini tampak seperti proyek yang bagus, tetapi menurut saya Git sendiri sebenarnya sudah open source dan P2P. Tidak perlu menerima biner lewat sh <(curl); cukup hubungkan ke server Git lain lalu ambil atau merge kode secara langsung dengan perintah Git
    Yang tidak ada di Git adalah issue kode, wiki, diskusi, GitHub Pages, dan yang paling penting jaringan profil developer. Diperlukan cara untuk memasukkan metadata proyek ke dalam .git itu sendiri agar commit kode sumber tidak tercampur dengan wiki atau issue. Referensi terpisah seperti git notes mungkin bisa dipakai
    https://git-scm.com/docs/git-notes

    • Git memang dirancang dengan mempertimbangkan interaksi P2P sampai tingkat tertentu, tetapi dalam praktiknya tidak ada cara distribusi seperti itu. Semua distribusi memakai model klien-server, karena Git saja tidak memiliki fungsi yang cukup untuk didistribusikan begitu saja di jaringan P2P
      Misalnya, tidak ada cara untuk memverifikasi bahwa repositori yang didapat lewat git clone adalah repositori yang saya minta. Karena itu kita harus melakukan clone dari sumber tepercaya, yaitu server yang dikenal. Ini tidak cocok dengan P2P yang praktis
      Radicle memecahkan masalah ini dengan memberikan identifier repositori yang stabil[0] dan dapat diverifikasi secara lokal, sehingga pihak yang tidak tepercaya pun dapat menyediakan repositori
      [0]: https://docs.radicle.xyz/guides/protocol#trust-through-self-...
    • Radicle menambahkan pelacakan issue dan pull request. Mungkin beberapa fitur lain juga akan disertakan
      Di mobile, jika menekan tombol-tombol di bagian bawah tautan sumber, Anda bisa melihat tab pelacakan issue, tab pull request, dan lainnya
    • Fossil(https://fossil-scm.org) memasukkan issue, wiki, dan lainnya ke dalam repositori proyek
    • “Yang paling penting jaringan profil developer”, katanya; saya jadi bertanya-tanya dunia sudah jadi seperti apa
      Kalau tidak salah, Gerrit dulu menyimpan code review di Git
    • Git tradisional tidak bisa menghindari sensor seperti kabar terbaru terkait Nintendo. Ide seperti ini sudah lama terlintas di kepala saya, dan saya benar-benar senang ada yang berhasil mengerjakan bagian sulitnya
  • Di dokumentasi tertulis bahwa “penting untuk hanya memublikasikan repositori yang Anda miliki atau pelihara, dan berkomunikasi dengan maintainer lain agar tidak membuat identifier repositori yang duplikat.”
    Saya pernah mengalami orang-orang mengambil kode saya lalu mengunggahnya ke GitHub, dan saya sering melihat bahwa meskipun dokumentasi produk atau UI perantara memuat petunjuk “tolong jangan lakukan X, itu akan menimbulkan masalah bagi pengguna lain”, tidak ada yang membaca, memikirkan, atau memedulikannya, lalu langsung melakukan X. Jadi sepertinya banyak orang tidak akan mengikuti permintaan dalam dokumentasi ini; bahkan halaman beranda hanya memberi tahu cara melakukan push kode, sementara permintaan yang “penting” ini ada di panduan pengguna yang hampir tidak dibaca orang
    Pada akhirnya, cukup mengkhawatirkan bahwa tindakan yang tampak masuk akal—sekadar melakukan push kode open source yang sedang dikerjakan sesuai instruksi di beranda—karena protokol dan cara penyimpanannya, seiring waktu dapat mengacaukan atau membingungkan sesuatu yang penting

    • Sepertinya tidak ada masalah khusus di sini. Saat ini pun lokasi resmi sebuah repositori ditemukan lewat jalur eksternal seperti jejaring sosial atau situs web terpisah
      Di GitHub, jumlah star dapat memberi kepercayaan tambahan, dan padanan di Radicle adalah jumlah seed untuk repositori tertentu
    • Tidak perlu kesal kepada orang karena mereka mengabaikan dokumentasi atau petunjuk. Itu perilaku yang sangat logis
      Dalam komputasi sehari-hari, biasanya ada puluhan petunjuk yang kita lihat, dan puluhan alat yang kita gunakan. Kalau membayangkan waktu yang dibutuhkan untuk membaca semua petunjuk itu dan meneliti dokumentasi semua alat, itu akan terlalu lama
      Jadi jauh lebih baik untuk tidak membacanya dan memakai heuristik. Misalnya, ketika menutup dokumen yang memiliki perubahan belum disimpan, kita sudah tahu dialognya mungkin berbunyi “Buang?”, jadi tidak perlu dibaca. Ini hal yang baik
      Kesimpulannya, perangkat lunak harus dirancang dengan asumsi bahwa orang memang berperilaku seperti ini. Biasanya itu memungkinkan. Kalau ada contoh spesifik, saya rasa saya bisa mengusulkan solusi yang lebih baik daripada pendekatan “meminta dan berharap orang membacanya”
    • Dalam gaya GitHub, bukankah caranya adalah memasukkan pemberitahuan hak cipta ke dalam kode untuk menunjukkan bahwa repositori Anda adalah yang asli, dan membuat perubahan pemberitahuan hak cipta itu ilegal? Ini juga bisa diterapkan di sini
  • Selamat atas peluncurannya. Saya sudah mengikuti proyek ini, dan sangat antusias melihatnya sudah jauh lebih matang. Saya penasaran apa cara terbaik untuk memindahkan proyek yang saat ini ada di GitHub. Saya juga ingin tahu apakah ada mode mirror yang bisa dicoba

    • Belum ada mirroring bawaan, tetapi sedang kami pertimbangkan. Secara teori, ini semestinya sesederhana menyiapkan job cron yang setiap jam mengambil dari GitHub lalu melakukan push ke Radicle
      git pull github master
      git push rad master
  • Saya penasaran seberapa mudah ditemukan repositori-repositori ini oleh pengguna umum. Sepertinya https://app.radicle.xyz/robots.txt tidak ada, jadi tampaknya mesin pencari boleh mengambilnya, dan memang jika mencari site:app.radicle.xyz di Google dan DDG, hasilnya muncul
    Saat ini belum muncul di peringkat atas tanpa filter situs, tetapi peringkatnya bisa saja membaik
    Akan bagus juga jika ada alat yang terintegrasi dengan dukungan CI. Pada akhirnya mungkin berupa loop seperti while true; do wait_repo_update; git pull && ./run_ci.sh; done, tetapi perlu bentuk yang lebih baik yang bisa dibatasi hanya pada push dari identifier yang dipercaya
    Terakhir, repositori artefak juga diperlukan. Namun Radicle mungkin tidak perlu menyelesaikan semuanya. Khususnya, jaringan terdistribusi untuk berbagi binary besar tampaknya akan cukup cepat dipakai untuk tujuan yang tidak diinginkan

    • Saat ini kami sedang mengerjakan beberapa integrasi CI, dan juga membuat CI native kami sendiri yang disesuaikan dengan kebutuhan kami
    • Poin yang bagus. Gateway seperti app.radicle.xyz sepertinya memang harus mengizinkan crawler mengindeks seluruh kumpulan repositori di jaringan
  • Saya berharap orang-orang mendefinisikan dengan jelas apa arti “P2P” atau, istilah yang lebih umum dipakai, “terdistribusi”. Saat ini istilah itu sudah menjadi buzzword yang terlalu kabur sehingga bisa dipakai untuk makna apa saja

    • Saya belum sering melihat istilah ini disalahgunakan. Definisi yang dipakai Radicle dan sebagian besar sistem P2P sama dengan definisi Wikipedia[0], khususnya bagian “peer adalah peserta yang memiliki hak dan kemampuan setara dalam jaringan”
      Jadi sistem P2P adalah sistem tempat semua peserta memiliki “hak yang setara di dalam jaringan”. Biasanya itu juga berarti semuanya menjalankan perangkat lunak yang sama
      [0]: https://en.wikipedia.org/wiki/Peer-to-peer
  • Panduan instalasinya curl -sSf [https://radicle.xyz/install](<https://radicle.xyz/install>;) | sh, jadi ekspektasi saya langsung runtuh karena sampah curl-bash
    Cara instalasi seperti ini adalah sinyal kuat pengembangan yang tidak dipikirkan. Kalau proyek ini populer, rasanya kita akan melihat bencana keamanan terjadi. Semoga suatu hari ada “alternatif GitHub P2P open source” yang tidak dimulai dengan cara instalasi terburuk

    • Ini hampir merupakan reaksi berlebihan sampai terasa tidak masuk akal
      Risiko installer yang dipipe sudah diketahui banyak orang. Dengan logika itu, kita harus membuang Homebrew [1](lebih dari 38 ribu bintang GitHub), PiHole [2](lebih dari 46 ribu), Chef [3], RVM [4], dan banyak sekali proyek open source yang memakai installer otomatis satu langkah yang dipipe ke bash
      Respons yang lebih masuk akal adalah bekerja sama dengan pengembang agar dokumentasi menyediakan cara instalasi alternatif atau menjelaskan risikonya dengan lebih baik, bukan membakar lumbung hanya demi membasmi kutu
      [1] https://brew.sh/
      [2] https://github.com/pi-hole/pi-hole
      [3] https://docs.chef.io/chef_install_script/#run-the-install-sc...
      [4] https://rvm.io/rvm/install
    • Bukankah itu agak dramatis?
      Soal masalah transfer yang terputus, skripnya aman kecuali di sistem Anda ada perintah berbahaya yang cocok dengan ^(t(e(m(p(d(ir?)?)?)?)?|a(r(g(et?)?)?)?)?|i(n(_(p(a(th?)?)?)?|fo?)?)?|s(u(c(c(e(s?s)?)?)?)?)?|f(a(t(al?)?)?)?|m(a(in?)?)?|w(a(rn?)?)?|u(rl?)?)
      Setelah itu ditangani, saya bertanya-tanya apa bedanya dengan hanya menyediakan skrip tanpa menyediakan perintah untuk menjalankannya. Kalau ingin meninjau, Anda bisa mengunduh skripnya lalu menjalankannya secara terpisah. Sepertinya pernah ada cara untuk mendeteksi skrip yang dipipe versus skrip yang diunduh, tapi tampaknya tidak akan bekerja untuk skrip kecil seperti ini
    • Ada di sini [0]. Proyeknya belum dirilis, jadi masih ada bagian-bagian yang perlu dibereskan, dan fokus saat ini agak berbeda. Anda juga bisa membangun dari source dengan cargo milik Rust [1]
      [0] https://files.radicle.xyz/latest/
      [1] https://app.radicle.xyz/nodes/seed.radicle.garden/rad:z3gqcJ...
    • Ini soal mau mengambilnya atau tidak, mempercayai maintainer atau tidak. Cara instalasi bukanlah hal yang menentukan apakah maintainer bisa dipercaya, dan itu tetap berlaku meski memakai curl-bash
  • Rasanya setiap kali pasar kripto naik, saya mendengar soal Radicle. Apakah ada yang benar-benar memakainya secara serius?
    Ini langsung kena downvote. Saya bertanya serius: saya penasaran berapa anggaran yang masuk ke Radicle, berapa orang yang mengerjakannya, dan siapa yang memakainya

    • Pertanyaan yang wajar
      Saya bekerja di industri kripto dan mendapat kesan yang sama. Terakhir kali saya mendengar Radicle adalah saat bull market sebelumnya, lalu saat bear market sepi. Semua orang bilang bear market adalah waktu untuk membangun, dan Radicle jelas-jelas alat untuk developer, jadi ini cukup aneh
  • Saya penasaran apakah ada rencana mendukung use case menyediakan repository hanya untuk sekumpulan node tertentu. Rasanya ada orang-orang yang tidak ingin berada di GitHub tetapi tetap ingin melakukan kolaborasi privat

    • Ada. Di Radicle, hal seperti ini disebut repository privat. Ia tidak terlihat oleh jaringan lainnya, dan hanya dibagikan di antara peer yang dipercaya
      Namun, datanya tidak dienkripsi saat disimpan, jadi tidak bisa disimpan di node perantara yang tidak termasuk dalam kumpulan tepercaya