ไดเรกทอรี
บน Reddit ชื่ออย่าง r/opensource เป็นของชุมชนได้เพียงชุมชนเดียว และผู้ที่ควบคุมชุมชนนั้นก็ถือชื่อไว้ตลอด หากผู้ดูแลชุมชนตัดสินใจในแบบที่ผู้ใช้ไม่ชอบ ทางเลือกเดียวคือเริ่ม r/opensource2 ขึ้นมาใหม่ ชุมชนใหม่ต้องเริ่มจากผู้ติดตามเป็นศูนย์ แม้ว่าคนส่วนใหญ่ที่สมัครติดตาม r/opensource จะสนใจโอเพนซอร์ส ไม่ใช่ทีมผู้ดูแลชุดนั้นโดยเฉพาะ
แอป Bitsocial หลีกเลี่ยงปัญหานี้ด้วย ไดเรกทอรี ไดเรกทอรีคือชื่อหัวข้อ เช่น opensource ที่ชุมชนต่าง ๆ แข่งขันกันเพื่อชิง เส้นทางสั้นของชื่อนั้นจะเปิดชุมชนที่อยู่อันดับหนึ่งในขณะนั้น ชุมชนที่ดีกว่าจึงเข้ามาครองชื่อนั้นได้โดยไม่ต้องขออนุญาตใคร
ทำงานอย่างไร
- รหัสไดเรกทอรีคือชื่อหัวข้อ Seedit ใช้เส้นทางอย่าง
/s/funnyส่วน 5chan ใช้เส้นทางแบบอิมเมจบอร์ดอย่าง/g/ - ชุมชนแข่งขันกันในฐานะผู้สมัคร แต่ละไดเรกทอรีมีรายชื่อชุมชนผู้สมัคร ซึ่งแต่ละชุมชนมีที่อยู่ที่แน่นอนของตัวเอง เช่น
funny-posting.bso - ผู้สมัครที่อยู่อันดับสูงสุดจะได้เส้นทางนั้น การเปิด
/s/funnyจะแสดงผู้ชนะในปัจจุบัน - การแพ้ไม่ได้ลบสิ่งใด ชุมชนที่ไม่ได้เป็นผู้ชนะยังคงมีที่อยู่ โพสต์ และผู้ติดตามของตัวเอง และทุกคนยังเปิดชุมชนนั้นได้โดยตรง
ชื่อเป็นเพียงประตูหน้า ไม่ใช่ตัวตน
รหัสไดเรกทอรีเป็นเพียงเส้นทางสำหรับค้นพบเท่านั้น ทุกสิ่งที่ต้องคงอยู่ถาวรจะชี้ไปยังชุมชนที่แน่นอน:
- การสมัครติดตามจาก
/s/funnyคือการสมัครติดตามที่อยู่ที่แน่นอนของผู้ชนะในปัจจุบัน ตัวรหัสไดเรกทอรีเองจะไม่ถูกบันทึกเป็นการสมัครติดตาม - ลิงก์โพสต์ใช้ที่อยู่ที่แน่นอนของชุมชนเสมอ ลิงก์เก่าจึงไม่มีทางเปลี่ยนไปชี้ยังชุมชนอื่นหลังจากผู้ชนะเปลี่ยน
- เมื่อผู้ชนะเปลี่ยน Seedit จะไม่แตะต้องการสมัครติดตามที่มีอยู่ และจะถามผู้ติดตามแต่ละคนว่าจะย้ายไปยังผู้ชนะรายใหม่ เก็บไว้ทั้งสองชุมชน หรือคงชุมชนปัจจุบันไว้ การสลับอัตโนมัติเป็นการตั้งค่าที่ต้องเลือกเปิดเองในแต่ละไดเรกทอรี และเมื่อมีการสลับอัตโนมัติจะแสดงการแจ้งเตือนพร้อมตัวเลือกเลิกทำ
ดังนั้นชุมชนคู่แข่งจึงไม่ได้แย่งการสมัครติดตามของใคร สิ่งที่ชุมชนนั้นได้ไปคือชื่อ: ผู้เยี่ยมชมใหม่จะมาถึงชุมชนนั้น และผู้ติดตามเดิมจะได้ตัวเลือกที่ทำได้ในคลิกเดียว คนที่ชอบชุมชนเดิมมากกว่าก็ยังคงอยู่กับชุมชนเดิมได้
ทำไมไม่ใช้ระบบใครมาก่อนได้ชื่อก่อน
- ไม่มีการจับจองชื่อทิ้งไว้ การถือชื่อดี ๆ ไว้เพียงอย่างเดียวไม่พอ ชุมชนต้องเป็นผู้สมัครที่ดีที่สุดสำหรับชื่อนั้นต่อไป
- ไม่มีผู้ดูแลระบบคนใดเป็นผู้กำหนดชื่อ การให้ผู้ดูแลระบบจัดสรรชื่อจะสร้างอำนาจยับยั้งจากศูนย์กลางขึ้นมาใหม่ ซึ่งเป็นสิ่งที่ Bitsocial ถูกสร้างขึ้นมาเพื่อกำจัด
- คู่แข่งยังมีทางเข้าถึงผู้ชม ชุมชนคู่แข่งเล็งชื่อเดียวกัน แทนที่จะต้องเริ่มต้นใหม่ภายใต้ชื่อที่แย่กว่า
- ไคลเอนต์ทุกตัวเห็นตรงกันว่าใครเป็นผู้ชนะ Seedit จัดอันดับผู้สมัครด้วยกฎที่ให้ผลเหมือนเดิมทุกครั้ง ไคลเอนต์ทุกตัวที่อ่านสแนปช็อตไดเรกทอรีฉบับสรุปผลเดียวกันจึงแสดงผู้ชนะรายเดียวกัน Seedit จะไม่สลับไปแสดงผู้สมัครรายอื่นเพียงเพราะผู้ชนะเข้าถึงไม่ได้ชั่วคราวผ่านการเชื่อมต่อของผู้ใช้คนหนึ่ง
วิธีเลือกผู้ชนะในปัจจุบัน
ผู้สมัครถูกเผยแพร่เป็นไฟล์ JSON ในรีโพซิทอรี bitsocialnet/lists หนึ่งไฟล์ต่อหนึ่งไดเรกทอรี และชุมชนจะเข้าร่วมไดเรกทอรีได้ด้วยการส่ง pull request ไปยังไฟล์ของไดเรกทอรีนั้น นี่เป็นเพียงขั้นตอนเริ่มต้นชั่วคราว เป้าหมายคือให้การโหวตเข้ามาแทนที่ pull request ในการตัดสินผู้ชนะ
- Seedit จัดอันดับผู้สมัครของไดเรกทอรีตามคะแนน จากนั้นตามเวลาที่ถูกเพิ่มเข้ามา แล้วจึงตามที่อยู่ ไฟล์ไดเรกทอรีแต่ละไฟล์มีหมายเลขรุ่นแก้ไข และการเปลี่ยนแปลงใด ๆ ต่อผู้สมัครหรือผู้ชนะจะเผยแพร่เป็นรุ่นแก้ไขใหม่
- 5chan จัดการแข่งขันโหวตหนึ่งรายการต่อหนึ่งไดเรกทอรีด้วย
@bitsocial/pubsub-votingไคลเอนต์แลกเปลี่ยนบัตรลงคะแนนที่ลงลายเซ็นแล้วผ่าน libp2p gossipsub และคำนวณผลคะแนนเอง โดยไม่มีเซิร์ฟเวอร์ใดนับคะแนน การโหวตต้องถือ 5chan Pass ซึ่งเป็นโทเคนที่โอนไม่ได้ และผู้ถือแต่ละคนได้หนึ่งเสียง การโหวตให้บอร์ดที่ยังไม่อยู่ในรายชื่อถือเป็นการเสนอชื่อบอร์ดนั้น ขณะนี้การแข่งขันยังรันอยู่บนเทสต์เน็ต Base Sepolia และจนกว่าจะย้ายออกจากเทสต์เน็ต ผลคะแนนจะแสดงให้เห็นแต่ไม่ได้เปลี่ยนลำดับในรายชื่อ
โปรโตคอลหรือแอป?
ไดเรกทอรีไม่ได้เป็นส่วนหนึ่งของ PKC ซึ่งเป็นเลเยอร์แบบเพียร์ทูเพียร์ที่จัดเก็บและส่งต่อชุมชน แต่เป็นธรรมเนียมที่ไคลเอนต์นำมาใช้อยู่เหนือเลเยอร์นั้น ควบคู่ไปกับรายการเริ่มต้นและการค้นหา ดู การค้นพบเนื้อหา ไคลเอนต์สามารถอ่านไฟล์ไดเรกทอรีชุดเดียวกัน เผยแพร่ไฟล์ของตัวเอง หรือไม่ใช้ไดเรกทอรีเลยก็ได้ และผู้ใช้ยังคงเปิดชุมชนใดก็ได้ด้วยที่อยู่ของชุมชนนั้น