จากทั้งข่าวปัญหา Social Media ใหญ่ ๆ เริ่มออกอาการไม่ดีกันเพียบ (รวมไปถึง Reddit ที่ตอนนี้เกิดประท้วงใหญ่) ผมเลยมีแนวคิดว่าอยากจะสร้าง Social Media แบบกระจายศูนย์ แต่พอไปดู ๆ การบ้านที่เจ้าอื่นทำ ผมเจอปัญหาหลายอย่างในแพลตฟอร์มเหล่านั้น โดยเฉพาะอย่างยิ่งพวกที่ใช้ ActivityPub เป็นมาตรฐานกลาง ปัญหาที่ผมเจอข้อใหญ่ ๆ มีดังนี้
- แพลตฟอร์มมีเว็บเป็นของตัวเองกระจายกันไป ผู้ใช้ไม่รู้ว่าจะต้องเริ่มไปเข้าตรงไหน
- บ่อยครั้งที่ Node/Pod ปิดรับสมัครแล้ว ทำให้ต้องไปเลือกเข้าที่อื่นแทน หรือที่ไปเจอเป็น Node ส่วนตัว เข้าไม่ได้
- บาง Node มีกฎที่ไม่สามารถทำตามได้ง่าย อย่างเช่น Node ในประเทศไทยห้ามโพสต์หมิ่นฯ หากกรณีสมมติฝรั่งอยู่ใน Node ไทย ไปโพสต์ใน Node อื่นก็ยังต้องผ่าน Node ที่มีกฎนั้น ไม่มีอิสระอย่างแท้จริง ต้องข้ามไปสมัครอีกที่ ซึ่งก็ต้องลุ้นว่า Node นั้นปิดหรือยัง แถม Account ไม่ sync กันอีก
- กรณีที่ Node เกิด Shut Down เท่ากับว่าบัญชีใน Node ก็หายไปด้วย (ถ้ามีระยะเวลาเตรียมตัวออกก็ดี แต่กรณีที่อยู่ดี ๆ Node ก็ปิดตัวไปดื้อ ๆ ก็มีมาแล้วเหมือนกัน)
รวม ๆ แล้วคือ พวก Federated Social Media มันไม่เหมาะกับผู้ใช้ทั่วไปเอาเสียเลย เหมือนออกมาเอาใจ Nerd ที่ Need เยอะเสียมากกว่า
ที่นี้ผมลองมานึกวิธีแก้ปัญหา แนวคิดที่ผมนึกขึ้นมาเล่น ๆ ไม่ได้ลองจริงจัง ผมคิดจะแก้ปัญหาดังนี้
- เว็บจะเป็น Web App เดียว ผู้ใช้ทุกคนจะเข้าที่เว็บเดียวกันเลย เว็บจะเป็น Client app ที่ให้บริการโดยใช้ Web CDN ทั่วๆ ไป สมมติปล่อยแอปที่ Cloudflare ก็จะใช้ Cloudflare Pages เป็นต้น แต่ถ้าใครอยากใช้แบบ App ในเครื่องก็ใช้ Electron-based App ได้ หรือจะ Host เองก็ได้เหมือนกัน
- Node จะเป็นคอนเซปต์เป็น Portal กล่าวคือ เป็นทางผ่านสำหรับไปติดต่อ Node อื่น เจ้าของ Node สามารถตั้งกฎได้ว่าทำอะไรได้บ้าง ทำอะไรไม่ได้บ้าง สมมติว่า Portal อยู่ในประเทศไทยก็จะได้ตั้งกฎที่สอดคล้องกับกฎหมายไทยได้ รวมถึงเลือกกำหนดคำที่ใช้ได้ ใช้ไม่ได้ เลือกได้ว่าให้แค่เซ็นเซอร์ไว้ หรือบล็อกทั้งโพสต์และแจ้ง Admin และเพิ่มปลั๊กอินไว้สแกนเนื้อหาได้ถ้าต้องการ
- ใน Portal สามารถสร้าง "Community Room" ได้ คล้าย ๆ กับแนวคิดของ Server ของ Discord ที่จะมีระบบโพสต์เหมือน Social Media ทั่วไป และระบบ Chat Room ไว้ส่งข้อความรวม แต่ก็จะถูกกำหนดโดยเจ้าของ Portal อีกทีหนึ่งว่าสร้างอะไรได้บ้างและสร้างจำนวนได้มากน้อยเท่าไร และ Portal ก็สามารถ Host Copy ของ Room จาก Portal อื่นได้เช่นกันเพื่อช่วยกระจายโหลด
- มี Portal Browser ที่สามารถเข้าถึงได้จากใน App เพื่อค้นหาได้เลย ไม่ต้องไป Search หาลิงก์ด้านนอก แต่เจ้าของห้องก็สามารถสร้างลิงก์เรียกเข้ามา Join ได้เหมือนกัน (ตรงนี้จะมีเซิร์ฟเวอร์อาสาสมัครช่วย Host รายการไว้ให้ คล้าย ๆ กับ Disboard และลิงก์มีทั้งแบบ Join ทั้ง Portal หรือเลือก Join เฉพาะ Community ใน Portal ก็ได้)
- ผู้ใช้จะเก็บ Account ไว้กับเครื่องของตัวเอง และสามารถเลือก Join Portal ได้อิสระ แต่เลือกใช้ได้ทีละ Portal แล้วอาศัยให้ Portal ช่วยส่งต่อเนื้อหาผู้ใช้ให้อีกทีหนึ่ง ทีนี้สมมติว่า Portal ที่อยู่ประจำห้ามโพสต์เรื่องต้องห้าม ก็ย้ายไปอีก Portal หนึ่งที่อนุญาตให้โพสต์ได้
- ผู้ใช้สามารถโพสต์ส่วนตัวบน Portal และส่งข้อความ/โพสต์ใน Community Room ได้ (คล้ายกับใน Discord แต่เพิ่มระบบโพสต์) และมันจะแชร์ข้าม Portal ให้กรณีที่เลือกตามกันไว้ แต่ Portal ก็เลือก Block ได้เหมือนกันว่าอันไหนห้าม Sync เข้ามา โดยจะมีแจ้งเตือนว่า Portal ได้บล็อกเนื้อหาเหล่านั้นไว้
- ผู้ใช้สามารถเลือกติดตามผู้ใช้ที่อยู่อีก Portal หนึ่งได้ โดย Portal จะแจ้ง Subscribe กับอีก Portal หนึ่งว่าหากผู้ใช้โพสต์อะไร ให้ส่งมาให้ Portal ข้างต้นด้วย
- Portal สามารถเพิ่ม Web Integration ได้ อย่างเช่นอยากให้โพสต์นี้ไปปรากฏบน Search Engine ก็สามารถทำได้เช่นกัน เพื่อให้ผู้ใช้นอก Platform เข้ามาสืบค้นข้อมูลได้
ผมมีประสบการณ์เล็กน้อยในเรื่องของการเขียน Decentralised Social Media เพราะเคยลองมาก่อน แต่ติดที่แนวคิดที่คิดว่ายังไม่ Work เลยอยากลองแลกเปลี่ยนความรู้ จริง ๆ ไม่ต้องมีความรู้ด้านนี้ก็แสดงความคิดเห็นในฐานะผู้ใช้ก็ได้ ผมอยากรู้ว่าแต่ละคนมีความคิดเห็นยังไง
ปล. จริง ๆ ผมเริ่มคิดเรื่องพวกนี้ก่อนที่จะเกิดปัญหา Social Media เจ้าใหญ่ แต่ก็ไม่เคลมเพราะว่าไม่ใช่แค่ผมที่คิดเรื่องพวกนี้มาก่อน
ในส่วนของข้อเสียเห็นด้วยเลยครับ คือมันไม่ตอบโจทย์ผู้ใช้งานทั่วไปเลย อย่าง mastodon เองก็ใช้ยาก (สำหรับคนใช้ทั่วไป) เพราะไม่รู้จะเข้าเว็บไหนดี ไม่รู้อันไหนเป็นอันไหน ค้นหาคำว่า mastodon ก็มีเว็บโผล่ขึ้นมาเพียบ มันต่างจากโซเชียลตัวอื่น เช่น Facebook twitter ที่ค้นหาแล้วก็เจอเป็นเว็บนั้นเว็บเดียวเลย ในแง่ของการใช้งานก็ลิงก์กันหมด
ส่วนแง่ของการพัฒนา อันนี้ไม่ค่อยมีความรู้ครับ 55+ แต่คิดว่า ถ้าโซเชียลแบบกระจายศูนย์ยังมีปัญหาลักษณะนี้อยู่ ก็ดันขึ้นยากครับ อย่างมากโซเชียลบางตัวยุบ ก็แค่รอตัวใหม่โผล่มาแล้วย้ายไปก็จบ ส่วนจะเป็นของใคร เจ้าของเก็บข้อมูลอะไร คิดว่าคนทั่วไปอาจจะไม่ใส่ใจกันเท่าไหร่ ขอแค่ UI ดี เล่นง่าย คนก็โอเค จะกระจายศูนย์หรือเปล่าก็ไม่เป็นไร
ผมนึกถึงผู้ใช้เป็นหลักเลย เพราะจากปัญหาของ Federated Social Network ทำให้มันไม่เหมาะสำหรับผู้ใช้ที่ไม่ใช่ Tech Savvy ผมเลยคิดประเด็นนี้เป็นประเด็นแรก แล้วทำให้มันไปอยู่ในระบบที่ผู้ใช้กลุ่มใหญ่ได้ประโยชน์ที่สุด (ซึ่งก็คือระบบไร้ศูนย์กลาง) เลยได้ระบบที่แนวคิดคล้าย ๆ Discord ขึ้นมา (แต่ Discord เป็นระบบรวมศูนย์นะ) ซึ่งผมค่อนข้างมั่นใจว่าผู้ใช้จะไม่สับสนตอนใช้งาน เพราะทางเข้าทางเดียว (มีหน้าเว็บเดียว) ตั้งค่าบัญชีผู้ใช้ให้เรียบร้อยครั้งเดียว (เพราะมันจะเอาไปใช้ได้ทุกที่เลย) เลือกประตูที่ใกล้บ้านที่สุดหรือที่เราสะดวกใจที่สุด (กฎหน้าประตูบอกไว้ชัดเจน) จากนั้นเล่นเหมือน Social ทั่วไปเลย หรือเลือกเข้าห้อง chat ที่เราอยากคุยด้วยแล้วก็สนทนากันยาว ๆ ซึ่ง Flow นี้ผมว่าเข้าใจง่ายที่สุด อยากออกไปเข้าประตูใหม่ก็แค่เลือกจากเมนูในเว็บเดียวกันได้เลย ไม่ใช่ Flow แบบต้องไปไล่หาเว็บที่ต้อนรับเราก่อน ต้องมาระแวงเจ้าบ้านเพราะจะย้ายออกก็ยาก ต้องมาระแวงว่าเดี๋ยวเจ้าบ้านอาจจะล็อกประตูตอนไหนก็ได้แล้วของ ๆ เราจะหายไป แล้วตอนใช้งานจริง ที่ดันไม่เหมือนเว็บบอร์ดแต่ระบบจริง ๆ มันเป็นเว็บบอร์ดที่ต่อกันไปมาได้ มันไม่สะดวกเอาเสียเลยทั้งในแง่การใช้งานและแง่ของการเป็น Social Media เพราะเนื้อหามันปนกันมั่วไปหมด ทั้งแง่ของการเชื่อมต่อ Community เพราะการสนทนามันไม่ต่อเนื่องขนาดนั้น จริง ๆ ส่วนตัวผมนิยามพวก Federated Social Network เป็นอีกรูปแบบหนึ่งของเว็บบอร์ด แต่ทำให้แย่กว่าเดิมด้วยซ้ำ 55555
Web app กับ app ต่างกันมั้ยครับ
ที่ผมเข้าใจตอนนี้ ( ยกตัวอย่าง )
Ais เป็นแอพจริงๆเลย
Dtac เป็น web app ผมเข้าใจถูกมั้ยครับ
Web App เองเป็นศัพท์ที่ debate กันได้ตลอดทั้งวันเลยเพราะมันขึ้นกับว่าเราพูดถึงอะไรอยู่ ซึ่งจริง ๆ แล้ว ผมผิดเองส่วนหนึ่งที่อธิบายไม่เคลียร์
ที่คุณพูดถึงจะออกไปทาง App Framework ที่พัฒนาแอปขึ้นมา ซึ่งก็ตามที่ว่ามาเลย Ais เป็น Native ของ Dtac เป็น Web Tech มาพัฒนาเป็น App แยก
ส่วนที่ผมพูดถึงคือพัฒนา Web App ที่ทำงานบนเว็บไซต์ และไม่ได้พึ่งพา API Server แหล่งใดแหล่งหนึ่งเป็นพิเศษ มันจะเชื่อมต่อไปที่ไหนก็ได้ที่ผู้ใช้เลือกไป เพราะตัว Web App นี้มันต้องทำงานแบบไร้ศูนย์กลางอยู่แล้ว ที่เอาขึ้นไปเว็บเพราะอยากให้ผู้ใช้เข้าใจว่าเราเข้าจากที่เว็บเดียวก็ได้ แล้วค่อยโดดไปที่ ๆ อยากไปต่อ (เหมือน Discord Server) มันดีต่อผู้ใช้ที่ไม่ต้องมางงว่าตัวเองต้องไปค้นหาเว็บนั้นเว็บนี้ก่อน ต้องมาเช็กว่าเว็บไหนรับสมัครเข้าเครือข่ายบ้าง แล้วต้องเรียนรู้อีกว่าเว็บมันเชื่อมต่อกันไปคุยข้ามที่ได้ ซึ่งผมคิดว่าแบบนั้นผู้ใช้สับสนแน่ ๆ ผมเลยอยากออกแบบให้มันเป็นเช่นนี้แล เข้าเว็บที่เดียวกัน แล้วไปเข้าที่ ๆ อยากอยู่ อยากเข้าไปคุยต่อ เข้าใจง่ายกว่าเยอะ
ผมเห็นด้วยครับ
Discord นี่ผมใช้ไม่เป็นจริงๆพยายามแล้วแต่ไม่ไหว
ไปค้นหาในยูทูปเหมือนจะง่ายแต่ก็ไม่ โหลดๆ ลบๆ 🥲
Discord เองนี่ที่เติบโตได้เพราะเว็บอื่นล้วน ๆ เลย นอกจากปัญหาวิธีการใช้งานแล้ว ตัวแพลตฟอร์มไม่เอื้ออย่างยิ่งต่อการค้นหา Topic หรืออะไรที่เราสนใจ ส่วนมากเป็นแหล่งรวมคนเข้าด้วยกันจากแหล่ง Social Media อื่น หาคนไม่ค่อยจะเจอ
ผมตั้งใจแก้ pain point ตรงนี้ด้วยการเพิ่มระบบรวมศูนย์เข้าไปอีกนิดหน่อย (แต่ก็ยังเป็นแบบหลายเซิฟช่วยกันโดยชุมชน) ให้สามารถค้นหาคนได้ว่าปกติแล้วอยู่ที่ไหน และเพิ่ม Web Integration ให้สามารถทำ Search Indexing โดย Search Engine (เช่น Google) ได้ อย่างเช่น เผยข้อมูลผู้ใช้บนเว็บ ทำให้สามารถค้นหาได้ง่ายว่า User คนนี้อยู่ที่ Node ไหน แล้วเข้าไปจอยร่วมได้เลย หรือว่าการเผยแพร่โพสต์ ทำให้ง่ายต่อการค้นหาข้อมูลจากระบบ Search Engine เดิม ซึ่งแน่นอนว่าผู้ใช้สามารถขอให้ Node ปิดบังตัวตน/ข้อมูลบน Search Engine ได้เช่นกันถ้าต้องการ
สำหรับผมอะไรที่ใช้งานผ่าน browser ทาง URL ได้คือ Web app ทั้งหมดครับ
ผมไม่นับรวม app ที่ใช้ browser engine render แต่เข้าทาง URL ไม่ได้นะครับ
PWA นี้ก็ Web app แค่หน้าตามันเหมือน App
จริง ๆ ผมชอบไอเดียของ reddit มาก ๆ เลย เรื่อง subreddit ที่รวม community แต่ละกลุ่ม และด้วยความที่มันเป็น public ทำให้มันถูกคนที่อยู่นอก community นั้นมา discover ง่ายมาก ต่างกับ discord ที่ถ้าคนสมัครใหม่เข้ามาหน้าแรกแล้วแทบจะหลงทาง คิดว่าถ้ามีแยกเป็น node อาจจะเอาแนวทางนี้มาปรับใช้ได้มั้งครับ Portal Browser อาจจะคล้าย ๆ front page ของ reddit ตอนนี้
ตรงนี้เลยที่ผมยังคิดไม่ตกว่าจะเริ่มอย่างไร ในมุมมองผู้ใช้ผมพอนึกออกว่ามันต้องเป็นยังไงจึงจะเป็นมิตร แต่ในมุมมองของระบบจะยาก เพราะระบบมันกระจายกันอยู่ฉะนั้น bias จะค่อนข้างสูงเพราะไม่ว่า Community ไหนก็อยากได้ยอดเข้าสถานที่ของตัวเองทั้งนั้น ซึ่งในฝั่งของ Reddit ระบบมันเป็นก้อนเดียว ในมุมมองระบบระดับสูงจะถือว่าค่อนข้างง่ายเพราะข้อมูลการประเมินยอดการดูมันมีตลอดเวลาอยู่แล้ว แต่ Federated Social มันไม่มีข้อมูลนั้นอยู่เพราะระบบต่างก็กระจายกันอยู่ จะประเมินก็ต้องใช้ระบบรวมศูนย์ที่พลังประมวลผลสูง ซึ่งผมคิดว่าน่าจะยากสำหรับพวก Community-driven Platform
ที่ผมคิดไว้ตอนนี้คือในการใช้งานครั้งแรก ขั้นตอนของการเลือก Portal จะเป็นแบบอัตโนมัติไปเลย (เลือกที่ใกล้บ้านไว้ก่อนจะได้มั่นใจว่าเร็วและเสถียร) หรือจะเลือกเองผ่าน Portal Browser ก็ได้ ถ้า Portal ที่ระบบเลือกให้อัตโนมัติไม่ถูกใจ (แอปจะแสดงกฎของ Portal มาให้พิจารณาประกอบด้วย)
จากนั้นแอปจะถามเล็กน้อยว่า keyword ที่ผู้ใช้สนใจมีอะไรบ้าง โดยจะนำไปค้นหาเนื้อหาที่เราสนใจมาให้ หรือว่าถ้ารู้จัก Community ที่อยากจะเข้าอยู่แล้ว (ผมจะเป็นผู้ใช้กลุ่มนี้ ด้วยความเคยชินจาก Discord) ผู้ใช้ก็สามารถขอเลือกเข้าร่วมเองได้เช่นกัน แล้ว Portal ที่ผู้ใช้กำลังใช้งานอยู่จะเชื่อมต่อข้อมูลมาให้ กรณีที่ Community ดังกล่าวอยู่อีก Portal หนึ่ง
จากนั้นผู้ใช้สามารถเริ่มใช้งานได้ทันที โดยจะเจอหน้า Social Homepage ที่ Portal จะเลือกเนื้อหาที่เกี่ยวกับ Keyword ที่ผู้ใช้ได้เลือกไว้ โดยจะเลือกจาก Community ที่ตัวเองมีข้อมูลอยู่ ไปบวกกับเนื้อหาที่กำลังเชื่อมต่อกับ Portal อื่น ๆ อยู่มาแสดงให้ดู ผู้ใช้จะได้พอรู้ว่าจะเริ่มไปตรงไหนบ้าง รวมไปถึงแสดงบางส่วนของ Public Chat Room ด้วย เผื่อว่ายังไม่รู้ว่าอยากจะคุยเรื่องอะไร
เห็นด้วยเลยครับ ในข้อที่ว่าให้เลือกคีย์เวิร์ดก่อน แล้วค่อยแสดงตามคีย์เวิร์ดที่ผู้ใช้สนใจขึ้นมา ถ้าจำไม่ผิดจะคล้ายขั้นตอนการสมัครของ Tumblr
ส่วนนอกจากเลือกตัวที่อยู่ใกล้เรา คือเลือกตามภาษาครับ (คิดว่าน่าจะมีประโยชน์ 55)
ส่วนตัวคือ ... ผมใช้เว็บที่เป็น mastodon อยู่จำนวนนึง แต่จะสมัคร 1 user ต่อหนึ่งเว็บเลย แล้วเชื่อมโยงกัน
คือเราใช้แค่เชื่อมโยงบริการด้วยกัน ไม่ใช่ว่าใช้มันเป็นบริการเดียวกันซะทีเดียวน่ะครับ