2 คะแนน โดย GN⁺ 2024-03-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

โปรโตคอลและสแตก Radicle Heartwood

  • Radicle Heartwood คือเวอร์ชันที่สามของโปรโตคอล Radicle ซึ่งเป็นสแตกสำหรับการทำงานร่วมกันด้านโค้ดและการเผยแพร่แบบเพียร์ทูเพียร์
  • รีโพซิทอรีนี้มีการอิมพลีเมนต์ Heartwood แบบครบชุด รวมถึงอินเทอร์เฟซบรรทัดคำสั่งที่ใช้งานง่าย (rad) และเน็ตเวิร์กดีมอน (radicle-node)
  • Radicle ถูกออกแบบมาเพื่อใช้แทน code forge อย่าง GitHub และ GitLab โดยเป็นทางเลือกที่ปลอดภัย กระจายศูนย์ และแข็งแกร่ง ซึ่งช่วยรักษาอธิปไตยและเสรีภาพของผู้ใช้

ข้อกำหนดในการติดตั้ง

  • ต้องใช้ระบบปฏิบัติการที่เป็น Linux หรือ Unix-based
  • ต้องใช้ Git เวอร์ชัน 2.34 ขึ้นไป
  • ต้องใช้ OpenSSH เวอร์ชัน 9.1 ขึ้นไป และ ssh-agent

ติดตั้งจากไบนารี

  • ต้องมี curl และ tar
  • หากต้องการติดตั้งไบนารีรีลีสล่าสุด ให้รันคำสั่งต่อไปนี้: sh <(curl -sSf https://radicle.xyz/install)

ติดตั้งจากซอร์ส

  • ต้องมี Rust toolchain
  • ภายในรีโพซิทอรีนี้ สามารถรันคำสั่งต่อไปนี้เพื่อติดตั้งสแตก Radicle จากซอร์สได้: cargo install --path radicle-cli --force --locked cargo install --path radicle-node --force --locked cargo install --path radicle-remote-helper --force --locked
  • หรือจะติดตั้งโดยตรงจาก seed node ก็ได้: cargo install --force --locked --git https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git \ radicle-cli radicle-node radicle-remote-helper

การรัน

  • มีไฟล์ยูนิต Systemd สำหรับ system daemon และ HTTP daemon อยู่ในโฟลเดอร์ /systemd ซึ่งสามารถใช้เป็นจุดเริ่มต้นสำหรับการปรับแต่งเพิ่มเติมได้
  • นอกจากนี้ ยังมี Dockerfile รวมอยู่ในทั้งสอง crate
  • วิธีรันในโหมดดีบัก โปรดดู HACKING.md

การมีส่วนร่วม

  • สำหรับคำแนะนำเบื้องต้นเกี่ยวกับการมีส่วนร่วมใน Radicle โปรดดู CONTRIBUTING.md และ HACKING.md

ไลเซนส์

  • Radicle เผยแพร่ภายใต้เงื่อนไขของ MIT License และ Apache License (Version 2.0)
  • รายละเอียดเพิ่มเติมโปรดดู LICENSE-APACHE และ LICENSE-MIT

ความเห็นของ GN⁺

  • Radicle เป็นแพลตฟอร์มทำงานร่วมกันด้านโค้ดแบบกระจายศูนย์ที่มุ่งเสริมอำนาจอธิปไตยเหนือโค้ดของผู้ใช้ในฐานะทางเลือกแทนบริการโฮสต์โค้ดแบบรวมศูนย์ ซึ่งมีคุณค่าอย่างมากต่อการให้ผู้พัฒนาควบคุมความเป็นเจ้าของข้อมูลและความเป็นส่วนตัวได้
  • เครือข่ายแบบกระจายศูนย์ที่ Radicle มอบให้ไม่ต้องพึ่งพาเซิร์ฟเวอร์กลาง จึงมีข้อดีคือไม่ต้องกังวลเรื่องบริการล่มหรือการเซ็นเซอร์ อย่างไรก็ตาม สิ่งนี้อาจส่งผลต่อความเสถียรและความเร็วของเครือข่าย และอาจกระทบต่อประสบการณ์ผู้ใช้ในทางลบได้เช่นกัน
  • Radicle เป็นโครงการโอเพ่นซอร์สที่พัฒนาอย่างต่อเนื่องผ่านการมีส่วนร่วมของชุมชนนักพัฒนา ซึ่งมีข้อดีคือสามารถตอบสนองต่อการแก้ปัญหาทางเทคนิคหรือการเพิ่มฟีเจอร์ใหม่ได้อย่างรวดเร็ว
  • ก่อนนำ Radicle มาใช้ ควรพิจารณาความเข้ากันได้กับบริการแบบรวมศูนย์เดิม ข้อกำหนดด้านความปลอดภัยของโครงการ และอุปสรรคในการนำไปใช้ภายในทีม
  • โครงการอื่นที่มีฟังก์ชันคล้ายกัน ได้แก่ GitLab เวอร์ชัน self-hosting หรือทางเลือกโอเพ่นซอร์สอย่าง Gitea ซึ่งช่วยให้ผู้ใช้จัดการโค้ดบนเซิร์ฟเวอร์ของตนเองได้

1 ความคิดเห็น

 
GN⁺ 2024-03-06
ความคิดเห็นจาก Hacker News
  • มีคำทักทายจากผู้ร่วมก่อตั้งโปรเจกต์ พร้อมลิงก์อธิบายวิธีการทำงานของโปรโตคอล เอกสารยังอยู่ระหว่างจัดทำ

    สวัสดีทุกคนใน Hacker News ผมเป็นผู้ร่วมก่อตั้งของโปรเจกต์นี้ หากคุณสงสัยว่าโปรโตคอลทำงานภายในอย่างไร ให้เริ่มจากที่นี่: เอกสาร Radicle แต่อย่างไรก็ดี เอกสารยังอยู่ระหว่างจัดทำ

  • มีความเห็นว่าโปรเจกต์นี้ดูเหมาะกับเป้าหมาย แต่ git เองก็เป็นโอเพนซอร์สและเป็น P2P อยู่แล้ว โดยสามารถเชื่อมต่อกับเซิร์ฟเวอร์อื่นเพื่อดึงหรือรวมโค้ดได้โดยตรงโดยไม่ต้องมีไบนารีเพิ่มเติม สิ่งที่ git ยังขาดคือ code issues, wiki, discussions, GitHub Pages และที่สำคัญที่สุดคือเครือข่ายโปรไฟล์นักพัฒนา จำเป็นต้องมีวิธีเก็บ metadata ของโปรเจกต์ไว้ใน .git เอง และอาจต้องมี reference แยกต่างหากเพื่อไม่ให้ wiki กับ issues ปะปนกัน

    โปรเจกต์นี้ดูเหมือนถูกออกแบบมาได้เหมาะกับเป้าหมาย แต่ตัว git เองก็เป็นโอเพนซอร์สและเป็น P2P อยู่แล้ว คุณสามารถเชื่อมต่อไปยัง git server อื่นและใช้คำสั่ง git เพื่อดึงหรือรวมโค้ดได้โดยตรง โดยไม่ต้องติดตั้งไบนารีแยกต่างหาก สิ่งที่ git ขาดไปคือ code issues, wiki, discussions, GitHub Pages และที่สำคัญที่สุดคือเครือข่ายโปรไฟล์นักพัฒนา เราต้องการวิธีที่จะรวม metadata ของโปรเจกต์ไว้ใน .git บางทีอาจต้องมี reference แยกอิสระแบบเดียวกับ git notes เอกสาร git-notes

  • การได้เฝ้าดู Radicle พัฒนามาเป็นเรื่องที่น่าสนใจมาก หลังจากเข้าร่วมเวิร์กช็อปที่ Protocol Berg 2023 ก็รู้สึกว่าทีมได้สร้างสิ่งใหม่ที่ทรงพลังมากขึ้นมา แง่มุมด้านการทำงานร่วมกันของโปรโตคอลที่ออกแบบแบบ local-first ก็น่าสนใจที่สุด เพราะสามารถส่ง patch และ issue ได้แม้ไม่มีอินเทอร์เน็ต และทีมจะไม่ได้รับผลกระทบเมื่อ GitHub มีปัญหา

    ตลอด 5 ปีที่ผ่านมา การได้เฝ้าดู Radicle พัฒนาขึ้นมาเป็นเรื่องที่น่าสนใจมาก ผมได้เข้าร่วมเวิร์กช็อปในงาน Protocol Berg 2023 และคิดว่าพวกเขาสร้างสิ่งที่ทั้งทรงพลังและใหม่จริง ๆ ขึ้นมา โดยเฉพาะอย่างยิ่ง แง่มุมด้านการทำงานร่วมกันของโปรโตคอลก็ถูกออกแบบแบบ local-first เช่นกัน ซึ่งเป็นส่วนที่ผมว่าน่าสนใจที่สุด เพราะคุณสามารถส่ง patch และ issue ได้แม้ไม่มีอินเทอร์เน็ต และเมื่อ GitHub มีปัญหา ทีมก็จะไม่ได้รับผลกระทบ

  • มีคำถามว่าทำไมจึงใช้ทั้งไลเซนส์ MIT และ Apache พร้อมกัน และ MIT license จะเปิดช่องให้เลี่ยงภาระเพิ่มเติมที่ Apache license กำหนดไว้หรือไม่ โดยเฉพาะข้อกำหนดเรื่องการให้สิทธิ์สิทธิบัตร MIT license ไม่ได้กล่าวถึงสิทธิบัตร จึงทำให้สงสัยว่าทำไมไม่ใช้ MIT license เพียงอย่างเดียว

    ผมสงสัยว่าทำไมถึงใช้ทั้งไลเซนส์ MIT และ Apache ไม่ได้วิจารณ์นะครับ ผมอาจเข้าใจผิดก็ได้ แต่ MIT license ไม่ได้เปิดทางให้เลี่ยงภาระเพิ่มเติมที่ Apache license กำหนดไว้หรือ โดยเฉพาะในส่วนของข้อกำหนดการให้สิทธิ์สิทธิบัตร MIT license ไม่ได้พูดถึงสิทธิบัตรเลย ดังนั้นจึงสงสัยว่าทำไมไม่ใช้ MIT license อย่างเดียว

  • มีข้อสงสัยว่าคนทั่วไปจะค้นพบ repository เหล่านี้ได้ง่ายแค่ไหน เพราะดูเหมือนไม่มีไฟล์ robots.txt จึงน่าจะถูก crawl โดย search engine ได้ และเมื่อค้นใน Google กับ DDG ก็พบผลลัพธ์จริง แม้อันดับยังไม่สูงนักแต่ก็อาจดีขึ้นได้ นอกจากนี้เครื่องมือสำหรับผนวกรวมการรองรับ CI (continuous integration) ก็น่าจะน่าสนใจด้วย ต้องการเครื่องมือที่ดีกว่าสำหรับจำกัดให้รับเฉพาะ push จากตัวตนที่เชื่อถือได้ และยังมีการพูดถึง artifact repository โดยชี้ว่า Radicle ไม่จำเป็นต้องแก้ทุกอย่าง โดยเฉพาะการแชร์ไบนารีขนาดใหญ่ผ่านเครือข่ายกระจายศูนย์ซึ่งอาจถูกนำไปใช้ผิดวัตถุประสงค์ได้อย่างรวดเร็ว

    ผมสงสัยว่า repository เหล่านี้จะถูกค้นพบได้ง่ายแค่ไหนสำหรับคนทั่วไป ดูเหมือนว่าจะไม่มีไฟล์ robots.txt ดังนั้น search engine น่าจะ crawl ได้ และเมื่อค้นใน Google กับ DDG ก็มีผลลัพธ์ขึ้นมาจริง ๆ แม้อันดับยังไม่สูงนัก แต่ถ้าไม่ใช้ตัวกรองเฉพาะไซต์ อันดับก็น่าจะดีขึ้นได้ เครื่องมือที่ผนวกรวมการรองรับ CI (continuous integration) ก็น่าจะน่าสนใจเช่นกัน เราต้องการเครื่องมือที่ดีกว่านี้เพื่อจำกัดให้รับเฉพาะ push จากตัวตนที่เชื่อถือได้ และสุดท้ายยังมีการพูดถึง artifact repository ซึ่งผมคิดว่า Radicle ไม่จำเป็นต้องแก้ทุกเรื่อง โดยเฉพาะการแชร์ไบนารีขนาดใหญ่ผ่านเครือข่ายแบบกระจายศูนย์ เพราะมันอาจถูกนำไปใช้ในทางที่ไม่พึงประสงค์ได้อย่างรวดเร็ว

  • มีการแสดงความยินดีกับการเปิดตัวโปรเจกต์ พร้อมบอกว่าตื่นเต้นที่ได้ติดตามและเห็นโปรเจกต์เติบโตขึ้นมาก รวมถึงถามว่าจะย้ายโปรเจกต์ที่อยู่บน GitHub ในปัจจุบันอย่างไร และมี mirror mode สำหรับช่วงทดสอบหรือไม่

    ขอแสดงความยินดีกับการเปิดตัว! การได้ติดตามโปรเจกต์นี้และเห็นว่ามันเติบโตขึ้นมากแค่ไหนเป็นเรื่องที่น่าตื่นเต้นจริง ๆ โปรเจกต์ที่อยู่บน GitHub ตอนนี้จะย้ายมาได้อย่างไร และมี mirror mode สำหรับใช้ระหว่างการทดสอบไหม?

  • เอกสารระบุว่าควรเผยแพร่เฉพาะ repository ที่ตนเองเป็นเจ้าของหรือดูแล และควรสื่อสารกับผู้ดูแลคนอื่นเพื่อหลีกเลี่ยงการสร้างตัวตน repository ซ้ำ แต่มีโอกาสสูงที่ผู้คนจะไม่อ่านเอกสารหรือไม่ใส่ใจกับคำเตือนนี้ หน้าโฮมเพจอธิบายวิธี push โค้ด แต่คำขอสำคัญนี้กลับอยู่ในคู่มือผู้ใช้เท่านั้น ซึ่งอาจเป็นปัญหาได้

    ในเอกสารมีการระบุไว้ว่าสิ่งสำคัญคือควรเผยแพร่เฉพาะ repository ที่คุณเป็นเจ้าของหรือเป็นผู้ดูแล และควรสื่อสารกับผู้ดูแลคนอื่นเพื่อไม่ให้มีการตั้งค่าตัวตนของ repository ซ้ำกัน แต่คนจำนวนมากมักไม่อ่านเอกสารหรือไม่ใส่ใจกับคำขอแบบนี้ จึงมีโอกาสสูงที่จะถูกมองข้าม หน้าโฮมเพจอธิบายวิธี push โค้ด แต่คำขอสำคัญนี้กลับหาได้เฉพาะในคู่มือผู้ใช้ ซึ่งอาจกลายเป็นปัญหาได้

  • อยากให้มีการนิยามคำว่า "peer to peer" หรือ "distributed" ให้ชัดเจน เพราะเมื่อถูกใช้เป็นคำฮิต คำเหล่านี้อาจคลุมเครือมาก

    ผมอยากให้ผู้คนนิยามคำว่า "peer to peer" หรือที่พบบ่อยกว่านั้นคือ "distributed" ให้ชัดเจน คำเหล่านี้อาจคลุมเครือมากเมื่อถูกใช้เป็นคำฮิต

  • มีการแสดงความยินดีกับการเปิดตัว พร้อมบอกว่าสิ่งนี้ทำให้นึกถึงโปรเจกต์คล้ายกันอย่าง nest.pijul.com ที่ใช้ pijul แทน git

    ขอแสดงความยินดีกับการเปิดตัว! สิ่งนี้ทำให้ผมนึกถึงโปรเจกต์คล้ายกันอย่าง nest.pijul.com ที่ใช้ pijul แทน git

  • เป็นการพูดนอกเรื่องเล็กน้อย โดยบอกว่าสิ่งนี้ทำให้นึกถึง NESticle

    พูดนอกเรื่องนิดหน่อย: สิ่งนี้ทำให้ผมนึกถึง NESticle วิกิ NESticle