Fediverse: ก้าวข้ามเผด็จการรวบอำนาจที่ปกครองและขายสมาชิกสังคมออนไลน์ต่างสินค้า

ข้อเสียของเครือข่ายสังคมออนไลน์คือสมาชิกมีอำนาจต่อรองน้อย ทำได้อย่างมากเพียงแค่ย้ายเครือข่าย แต่พอย้ายแล้วก็คุยกับคนที่อยู่อีกเครือข่ายไม่ได้ เวลาลดน้ำหนักอยากดูวอลเลย์บอลเพื่อความบันเทิงก็อาจจะเลี่ยงไม่ได้ที่จะต้องดูโฆษณาไก่ทอดเสียก่อน

หรือว่าบางเจ้าบอกว่าไม่ให้พื้นที่ 1TB แล้ววันหนึ่งจะเก็บตังรายปีขึ้นมา เพียงว่าเราจะย้ายข้อมูล เช่น รูปภาพที่เราถ่ายเอง กล่องก็ซื้อมาเอง เอาไปไว้ที่อื่นที่อาจจะดีกว่า หรือราคาถูกกว่า ก็เป็นเรื่องที่ยากลำบากแล้วในกรณีที่มีข้อมูลปริมาณมาก

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

เครือข่ายสังคมออนไล์ที่ผู้ใช้ย้ายออกลำบากตามที่ว่ามาก็เป็นโอกาสให้เอาสมาชิกของสังคมไปขายได้ด้วย อาจจะขายพ่วงกับกิจการ หรือว่าข่ายให้ผู้ที่อยากโฆษณาอีกทีก็ทำได้

ในระบบที่เป็นที่นิยมก่อนหน้านี้ เช่น E-mail เมื่อเปลี่ยนผู้ให้บริการก็ยังติดต่อกับญาติมิตรที่ใช้บริการ E-mail เจ้าอื่นได้ หรือแม้แต่กระทั่งโทรศัพท์เปลี่ยนผู้บริการแล้วก็ยังโทรหาคนอื่นได้เหมือนเดิม

Fediverse เกิดจากคำว่า Federation และ Universe รวมกันเป็นเครือข่ายสังคมออนไลน์ รวมถึง blog ที่เครื่องแม่ข่ายต่าง ๆ ทำงานร่วมกันได้ถึงแม้ว่าจะไม่ได้มีเจ้าของเดียวกัน หรือกระทั่งไม่ได้ใช้โปรแกรมเดียวกัน เช่น โปรแกรมสำหรับเขียน micro blog สามารถแสดงความคิดเห็นต่อวิดีโอบนเว็บสำหรับเผยแพร่วิดีโอได้โดยตรง

ภาพหน้าจอเว็บให้บริการวิดีโอ peertube.social ที่เป็นสมาชิกใน Fediverse ด้วย:

โปรแกรม Toot! สำหรับ micro blog ที่ใช้งาน mstdn.io ที่เป็น node หนึ่งใน Fedverse เช่นกัน สามารถค้นหา URL ของ Peertube แล้วเห็นว่าเป็น blog post สามารถ reply ได้พอ reply เสร็จแล้วก็จะขึ้นไปเป็นความคิดของวิดีโอนั้นเลย

reply.png

comment.png

นอกจากจะแสดงความคิดเห็นข้ามกันได้แล้ว เรื่องทั่วไปอย่างดู video ของ PeerTube ใน Mastodon ก็ทำได้อยู่แล้ว หรือจะ follow/subscribe ก็ทำได้เหมือนกัน

ซึ่งลักษณะที่ว่าทำให้ Fediverse มีเครื่อแม่ขายที่ไม่ได้มีเจ้าของเดียวกันเยอะแยะไปหมด จากเว็บนี้ก็บอกว่ามี 2460 node แล้ว

ผมเลือก node ที่ผมคิดว่าสำคัญมาตามนี้

• mstdn.io ใช้โปรแกรม Mastodon เป็น micro blog เรื่องทั่ว ๆ ไป
• pawoo.net ใช้ Mastodon เหมือนกัน แต่เป็นชุมชนภาษาญี่ปุ่น
• ruby.social ใช้ Mastodon เป็น node ที่คุยกันเน้นเรื่องภาษา Ruby
• peertube.social ใช้ PeerTube เอาไว้สำหรับวิดีโอที่ไม่ใช่การค้า
• squeet.me ใช้ Friendica คล้าย ๆ Facebook
• fedigram.social ใช้ Pixelfed ที่ยังไม่เสร็จดี เอาไว้โพสต์รูปเน้นใช้ง่าย

โปรแกรม Mastodon, PeerTube, Friendica, Pixelfed ล้วนเป็นซอฟต์แวร์เสรีทั้งสิ้น ซึ่งหมายความว่าเราจะเปิด node ของเราเองก็ได้ จะแก้ไขดัดแปลงแจกจ่ายก็ได้ แต่ละโปรแกรมก็ใช้ภาษาโปรแกรมต่างกันออกไป Mastodon ใช้ Ruby, PeerTube ใช้ TypeScript ส่วน Friendica และ Pixelfed ใช้ PHP

Fediverse แต่ละ node คุยกันได้เพราะว่ามีมาตรฐานกลาง ซึ่งหลัก ๆ ก็คือ ActivityPub ที่สร้างมาบน Acivity Stream และ JSON-LD อีกที

JSON-LD หลักการคล้าย ๆ RDF คือพยายามจะทำให้ข้อมูลจากแหล่งต่าง ๆ เชื่อมโยงกันได้ แต่ว่าใช้ JSON parser ได้เลยเพราะมันเป็น JSON เช่น เปิด json มาอาจจะ field ชื่อ actor ก็อาจจะหมายถึง “นักแสดงชาย” หรือ “ผู้กระทำ” ก็ได้ แต่ถ้าเขียนเลยว่า “https://www.w3.org/ns/activitystreams/actor” อันนี้ก็จะหมายถึงผู้กระทำแน่ ไม่จำเป็นต้องเป็นนักแสดง แต่จะเขียนชื่อ field ด้วย url หรือในเอกสารจะเรียกรวม ๆ ว่า IRI มันก็จะเยิ่นเย้อเกินไป ก็เลยมี field หนึ่งขึ้นมาชื่อว่า @context เราก็เรียน “@context”: “https://www.w3.org/ns/activitystreams” ไว้เสียแต่ต้น ต่อไปในเอกสารก็ใช้ actor ได้เลยเพราะทราบแล้วว่าบริบทคือ “https://www.w3.org/ns/activitystreams” สามารถอ่านเพิ่มเติมได้จาก https://www.w3.org/TR/2014/REC-json-ld-20140116/

ส่วน Activity Stream เป็นมาตรฐานที่ระบุเลยว่าจะเขียนว่าใคร (actor) ทำอะไร (verb) อะไรถูกกระทำ (object) จะต้องเขียนออกมาหน้าตาอย่างไร หน้าตาก็จะออกมาเป็น JSON-LD ตามที่มาตรฐานกำหนดไว้ ที่ผมเห็นใช้งานตอนนี้ก็คือใช้ในเครือข่ายสังคมออนไลน์ทั้งหมด อ่านเพิ่มเติมได้จาก https://www.w3.org/TR/activitystreams-core/

จาก Activity Stream ก็มีมาตรฐานเกี่ยวเนื่องที่ผมรู้สึกว่าน่าสนใจคือ Activity Vocabulary ซึ่งระบุกระทั่งว่ากริยาที่กระทำใน Activity Stream มีอะไรหน้าตาเป็นอย่างไร เช่น like dislike follow invite ignore ต้องมีหน้าตา มีข้อมูลอย่างไรบ้าง อ่านเพิ่มเติมได้จาก https://www.w3.org/TR/activitystreams-vocabulary/

นอกจากประเด็นว่าส่งว่าใคร ทำอะไร อะไรเป็นผู้กระทำแล้ว ก็ยังมีประเด็นว่าต้องส่ง activity stream ไปที่ไหน ในส่วนนี้ก็เป็นมาตรฐาน ActivityPub ซึ่งกำหนดทั้งการส่งจาก client กับ server และ server กับ server เอง เพราะว่า Fediverse ต้องมีการสือสารกันระหว่าง server คนละเจ้าด้วย โดยมีการกำหนดเป็น inbox outbox ของแต่ละ actor ขึ้นมาว่าจะอยู่ใน URL อะไร ฯลฯ ซึ่งอ่านรายละเอียดได้จาก https://www.w3.org/TR/activitypub/

ใน Fediverse ไม่มีการเอาติดต่อญาติมิตรของใคร ๆ มาเป็นตัวประกันของแต่ละเจ้าอีกต่อไป ทำให้ลดการผูกขาดลด เมื่อมีอำนาจต่อรองมากขึ้นสมาชิกก็ถูกนำไปขายยากขึ้น แต่ว่า node สามารถนโยบายของตัวเองทำให้ไม่มีการผูกขาดทางศีลธรรม

แต่ก็มีข้อจำกัดอยู่ว่าย้ายค่ายแล้วต้องเปลี่ยน ID

อนาคตอาจจะมีการใช้ ActivityPub กับบริการออนไลน์อื่นอีก ไม่ว่าจะเป็นซอฟต์แวร์เสรีหรือไม่ก็ตาม หรือก้าวหน้าจนไปถึงแบบ peer-to-peer

ประเด็นอื่น ๆ เช่นว่า

  • Fediverse จะยั่งยืนหรือไม่ ผมเชื่อความทางศาสนาว่าสิ่งเป็นสังขารทั้งหมดไม่ยั่งยืน และผมไม่สามารถพยากรณ์อายุของ Fediverse ในอนาคตได้;
  • ประเด็นว่าทำไมไม่ใช้ peer-to-peer ผมคิดว่าจะมีประเด็นเรื่องพลังงานถ้าใช้อุปกรณ์เคลื่อนที่;
  • ทำไมไม่ใช้ blockchain ผมคิดว่ามีประเด็นด้านประสิทธิภาพ และการกลั่นแกล้งเบียดเบียนกัน Fediverse ไม่จำเป็นต้องปล่อยให้ทุกคนพูดทุกอย่างแล้วลบไม่ได้
  • app บนมือถือ tablet มีทั้ง Android และ iOS ใช้กับ Mastoodon และ Pleroma ได้
  • [Update 2018-11-25 21:53 UTC+7] เรื่องโฆษณาตอนนี้ยังไม่เห็นครับ ส่วนหนึ่งคือ admin ของแต่ละ node ออกตังเองเพราะแต่ละ node ไม่ใช้เครื่องแรงมากมายพอจะออกให้กันได้ และอีกส่วนหนึ่งก็มีการบริกาคช่วยกัน; ผมเห็น write.as มีแบบเสียตังรายเดือนด้วย แต่ยังต้องศึกษาเพิ่มเติมอีก
โฆษณา

ทอฟฟี่จากระยอง

โฟสต์นี้เห็นว่าออกนอกเรื่องของ @veer66@mstdn.io และอยากโพสต์ภาษาไทยก็เลยกลับมาลงที่ WordPress ครับ

ปกติผมซื้อทอฟฟี่จากระยองในตัวเมืองระยองเลย แต่ว่าย้ายบ้านไปแล้วก็เลยไปซื้อของทางหนองละลอกแทน ขายกันหน้าโรงงานเลยเป็นสินค้า OTOP ทอฟฟี่หลัก ๆ ทำจากสับปะรด กลัวยและกระทิ ซึ่งก็น่าจะเป็นผลผลิตจากแถว ๆ นั้นเอง หอม หวาน มัน อมเปรี้ยวนิด ๆ อร่อยมาก ยี่ห้อคุณละออ

ถ้าสมมุติว่าไม่ใช้ REST

อ่านเรื่องที่วิจารณ์ REST มาแล้วก็คิดว่าถ้าไม่ใช้ REST ผมจะใช้อะไร

🚫 XML-RPC นี้ 10 กว่าปีก่อนนี้ผมใช้มาเยอะ ตอนนี้คิดว่าไม่จำเป็นก็อย่าไปยุ่งด้วยดีกว่า XML-RPC ยังไม่ไหว SOAP ก็ลืืมไปเลยดีกว่า

🚫 gRPC นี้ก็อาจจะดีก็ได้ แต่ว่าอย่างน้อย ๆ ตอนนี้ก็ยังไม่เห็น lib ที่เอาไว้ใช้กับ Common Lisp หรือ GNU Guile ดูเอกสาร แล้วก็คิดว่าต้องนอนให้พอแล้วมีเวลาอ่านดี ๆ หน่อย ไปยุ่งกับมันตอนนี้ก็ไม่น่าจะมีประโยชน์อะไรขึ้นมา ต่อไปถ้าเป็นที่นิยมกันผมก็จะใช้ด้วยก็ได้ แต่ตอนนี้ยัง

💡 JSON-RPC นี่เห็นใน Wikipedia แล้วก็นึกภาพออกเลย หา lib สำหรับ Common Lisp ก็ดี ซึ่งถ้าใช้ Common Lisp ได้ภาษาอื่น ๆ ที่ชาวบ้านเขาพอจะเขียนกันก็คงมีให้ใช้หมด

จะว่าไปใช้ REST ผมก็ไม้ได้อึดอัดอะไร ให้เขียน JSON เองแล้วอัดใส่ cURL ผมก็ทำอยู่แทบทุกวัน ถึงจะไม่ค่อยสนุกก็ตามที แต่ก็ยังรู้สึกว่า JSON-RPC มันก็น่าสนใจ เรื่องประสิทธิภาพ เพราะว่าดูแล้ว web framework หลาย ๆ ตัวเวลาทำ routing นี้ พอได้ request มาก็ใช้ Regex ของแต่ละจุดมาไล่ดูทีละจุด ๆ ว่าเข้าข้อนี้ได้ไหมข้อนั้นได้ไหม จะแก้โดยใช้เอา Regex Set ไปทำ NFA/DFA ชุดเดียวเลยก็ได้ แต่ก็ไม่เห็นมีใครทำ แถมตอน debug ก็คงวุ่นวายพิกล แต่ถ้าเป็น JSON-RPC นี้น่าจะใช้พวก hash-map ระหว่างชื่อ method กับ function ได้เลย ซึ่งน่าจะทำให้เร็วและ debug ง่ายขึ้นด้วย ทำให้ JSON-RPC ดูน่าสนใจขึ้นมาเลย

Endless OS

ดูเครื่อง Acer แล้ว OS มันจะใช้ Endless OS ผมเลยลองไปค้นดูเจอเว็บนี้ https://endlessos.com/th/ จากเว็บนี้ดูดีกว่า Linpus มาก ๆ

โดยคร่าว ๆ แล้วก็ใช้ลง app นี่น่าสนใจสำหรับ user ทั่ว ๆ ไปมาเยอะเลยกระทั่ง Scratch ที่เอาไว้คนเริ่มเขียนโปรแกรมได้

Screenshot-2017-12-3 Endless OS
(ภาพมาจาก https://endlessos.com/th/)

หาต่อใน distrowatch ดูพบว่าฐานมาจาก Debian Ubuntu และใช้ GNOME shell ด้วย

จากที่ไปแอบกดเล่นที่เดอะมอลล์ก็ง่ายดี แต่ยังไม่ได้ลองเปิด terminal ลง Emacs อะไรแบบนี้

ของเยอะขนาดนี้คิดว่าเครื่องหน้าอาจจะลอง Acer แทน Lenovo ก็ได้ จริง ๆ Lenovo ก็ดี แต่ชอบ Acer ที่ลง OS แบบเป็นเรื่องเป็นราวมา

Lisp ไม่จำเป็นต้องเขียนแบบ Functional Programming

ใน code นี้ Python กับ Emacs Lisp แทบจะเหมือนกันทุกอย่างบรรทัดต่อบรรทัด เขียนแบบ imperlative ธรรมดา

อาจจะต่างบ้างที่ (cdr …) มี time complexity เป็น O(1) แต่ [1:] นี่ O(k) เพระา data structure ที่ใช้ต่างกัน ถึงจะบอกว่าเป็น list เหมือนกันก็ตามแต่ของ Emacs เป็น singly linked list ของ Python ผมเดา ๆ ว่าน่าจะเป็น array list?

 

emacs_py

 

อยากไรก็ตามใน Emacs Lisp ปกติเวลาทำแบบนี้ก็จะใช้ (dolist …) แทน และใน Python ก็ใช้ for กับ iterator อันนี้เพียงแต่อยากยกตัวอย่างให้ดูว่ามันก็ไม่ได้ต่างกันมาก

XPCOM

เปิดดู XPCOM หลังจากที่ไม่ได้ดูมาหลายปี เพราะว่าอยากรู้ว่า blog ที่อ่านเมื่อเช้าจะจริงหรือเปล่า
 
มันก็ใช่คือ XPCOM นี่ประมาณว่าไปล้วงเอา class ของ C++ ใน Gecko ออกมาใช้ได้เลย เฉพาะ class ที่ทำเป็น XPCOM ไว้
 
ท่าแบบนี้จะไปปรับ class ใน Gecko เองก็น่าจะทำให้ addon พังได้เลย?
 
แล้วก็ดูจาก Wikipedia ก็มีกรณี่ใช้ XPCOM เยอะจน Apple ไปเลือก KHTML และปี 2008 ลดการใช้ XPCOM ลง Gecko ก็ไวขึ้น
 
แต่คงลืมไม่ได้ว่า Firefox สร้างชื่อขึ้นมาได้ก็เพราะ Addon ที่ขี่ XPCOM อยู่นี่ล่ะ
 
 

ร้านกาแฟใหม่ที่เกษตรฯ: The Black Bear Brews

หลังจากที่ First Espresso หายไปก็มีร้านชามาแทน ตอนนี้ร้านชาก็ไปแล้ว เปลี่ยนเป็นร้านกาแฟ The Black Bear Brews แทน

P1060299

ดูราคาแล้วก็รู้สึกว่าท่าจะไม่ธรรมดาเพราะว่ากาแฟร้านแพงกว่าเย็น ปกติผมเจอแต่กาแฟเย็นแพงกว่า
P1060296

 

ก็เลยลอง cappuccino ร้อนดู ลุงบาริสต้าชงมาดีมากสำหรับราคานี้ แน่นอนว่าเมล็ดที่ใช้ก็ดีด้วย
P1060288

 

สรุปว่าดี พากันไปดื่มเลย

 

[video] วิธีตรวจ/แก้งานแปล mozilla.org

 

วันที่ 14 พ.ย. 2560 นี้ Firefox 57 จะออกแล้ว มีการปรับปรุงเยอะมาก ๆ น่าจะพอหรือยิ่งกว่าสมัย Firefox 3.X เลย

คำอธิบาย/โฆษณาอะไรต่าง ๆ อยู่เว็บ Mozilla.org ซึ่งต้องขอขอบคุณทุกท่านที่ช่วยกันแปลเป็นภาษาไทยจนเสร็จแล้ว

ข้อดีของการแปลเสร็จไป 1 รอบการตรวจทาน ก็จะอ่านจากเว็บที่เหมือนจริงได้เลย ซึ่งก็น่าจะง่ายและเห็นภาพขึ้น

ผมก็เลยทำวิดีโอแสดงวิธีตรวจ/แก้งานแปล mozilla.org คร่าว ๆ ขึ้นมาครับ เริ่มจากเข้า https://pontoon.mozilla.org ครับ