BlueSky ทำงานอย่างไร
(steveklabnik.com)- BlueSky เป็นแอปไมโครบล็อกกิงที่คล้ายกับ Twitter และ Mastodon แต่เป้าหมายที่ใหญ่กว่าคือการพิสูจน์ว่าสามารถสร้างแอปโซเชียลแบบกระจายศูนย์ขนาดใหญ่บน AT Protocol(atproto) ได้หรือไม่
- atproto ไม่ใช่บล็อกเชน·DAO·NFT แต่เป็นโปรโตคอลแบบเฟเดอเรชันที่ใช้การเข้ารหัสและ Merkle tree เป็นต้น โดยให้บันทึกที่ผู้ใช้ลงลายเซ็นถูกประมวลผลแยกกันระหว่าง PDS, Relay และ App View
- ความสามารถในการขยายระบบมาจากโครงสร้างที่ Personal Data Server(PDS) ของผู้ใช้ไม่ต้องส่งโพสต์ไปยังผู้ติดตามทุกคนโดยตรง แต่ให้ Relay รวบรวมข้อมูลเครือข่ายและให้บริการเป็น firehose แทน
- การกลั่นกรองถูกแยกตามโมเดล “speech vs reach” โดยแยกการทำสำเนาคอนเทนต์ออกจากการควบคุมการมองเห็น ทำให้ labeler, feed generator และ App View สามารถใช้ตัวกรองและการบล็อกได้
- DID ที่เสถียรและ handle ที่อิงโดเมนช่วยให้บัญชีย้ายได้ แต่บริการแปลความ
did:plcที่ BlueSky ดำเนินการอยู่ยังคงเป็นประเด็นเรื่องความเป็นศูนย์กลาง
ความสัมพันธ์ระหว่าง BlueSky กับ atproto
- ปัจจุบัน BlueSky ทำงานเป็น แอปไมโครบล็อกกิง แต่ในภาพรวมทั้งหมด มันคือแอปแรกเริ่มที่ใช้พิสูจน์ความเป็นไปได้ของ Authenticated Transfer Protocol หรือ atproto
- เว็บไซต์ของ BlueSky ระบุว่า “โซเชียลมีเดียสำคัญเกินกว่าจะถูกควบคุมโดยบริษัทเพียงไม่กี่แห่ง และเรากำลังสร้างรากฐานแบบเปิดของ social internet ที่ทุกคนสามารถร่วมสร้างอนาคตได้”
- เนื่องจาก BlueSky เป็นบริษัท จึงอาจมีมุมมองเชิงกังขาว่า “ของที่ไม่ควรถูกควบคุมโดยบริษัทกลับถูกสร้างโดยบริษัท” แต่หัวใจของการออกแบบอยู่ที่ atproto มากกว่าตัวแอป
- atproto คือ โปรโตคอลแบบเฟเดอเรชัน สำหรับแอปโซเชียลแบบกระจายศูนย์ขนาดใหญ่
โปรโตคอลแบบกระจายศูนย์ที่ไม่ใช่คริปโต
- atproto อาจดูคล้ายคริปโตเคอร์เรนซีเพราะใช้คำว่า “เครือข่ายแบบกระจายศูนย์” และ “โปรโตคอล” แต่ ไม่ใช่คริปโตเคอร์เรนซี
- มันไม่ใช่บล็อกเชน, DAO หรือ NFT และใช้เพียงบางเทคโนโลยีอย่างการเข้ารหัสกับ Merkle tree เท่านั้น
โครงสร้างพื้นฐานของ atproto
- atproto ใช้ โครงสร้างแบบเฟเดอเรชัน ที่ให้หลายฝ่ายดูแลส่วนต่าง ๆ ของระบบและสื่อสารกัน
- โดยคำนึงถึงฐานผู้ใช้ขนาดใหญ่ จึงออกแบบให้ฝ่ายที่รับภาระได้มากรับหน้าที่มากขึ้น และลดภาระของฝ่ายที่ไม่สามารถรองรับโหลดได้
- ณ เวลาที่เขียน BlueSky มีผู้ใช้เกิน 5 ล้านคน ในสัปดาห์นั้น และถูกประเมินว่ามีเสถียรภาพมากกว่า Twitter ยุคแรกมาก
- ปัจจุบัน atproto เป็นระบบแบบ เปิด 100% และยังไม่มีฟีเจอร์อย่างข้อความส่วนตัว
- เพราะการทำฟีเจอร์แบบปิดให้ถูกต้องในระบบเฟเดอเรชันทำได้ยาก จึงเลือกที่จะยังไม่ปล่อยฟีเจอร์ที่มีข้อจำกัดร้ายแรง และรอให้ทำได้อย่างถูกต้องแทน
- ตอนนี้จึงเหมาะกับการใช้งานเฉพาะเนื้อหาที่เปิดเผยได้
record, repository, App View, Relay
- ผู้ใช้สร้าง record ที่ลงลายเซ็นด้วยวิธีเข้ารหัส และใช้ลายเซ็นนี้ยืนยันผู้เขียน
- record เป็นไปตามสคีมาที่เรียกว่า Lexicon
- record ถูกเก็บใน repository ซึ่งทำงานเป็นบริการที่เปิดให้เข้าถึงผ่าน HTTP และ WebSocket
- บริการประเภทนี้มักถูกเรียกว่า PDS(Personal Data Server)
- ผู้ใช้สามารถรัน PDS เอง หรือใช้ PDS ที่ผู้อื่นโฮสต์ให้ก็ได้
- แอปพลิเคชันจะอ่าน record ที่เก็บอยู่บนเครือข่ายแล้วสร้างฟังก์ชันการทำงานบนข้อมูลนั้น
- เนื่องจากบริการประเภทนี้เปิดเผยมุมมองข้อมูลแบบเฉพาะ จึงเรียกว่า App View
- การสร้างแอปหมายถึงการนิยาม Lexicon อ่าน record ที่ใช้ Lexicon นั้น และมองข้ามส่วนที่เหลือ
- การให้ PDS แจ้งเตือนกันโดยตรงมีปัญหาเรื่องการขยายระบบอย่างมาก
- หากทุกครั้งที่มีโพสต์ใหม่ต้องส่งตรงไปยัง repository ของผู้ติดตามทุกคน จะไม่มีประสิทธิภาพและทำให้ค่าใช้จ่ายของ repository ยอดนิยมสูงมาก
- Relay ถูกใช้เพื่อลดปัญหานี้ โดยรวบรวมข้อมูลเครือข่ายแล้วเปิดให้ใช้งานเป็น firehose
- App View จริงจะดู Relay แทนที่จะดู repository โดยตรง
- เมื่อผู้เผยแพร่โพสต์ข้อความ repository จะไปแจ้ง Relay และผู้ติดตามจะเห็นผลลัพธ์ที่ App View กรองจากเอาต์พุตของ Relay
- Relay อาจมีขนาดใหญ่และมีค่าใช้จ่ายสูง แต่ก็อาจจินตนาการถึง Relay ขนาดเล็กกว่าที่เผยแพร่เฉพาะกลุ่มย่อยของผู้ใช้บางส่วนได้เช่นกัน
โมเดลการกลั่นกรอง “speech vs reach”
- เนื่องจาก atproto เป็นโปรโตคอลสำหรับแอปโซเชียล จึงไม่ได้พิจารณาแค่วิธีเชื่อมโยงผู้คน แต่รวมถึง วิธีตัดการเชื่อมโยง ด้วย
- โมเดลการกลั่นกรองของ BlueSky แบ่งเป็น speech vs reach
- ชั้น speech มีหน้าที่ทำสำเนาคอนเทนต์ไปทั่วเครือข่ายโดยไม่สนความหมายของเนื้อหา
- ชั้น reach ให้เครื่องมือจำกัดขอบเขตการเข้าถึงของสิ่งที่ผู้ใช้ไม่ต้องการเห็น
- การบอกว่า BlueSky “ไม่กลั่นกรอง” หรือ “ให้ความสำคัญแค่เสรีภาพในการพูด” จึงไม่ถูกต้องนัก
- เครื่องมือกลั่นกรองถูกใส่ไว้ในตัวโปรโตคอลเอง และสามารถทำงานกับคอนเทนต์ของแอปอื่นที่ไม่ใช่ BlueSky ได้ด้วย
- ผู้ใช้ไม่จำเป็นต้องยึดตามทางเลือกการกลั่นกรองของคนอื่น หรือการไม่กลั่นกรองของคนอื่น แต่สามารถเลือกผู้กลั่นกรองของตนเองได้
Feed generator
- ใน atproto ฟีดถูกแยกออกเป็นบริการต่างหากที่เรียกว่า feed generator
- feed generator รับ firehose ที่ Relay สร้างขึ้น แล้วกรองและจัดเรียงคอนเทนต์ตามเกณฑ์ที่ต้องการเพื่อแสดงเป็นรายการ
- ผู้ใช้สามารถแชร์ฟีดที่ตัวเองสร้างกับผู้ใช้อื่นได้
- ตัวอย่างฟีด:
- Quiet Posters: แสดงโพสต์จากคนที่ไม่ได้โพสต์บ่อย
- the ‘Gram: แสดงเฉพาะโพสต์ที่มีรูปภาพแนบ
- My Bangers: แสดงโพสต์ยอดนิยมของตัวเอง
- จุดแข็งอย่างหนึ่งของ BlueSky คือผู้ใช้สามารถสร้าง อัลกอริทึมฟีด ของตัวเองและแชร์ได้อย่างง่ายดาย
- ฟีดเป็นฟีเจอร์ที่ถูกเพิ่มเข้ามาใน atproto ค่อนข้างไม่นาน จึงอาจยังไม่สมบูรณ์และอาจเปลี่ยนแปลงได้ในอนาคต
Labeler และการกลั่นกรองระดับเครือข่าย
- Labeler คือบริการที่ติด label ให้กับคอนเทนต์หรือบัญชี
- ผู้ใช้สามารถติดตาม labeler บางตัวและทำให้ประสบการณ์การใช้งานเปลี่ยนไปตาม label ของโพสต์ได้
- labeler สามารถทำงานได้ตามที่ผู้ดูแลต้องการ
- รันอัลกอริทึมอัตโนมัติกับโพสต์ได้
- ให้มนุษย์อนุมัติหรือปฏิเสธโดยตรงได้
- ใช้เป็น blocklist หรือฟิลเตอร์ NSFW ได้
- แม้จะมีฟังก์ชัน label อยู่แล้ว แต่ ณ เวลาที่เขียนยังไม่ชัดเจนว่าผู้ใช้จะรัน labeler เองได้หรือไม่
- BlueSky รัน labeler ของตัวเอง
- ยังไม่ทราบการปล่อยใช้งานภายนอก
- เมื่อผสาน feed, App View และ labeler เข้าด้วยกัน ผู้ใช้จะสามารถเลือก ประสบการณ์การกลั่นกรอง ได้ทั้งในและนอกแอป
- ในฟีดหนึ่งอาจดูเฉพาะ SFW และอีกที่หนึ่งอาจอนุญาตคอนเทนต์ NSFW
- สามารถสร้างและแชร์ blocklist ได้
- เนื่องจากเครื่องมือกลั่นกรองทำงานในระดับ โปรโตคอล ไม่ใช่ระดับแอป จึงสามารถใช้ labeler เดียวกันกับแอปอื่นบน atproto ได้ด้วย
- หากมีการสร้าง Instagram clone บน atproto ก็สามารถใช้ labeler แบบ blocklist เดียวกันได้
- หากต้องการบล็อกผู้ใช้ที่ถูกบล็อกในที่หนึ่งให้ถูกบล็อกทุกที่ก็ทำได้
ความต่างจากโมเดลอินสแตนซ์แบบ Mastodon
- โมเดลของ atproto ต่างจากแนวทางแบบ Mastodon ที่มี “บัญชี” อยู่ใน “อินสแตนซ์” ใดอินสแตนซ์หนึ่ง
- คำถามอย่าง “ถ้าอินสแตนซ์ของฉันถูก defederate จะเกิดอะไรขึ้น” จึงนำมาใช้ตรง ๆ ได้ยาก
- แม้จะยังสามารถบรรลุเป้าหมายคล้ายกันได้ เช่น ไม่สนใจโพสต์ที่มาจาก PDS บางแห่งที่ไม่ชอบ
- แต่การตัดสินใจนั้นไม่ใช่ให้เจ้าของเซิร์ฟเวอร์ตัดสินแทนบัญชีของผู้ใช้ แต่เป็น ทางเลือกของผู้ใช้เอง
DID, handle และการย้ายบัญชี
- แกนกลางของตัวตนใน atproto คือ DID(Decentralized Identifier)
- ตัวอย่าง DID มีรูปแบบ
did:plc:3danwc67lo7obz2fmdg6jxcr
- ตัวอย่าง DID มีรูปแบบ
- ตัวตนที่ผู้ใช้เห็นจริงจะใช้ handle ร่วมด้วย โดย handle คือชื่อโดเมน
- เช่น
@steveklabnik.com - ผู้สมัครใช้ BlueSky สามารถรับ handle ในรูปแบบ
@username.bsky.socialได้
- เช่น
- เนื่องจาก DID มีความเสถียร แม้จะเปลี่ยน handle จาก
@steveklabnik.bsky.socialเป็น@steveklabnik.comก็ไม่กระทบผู้ติดตาม และใน UI จะเปลี่ยนแค่ handle เท่านั้น - หากต้องการใช้โดเมนเป็น handle จะต้องนำ DID ที่ PDS สร้างขึ้นไปเพิ่มเป็น TXT record ใน DNS ของโดเมนนั้น
- แม้ผู้ใช้ที่ไม่รู้จัก DNS ก็ยังสามารถจดโดเมนและตั้งเป็น handle ได้โดยไม่ต้องมีความรู้เชิงเทคนิค ผ่านความร่วมมือของ BlueSky กับ NameCheap
- ความสามารถในการย้ายบัญชีอิงกับ DID และลายเซ็นเข้ารหัส
- คอนเทนต์ที่สร้างโดยผู้ใช้ DID ใด DID หนึ่งจะถูกลงลายเซ็นและทำสำเนาไปทั่วเครือข่าย
- หากจะ “ปิดบัญชี” จำเป็นต้องบังคับไม่ให้ผู้ใช้ใช้กุญแจที่ตนถืออยู่ ซึ่งตามการออกแบบเครือข่าย ฝ่ายอื่นไม่สามารถเข้าถึงกุญแจนั้นได้
- แม้ PDS จะล่ม ก็ยังสามารถ backfill เนื้อหาจากเครือข่ายและแจ้งว่ามีการย้ายไปยัง PDS ใหม่ได้
ประเด็นของ did:web และ did:plc
- BlueSky รองรับ DID สองแบบ
did:web: วิธีที่อิงชื่อโดเมนdid:plc: วิธีเฉพาะที่ BlueSky พัฒนาขึ้นเอง
did:plcในที่นี้plcหมายถึง “placeholder” และ BlueSky มีแผนจะรองรับมันต่อไปdid:plcมีจุดอ่อนตรงที่ต้องอาศัยบริการที่ BlueSky เป็นผู้ดำเนินการเพื่อแปลความข้อมูลให้ถูกต้อง- ตัวอย่างการค้นหาดูได้ที่ plc.directory
- ด้วยโครงสร้างนี้จึงมีเสียงวิจารณ์ว่า BlueSky อาจแบนผู้ใช้ได้เข้มข้นกว่าที่การออกแบบเครือข่ายเปิดโอกาสไว้แต่เดิม
- อย่างไรก็ดี ก็มีเหตุผลที่มองว่าปัญหานี้ยังไม่ถึงขั้นร้ายแรง
- หากไม่ต้องการก็ใช้
did:webได้ - ระบบถูกออกแบบให้ย้ายได้หากมีระบบที่ดีกว่าเกิดขึ้น
- ในอนาคตอาจย้าย governance ของ
did:plcไปสู่โมเดลฉันทามติ - องค์กรอื่นอาจเปิดบริการ
did:plcของตนเองและให้ผู้ใช้เลือกใช้ได้
- หากไม่ต้องการก็ใช้
วิธีที่ BlueSky อยู่บน atproto
- BlueSky คือแอปพลิเคชันที่สร้างอยู่บนเครือข่าย atproto
- BlueSky รัน App View และ เว็บแอปพลิเคชัน ที่ใช้งาน App View นี้
- นอกจากนี้ยังรัน PDS สำหรับผู้ใช้ที่สมัครผ่านเว็บแอป รวมถึงรัน Relay ที่ให้ PDS เหล่านั้นสื่อสารกัน
- BlueSky ออก Lexicon อยู่สองประเภท
com.atproto.*: งานระดับล่างที่จำเป็นต่อแอปใด ๆ บนเครือข่ายapp.bsky.*: งานที่เฉพาะเจาะจงกับ BlueSky
- เป้าหมายของผลิตภัณฑ์ BlueSky คือทำให้ผู้ใช้ใช้งานได้โดยไม่ต้องรู้รายละเอียดทางเทคนิคเหล่านี้
- เพราะไม่มีอินสแตนซ์ จึงไม่มีขั้นตอนให้เลือกอินสแตนซ์เพื่อสร้างบัญชี
- แม้โฮสต์จะล่มก็ย้ายได้ และผู้ติดตามไม่จำเป็นต้องรับรู้เรื่องนี้
การสร้างแอปใหม่บน atproto
- แอปบน atproto เริ่มต้นจากการสร้าง Lexicon
- หลังจากนั้นจึงรัน App View ที่ประมวลผลข้อมูลในเครือข่ายซึ่งเกี่ยวข้องกับ Lexicon นั้น
- แอปจะต้องเปิดทางให้ผู้ใช้สามารถเขียนข้อมูลลงใน PDS ของตัวเองโดยใช้ Lexicon ดังกล่าวได้
การแยกส่วนสำคัญในเชิงออกแบบ
- การแยกบทบาทระหว่าง atproto กับ BlueSky เป็นองค์ประกอบสำคัญของการออกแบบ
- “killer app” อย่าง BlueSky ทำให้เครือข่ายมีเหตุผลให้คนอยากใช้งาน
- ตัว BlueSky เองก็ทำหน้าที่เป็นการ dogfooding เพื่อพิสูจน์ว่าสามารถสร้างแอปจริงบน atproto ได้หรือไม่
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูเหมือนออกแบบมาได้ดีมาก และน่าจะช่วยแก้ ปัญหาใหญ่ ๆ ของ ActivityPub ได้บางส่วน
เมื่อก่อนผมไม่ได้สนใจ Bluesky เท่าไร แต่ตอนนี้เริ่มคิดว่าจะลองสร้างบัญชีดู
แทนที่จะใช้โปรโตคอลเดิมที่ทุกคนใช้กันอยู่แล้วอย่าง
user@hostและ WebFinger กลับเลือก “ใช้โดเมนเป็นตัวตน” และไม่ได้อ้างอิงวิธีที่ ACME จัดการไว้แล้วในเรื่องใบรับรอง จนเกิดกรณีมีคนเอาโดเมนs3.amazon.comไปใช้บน Bluesky https://www.reddit.com/r/programming/comments/138hlf2/s3_dom...นอกจากนี้ยังสร้างโปรโตคอลเรียกใช้งานระยะไกลใหม่ชื่อ
XRPCและใช้สคีมาข้อมูลแบบสร้างโค้ดชื่อLexiconซึ่งข้อดีเมื่อเทียบกับ protobuf หรือ jsonld ก็ยังไม่ชัด นอกจากความใหม่เป็นเรื่องยากที่จะเชื่อถือ “เครือข่ายเปิด” ที่ดูเหมือนไม่ยอมเคารพหรือพูดคุยกับระบบนิเวศอื่น ๆ อยู่เรื่อย ๆ และก็น่าสงสัยด้วยว่าการปฏิเสธองค์ความรู้ร่วมกันแบบนี้ทำให้มีข้อผิดพลาดพื้น ๆ ในการออกแบบแทรกเข้ามาอีกมากแค่ไหน
ไม่มีแรงจูงใจทางสังคมให้ใครมาติดตั้งและดูแลรีเลย์กับบริการม็อดเดอเรชันที่แยกออกจากคอมมูนิตี้จริง สิ่งที่เหลืออยู่จึงมีแต่แรงจูงใจทางการเงิน เช่น บริการแบบเสียเงิน การแทรกโฆษณา การขุดข้อมูล และการบิดเบือนข้อมูล
เมื่อการกระจายข้อมูลและการม็อดเดอเรชันถูกรวมศูนย์ ทั้งต้นทุนโฮสติ้งและต้นทุนบุคลากรก็จะกลายเป็นธุรกิจขนาดใหญ่ และในทางปฏิบัติจะมุ่งไปในทางที่ขัดขวางไม่ให้คนอื่นนอกจาก Bluesky ดำเนินรีเลย์หรือบริการม็อดเดอเรชันของตัวเอง
แม้ ActivityPub จะมีข้อเสีย แต่แนวทางอย่าง “คอมมูนิตี้ที่มีประตู” ทำให้ผู้ใช้รู้สึกผูกพันกับเซิร์ฟเวอร์ และทำให้ผู้ดูแลระบบกับม็อดเดอเรเตอร์ภูมิใจที่ได้ให้บริการแก่ผู้ใช้
AT Protocol อนุญาตให้มีรีเลย์และบริการม็อดเดอเรชันหลายรายในเชิงเทคนิค แต่ในโลกจริงจะเกิดขึ้นมากแค่ไหนยังน่าสงสัย
ผมคิดว่าเป็นความผิดพลาดที่จะตัดสินโปรโตคอลโซเชียลเน็ตเวิร์กจากมุมมองเชิงเทคนิคและเชิงปรปักษ์ล้วน ๆ การไม่ผูกติดกับเซิร์ฟเวอร์แลกมากับการถูกแยกออกจากคอมมูนิตี้ที่แน่นแฟ้นด้วย และไม่มีอะไรที่ทำให้รู้สึกมีส่วนได้ส่วนเสียอีกต่อไป
การไม่มีอะไรให้เสียในแง่ข้อมูล ตัวตน และคอมมูนิตี้เป็น ดาบสองคม
เท่าที่รู้ ตอนนี้มี รีเลย์เพียงตัวเดียว
ถ้ามีรีเลย์หลายตัว แต่ละตัวก็จะมองเห็นเครือข่ายต่างกัน และรีเลย์ที่รวมโพสต์ได้มากกว่าก็จะเป็นรีเลย์ที่ดีกว่า
การรักษาความหลากหลายของรีเลย์แทนที่จะมีรีเลย์เดียวที่ครอบงำอาจค่อนข้างยาก และดูคล้ายกับความพยายามของระบบ DNS ทางเลือกที่ต้องการให้มี traction ถ้าอย่างนั้นถ้าโพสต์ของผมไม่ถูกรีเลย์หลักเก็บไป ก็ดูเหมือนจะไม่มีทางออก
ตอนนี้ยังอยู่ช่วงแรกมาก ๆ จึงอาจไม่เป็นแบบนั้นก็ได้ และถึงจะมีรีเลย์หลักที่ครอบงำ GitHub ก็ไม่ได้แย่ขนาดนั้น แถมยังมีทางเลือกอื่นอยู่บ้าง
ถ้าเรียกระบบว่า
[ไมโครบล็อก] -> [อินเด็กเซอร์] -> [ไคลเอนต์]จะเข้าใจง่ายกว่าในความเป็นจริงมีองค์ประกอบมากกว่านี้ แต่กลไกพื้นฐานของ Bluesky คร่าว ๆ เป็นแบบนี้ และดูเหมือนแค่ตั้งชื่อไม่ตรงกับที่คาดไว้
เหตุผลที่ต้องมีอินเด็กเซอร์คือ ID ผู้ใช้ไม่ได้คงที่อยู่ในระบบ
DID:PLCเริ่มต้นด้วยสตริงย่อยของแฮช แล้วเพราะ “การหมุนเวียนคีย์” จึงเกิดการจัดวางใหม่เชิงเข้ารหัสแบบแปลก ๆ ที่ทำให้ ID ผู้ใช้เปลี่ยนไปตามเวลาโดยที่แม้แต่เจ้าตัวก็ไม่รู้ตัวลองนึกถึงระบบแบบ LiveJournal แต่ handle เปลี่ยนไปเรื่อย ๆ และต้องมีผู้มีอำนาจในการติดตามการเปลี่ยนแปลงนั้น แน่นอนว่าสามารถโพสต์ได้แค่ข้อความสั้น ๆ โดยไม่มีหัวข้อหรือการรองรับ Markdown
โดยส่วนตัวผมกำลังรอ
DID:PLCแบบใหม่ที่รับ public key แบบคงที่และให้เซ็นข้อความด้วย private key สิ่งที่ต้องติดตามจะลดลงมาก และการโฮสต์เองกับการพัฒนาแบบ local-first ก็น่าจะง่ายขึ้นมากเป็นโครงสร้างคล้าย UI GitHub แบบโลคัลที่ดึงข้อมูลจากอินสแตนซ์ GitHub หลายตัว ซึ่งโฮสต์ชุด repository ที่ต่างกันแต่ก็อาจซ้อนทับกัน
คล้ายกับไคลเอนต์ Usenet ที่รวบรวม newsgroup จากเซิร์ฟเวอร์ NNTP หลายตัวมาแสดงด้วย
เลยสงสัยว่าทำไมถึงคิดว่าแต่ละรีเลย์จะมองเห็นเครือข่ายต่างกัน
สิ่งที่สงสัยคือ BlueSky จะให้คำมั่นได้อย่างน่าเชื่อถืออย่างไรว่า จะใช้เฉพาะ ส่วนที่เปิดของโปรโตคอล เท่านั้น
BlueSky ดูค่อนข้างรวมศูนย์ในทางปฏิบัติ ดังนั้นจึงดูไม่มีเหตุผลทางเทคนิคที่ไคลเอนต์ของบริษัทเองจะต้องเป็นไคลเอนต์ ATProto เสมอไป
ในระยะสั้นหรือระยะกลาง การทำแบบนั้นคงเป็นการทรยศต่อความเชื่อใจของผู้ใช้อย่างรุนแรง แต่โครงสร้างแบบกระจายศูนย์โดยพฤตินัยของ ActivityPub ดูเหมือนเป็นกลไกป้องกันที่แข็งแรงกว่าตรงนี้
ถ้าหมายถึงรีเลย์ของบริษัทเองกับ PDS สามารถสื่อสารกันด้วยโปรโตคอลอื่นได้ ผมก็ไม่ค่อยเข้าใจว่ากังวลเรื่องอะไร
ไคลเอนต์ ActivityPub สองตัวก็สามารถคุยกันด้วยโปรโตคอลที่ไม่ใช่ ActivityPub ได้เช่นกัน
ในทางปฏิบัติก็ทำอยู่แบบนั้น และถ้าเริ่มเปลี่ยนไปในทิศทางที่ไม่ทำแบบนั้น ผู้คนจะสังเกตเห็นได้เร็วมาก
การแยก “การเปล่งเสียงและขอบเขตการเข้าถึง” ได้ถึงขั้นนี้ถือว่าดี แต่ในระยะยาว Mastodon ให้ความรู้สึกเหมือนเป็นตัวเลือกที่ฉลาดกว่าเพราะความเรียบง่าย
ในระยะสั้น การคัดสรรฟีดของ Mastodon ยากกว่าอย่างชัดเจน จึงอาจสนุกน้อยกว่าหรือมีประโยชน์น้อยกว่าได้
คำถามสำคัญคือ ถ้าผู้ประสงค์ร้ายในจินตนาการ ซึ่งอาจร่ำรวยหรือมีอำนาจ อยากเข้ามาเขย่ากระดานที่นี่ จะทำได้อย่างไร
ในบทความนี้ข้ามประเด็นนี้ไปแบบลวก ๆ ด้วยทำนองว่า “ไม่ค่อยรู้ว่าฟีดทำงานอย่างไร” ซึ่งน่าสงสัยมาก ดูเหมือนว่าพวกเขารู้ดีว่าฟีดจะทำงานอย่างไร และรู้ด้วยว่าอำนาจกับเงินอยู่ตรงจุดนั้น จึงพยายามกุมไว้
ผู้เขียนพูดไว้แบบนี้: “ฟีดเป็นฟีเจอร์ที่เพิ่งเพิ่มเข้ามาใน atproto เมื่อไม่นานนี้ ดังนั้นแม้จะมีอยู่แล้ว แต่ฟังก์ชันอาจยังไม่สมบูรณ์ และอาจเปลี่ยนแปลงได้ในอนาคต คอยดูกันต่อไป จากมุมมองของผม มันทำงานได้ดี แต่ผมไม่ได้ติดตามรายละเอียดทางเทคนิคระดับลึก”
ย่อหน้าก่อนหน้านั้นมีบริบทแบบนี้ด้วย: “หนึ่งใน killer feature ของ BlueSky เมื่อเทียบกับเครื่องมือไมโครบล็อกอื่น ๆ คือสิทธิ์ในการเลือกของผู้ใช้อย่างสมบูรณ์ ถ้าผมอยากสร้างอัลกอริทึมฟีดเองก็ทำได้ และแชร์กับคนอื่นได้ง่าย”
ฟีดเป็นโอเพนซอร์ส มีอยู่จริงตอนนี้ และรันเองได้ด้วย
คำว่า “เขย่ากระดาน” ก็ไม่ชัดว่าหมายถึงกระดานไหนและในความหมายใด ที่นี่มีชิ้นส่วนที่เคลื่อนไหวอยู่มากมาย
ไอเดียที่ว่าถ้าผู้ใช้เลือก ผู้ให้บริการมอดเดอเรชัน ที่เป็นอิสระจากผู้ให้บริการโฮสติ้ง ก็จะกังวลเรื่องการเลือกอินสแตนซ์น้อยลง ดูน่าสนใจ
แต่ยังไงอินสแตนซ์ก็น่าจะต้องทำมอดเดอเรชันเพื่อไม่ให้โฮสต์เนื้อหาที่ผิดกฎหมายในพื้นที่ของตน
สุดท้ายก็คงกลายเป็นเรื่องค่อนข้างยากสำหรับคนที่รันอินสแตนซ์ และอาจนำไปสู่ความวุ่นวายไม่น้อย ผมอาจเข้าใจผิดก็ได้
แต่ไม่ว่าจะใช้โปรโตคอลไหน เรื่องนี้ก็เหมือนกัน
PDS ใช้แค่เครื่อง Ubuntu พอประมาณก็ได้ แต่แม้แต่บทความนี้ก็ยังยอมรับว่า relay มีราคาแพงและเป็น จุดควบคุมแบบรวมศูนย์ ขนาดใหญ่
แผนรับมือสแปมของ Bluesky คืออะไร? ก็คงเป็นการบล็อกที่ relay
เซิร์ฟเวอร์ DID ก็เป็นจุดควบคุมแบบรวมศูนย์อีกจุดหนึ่ง
ถึงอย่างนั้น PDS ก็ยังรันได้ตามใจชอบ
เกร็ดน่าสนใจเกี่ยวกับ Bluesky ถ้าเชื่อมโยงกับบทความเมื่อไม่นานมานี้ นี่ก็ถือว่าตั้งชื่อตามชื่อคนได้เหมือนกัน
ชื่อของ CEO ในภาษาจีนแปลตรงตัวว่า blue sky
เป็นเรื่องบังเอิญ แต่ชื่อกลางของผมในภาษาจีนมีความหมายว่า bluesky
การ์ตูนสั้นเรื่องนี้ก็ดี: https://bsky.social/about/welcome-to-bluesky-comic
ถ้า Bluesky เลิกสนับสนุน
did:plcแล้ว ตัวตน PLC เดิมทั้งหมดจะพังหมดหรือเปล่า?สงสัยเพราะ PLC มีโครงสร้างที่ ping ไปยังบริการฝั่งนั้น
ผมยังไม่ค่อยเชื่อเรื่อง labeler จากบุคคลที่สาม
จะป้องกันการนำไปใช้ในทางที่ผิดได้อย่างไร?
ถ้าบริการ labeler เริ่มใช้อำนาจในทางที่ผิด ผู้ใช้ก็ตัดการใช้งานได้
มีคำอธิบายละเอียดว่า Bluesky ตั้งใจจะทำให้ labeler เข้ากับระบบนิเวศอย่างไรที่ https://github.com/bluesky-social/proposals/tree/main/0002-l...
ผมแสดงความเห็นได้ แต่คำถามกว้างเกินไปจนไม่รู้ว่าจะเริ่มตอบจากตรงไหน
ใครก็ตามในเครือข่ายสามารถติด label ให้กับอะไรก็ได้ รวมถึง labeler อื่น ๆ
แอปสามารถแสดง labeler ให้ผู้ใช้สมัครรับได้ เหมือนฟีดแบบปรับแต่งเองของ Bluesky ในตอนนี้
แอปยังสามารถคัดสรรและจัดอันดับวิธีที่ labeler ถูกแสดงและถูกจัดอันดับได้ เช่นเดียวกับที่ตอนนี้แสดงและจัดอันดับฟีดแบบปรับแต่งเองตามความนิยมที่แสดงผ่านการกดไลก์และการบันทึก
แนวทางที่ว่า “เครื่องมือมอดरेशनอยู่ในชั้นของการเข้าถึง (reach) คือรับคำพูดทั้งหมดเข้ามา แต่ให้วิธีจำกัดการเข้าถึงของสิ่งที่ฉันไม่อยากเห็น” สุดท้ายก็ดูเหมือนการมอดरेशनแบบ “ถ้าไม่อยากเห็นก็หลับตาไป”
ผมรู้ว่านี่เป็นปรัชญาที่ Silicon Valley ชอบ แต่โดยพื้นฐานแล้วผมมองว่ามีข้อบกพร่อง
มีสถานการณ์ที่ชอบธรรมซึ่งจำเป็นต้องป้องกันไม่ให้คนอื่นที่ไม่เกี่ยวข้องพูดถึงประเด็นบางอย่าง หรือไม่ให้เข้าถึงคอนเทนต์บางประเภท
ตัวอย่างคลาสสิกคือ การกลั่นแกล้งทางไซเบอร์, การขุดข้อมูลส่วนตัวมาเปิดเผย และรีเวนจ์พอร์น เช่น คนตั้งแต่สองคนขึ้นไปคุยกันถึงวิธีทำร้ายบุคคลที่สาม หรือเปิดเผยข้อมูลที่เป็นส่วนตัว น่าอับอาย หรือเป็นเท็จ
การลบข้อมูลนี้ออกจากฟีดของเหยื่อไม่มีประโยชน์เลย และตั้งแต่แรกมันก็มีแนวโน้มว่าจะไม่ปรากฏในฟีดของเหยื่ออยู่แล้ว ความเสียหายเกิดจากการที่คนอื่นเห็นคอนเทนต์นั้นหรือเข้าร่วมการสนทนา แต่ความเสียหายนั้นเป็นเรื่องจริง
ในระบบมอดरेशनแบบดั้งเดิม ผู้ดูแลสามารถลบโพสต์ออกจากทุกคนหรือบล็อกผู้กระทำผิดเพื่อหยุดพฤติกรรมแบบนี้ได้ ในระบบที่ “แค่ซ่อนคอนเทนต์” ทำแบบนี้ไม่ได้
รายการบล็อกที่แชร์กันหรือ “ป้ายกำกับ” ก็ใช้ไม่ได้เช่นกัน ผู้บริโภคคอนเทนต์ไม่มีแรงจูงใจที่จะบล็อกสิ่งนั้น และอาจอยากดูรีเวนจ์พอร์นด้วยซ้ำ
คนที่อยากบล็อกคือเหยื่อ แต่เหยื่อไม่มีอำนาจบังคับให้ทุกคนใช้รายการบล็อกเฉพาะได้ เพราะแก่นของระบบนี้คือไม่มีใครสามารถบังคับรายการบล็อกให้คนอื่นใช้ได้
ทีมได้พิจารณาปัญหาเหล่านี้และ “ปรึกษาผู้เชี่ยวชาญ” แล้ว แต่ยังเป็นงานที่กำลังดำเนินอยู่ ผมจึงไม่รู้สึกว่าตัวเองมีคุณสมบัติพอจะพูดแทนได้
ประเด็นที่ว่า “ป้ายกำกับใช้ไม่ได้ เพราะผู้คนอยากดูมันมากกว่าจะป้องกันมัน” เป็นส่วนหนึ่งของพื้นที่ปัญหาที่ทีมยอมรับไว้อย่างชัดเจน
ดูเพิ่มเติมได้ที่นี่: https://lobste.rs/s/shseqz/how_does_bluesky_work#c_vjvmei