Earthstar – ฐานข้อมูลสำหรับแอปส่วนตัวแบบกระจายศูนย์ที่เน้นออฟไลน์เป็นหลัก
(earthstar-project.org)- Earthstar คือข้อกำหนดข้อมูลและไลบรารี JavaScript สำหรับสร้าง แอปแบบกระจายศูนย์ส่วนตัว ที่ผู้ใช้เป็นเจ้าของและดูแลเองโดยตรง
- ข้อกำหนด Earthstar ใหม่เปลี่ยนมาใช้พื้นฐาน Willow แล้ว และ Earthstar v11 เปิดให้ใช้งานในสถานะเบต้าอยู่ในขณะนี้
- แอปรองรับ การทำงานแบบออฟไลน์ เป็นพื้นฐาน พร้อมทั้งการซิงก์แบบสด เอกสารชั่วคราว การลบจริง และการจัดเก็บเพลง รูปภาพ วิดีโอ
- เซิร์ฟเวอร์เป็นทางเลือก แต่รูปแบบการใช้งานจะเป็น โฮสต์เอง เสมอ และไม่พึ่งพาบล็อกเชนหรือโทเค็น
- ทำงานได้บนเบราว์เซอร์, Deno, Node พร้อมรองรับการตรวจสอบ ed25519, การเข้าถึงแบบอ่านอย่างเดียว, การซิงก์แบบสตรีมมิง, ผู้เขียนหลายคน และไดรเวอร์จัดเก็บข้อมูล
บทบาทและสถานะปัจจุบันของ Earthstar
- Earthstar คือข้อกำหนดลักษณะฐานข้อมูลและไลบรารี JavaScript สำหรับสร้าง แอปพลิเคชันที่ผู้ใช้เป็นเจ้าของ
- Earthstar specification ใหม่มีพื้นฐานบน Willow
- Earthstar v11 เปิดให้ใช้งานในเวอร์ชัน เบต้า อยู่ในขณะนี้
- มีเอกสาร, JavaScript API, ข้อกำหนด, และทิวทอเรียลแอปแชตเป็นจุดเริ่มต้นหลัก
ฟีเจอร์สำหรับแอปที่เน้นออฟไลน์เป็นหลัก
-
ฟีเจอร์ของแอปพลิเคชัน
- รองรับ การทำงานแบบออฟไลน์
- รองรับการซิงก์แบบสดและวิธีแบบ Sneakernet
- สามารถเก็บเพลง รูปภาพ และวิดีโอได้
- รองรับเอกสารชั่วคราวและการลบข้อมูลจริง
- ใช้ อัตลักษณ์ (identity) ได้หนึ่งรายการหรือหลายรายการ
-
โมเดลการใช้งาน
- เซิร์ฟเวอร์เป็นทางเลือก
- รูปแบบการใช้งานเป็น โฮสต์เอง เสมอ
- ไม่ใช้บล็อกเชนและโทเค็น
- ชูแนวคิดว่า “ฟรีตลอดไปในทุกความหมาย”
-
ฟีเจอร์ทางเทคนิค
- รองรับการตรวจสอบ ed25519
- ทำงานได้บนเบราว์เซอร์, Deno, Node
- สามารถมอบสิทธิ์เข้าถึงแบบอ่านอย่างเดียวได้
- รองรับการซิงก์ที่มีประสิทธิภาพและการซิงก์แบบสตรีมมิง
- ใช้อัตลักษณ์เดียวกันได้บนหลายอุปกรณ์
- รองรับผู้เขียนหลายคน, ไดรเวอร์จัดเก็บข้อมูล, และสิทธิ์การเขียนเอกสาร
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
คล้ายกับ nostr อยู่บ้างแต่ก็มีความต่าง ข้อมูลไม่ได้อ้างอิงแบบ content-addressed แต่เป็นแบบ อิงชื่อ จึงรองรับการเขียนทับและการลบได้ และชนิดข้อมูลดิบก็ไม่ใช่ชุดของข้อความ แต่เป็น associative array ที่แมปจากชื่อไปยังเอกสาร
เอกสารถูกรวมเป็น "shares" และถ้าเซิร์ฟเวอร์จะยอมรับว่าตนมีเอกสารของ share นั้น ก็ต้องรู้ "share address" ก่อน บางส่วนเป็นส่วนตัว บางส่วนเป็นสาธารณะ วิธีเข้าถึงแบบนี้น่าสนใจ และโปรเจ็กต์ที่เลือกสุดทางด้านใดด้านหนึ่งของแกนนี้มักจะลำบากกันเกือบหมด
น่าจะกันสแปมเมอร์กับพวกมิจฉาชีพได้สำเร็จ แต่ถ้าเป็นกลุ่มใหญ่ที่ต้องรับมือกับผู้โจมตีที่มีแรงจูงใจจริงจัง ก็คงต้องระวัง ถ้าผู้ใช้คนหนึ่งเปิดเผย share address ที่อยู่ในพื้นที่ก้ำกึ่งระหว่างสาธารณะกับส่วนตัว ก็ดูเหมือนว่าผู้ใช้ทั้งหมดของ share นั้นจะถูกเปิดเผยไปด้วย
web of trust ที่ผู้โจมตีต้องเจาะแต่ละ hop ของกราฟความเชื่อใจก่อนจะหาตัวเป้าหมายเจออาจจะดีกว่า แต่ก็เข้าใจได้ว่าทำไมถึงยอมเสียความละเอียดอ่อนไปเพื่อความเรียบง่าย เพราะความซับซ้อนที่ผู้ใช้ต้องรับนั้นสูงขึ้น หวังว่าสิ่งนี้จะสำเร็จ รู้สึกเหมือนเราสูญเสียเว็บไปแล้ว และหากไม่มีอะไรที่คล้ายเว็บ ผู้คนจำนวนมากก็ประสานงานกันในช่วงเวลาสำคัญได้ยาก
share address ควรถูกปฏิบัติเหมือน ssh key
ยังไม่ค่อยเข้าใจว่ามันคืออะไรกันแน่
เป็นฐานข้อมูลเอกสาร/สื่อบางอย่างที่ใส่ JavaScript มาเยอะหน่อยหรือ? ออกแนว self-hosting นิด ๆ และทำ replication ไปยัง peer node แบบ Mastodon หรือเปล่า? ดูเหมือนจะมีวิสัยทัศน์ใหญ่ แต่ยังมองไม่ชัด
ยังไม่แน่ใจว่าความกระจายศูนย์ของ Earthstar ให้อะไรเพิ่ม ถ้าเพื่อสำรองข้อมูล SQLite กับ PGlite ก็ทำได้ค่อนข้างง่ายอยู่แล้ว ยังมองไม่ค่อยเห็นว่ามันมีข้อดีใหญ่สำหรับผู้ใช้ฐานข้อมูลส่วนใหญ่
แต่สำหรับคนที่อยากเก็บข้อมูลไว้ในอุปกรณ์ของตัวเอง พร้อมแชร์ข้อมูลนั้นกับคนอื่น และให้พวกเขามีสำเนาในเครื่องด้วย ก็ดูจะมีประโยชน์อยู่ อาจจะเหมาะกับการแชร์คอนเทนต์ผิดกฎหมายก็ได้
ชัดเจนว่ามีฟีเจอร์น่าสนใจ แต่รู้สึกว่าวิสัยทัศน์ถูกกลบไปด้วยการไล่รายการฟีเจอร์
คิดว่านี่ถูกแทนที่แล้วด้วย Willow protocol [0] ที่เคยลงมาก่อนหน้านี้
ฉันพยายามอ่าน Willow แต่จับต้นชนปลายไม่ได้เลย [1] มันดูเหมือน hierarchical key-value store ที่มีฟิลด์เพิ่มเติมกองเต็มไปหมดสำหรับ timestamp กับโทเค็นเข้ารหัส แต่แทบไม่มีตัวอย่างการทำงานเลย
แม้แต่ไลบรารี Rust ล่าสุด [2] ก็แทบจะเป็นแค่ชุด abstract class และ implementation ก็อยู่ในระดับที่โยน error ออกมาอย่างเดียว จะเล่นมุกเรื่องสภาพความประณีตของเทคยุโรปก็ยังได้ แต่ขอยิ้มสุภาพแล้วผ่านไปดีกว่า
[0] https://willowprotocol.org/earthstar/spec/
[1] https://willowprotocol.org/specs/data-model/index.html#data_...
[2] https://github.com/earthstar-project/willow-rs/tree/main
[1] https://nlnet.nl/project/current.html
[2] https://nlnet.nl/funding.html
ถ้าจะตัดสินคุณภาพของซอฟต์แวร์ที่สร้างในซิลิคอนแวลลีย์จากโปรเจ็กต์ที่ได้เงินลงทุน VC แล้วไม่ประสบความสำเร็จ ก็คงไม่มีทางจบ
คนที่อยู่เบื้องหลัง Willow ก็ดูจะเป็นทีมเดียวกัน: https://earthstar-project.org/docs/future#willow-protocol
https://willowprotocol.org/more/compare/index.html#compare_e...“ฟีเจอร์ข้างต้นทั้งหมดจะเป็นไปได้ด้วย Willow General Purpose Sync Protocol ใหม่ที่เรากำลังพัฒนาอยู่ เป็นโปรโตคอลใหม่ที่ได้แรงบันดาลใจจาก Earthstar และปรับแต่งพร้อมขยายแนวคิดของมัน เรากำลังจะเปิดตัวเว็บไซต์ใหม่ที่มีสเปกฉบับสมบูรณ์ของโปรโตคอลนี้”
“ถ้า Earthstar ให้ความรู้สึกคล้าย Willow มาก นั่นไม่ใช่เรื่องบังเอิญ Willow เริ่มต้นจากการนำ Earthstar มาคิดใหม่ และ Earthstar เวอร์ชันในอนาคตจะถูกสร้างบน Willow โดยหนึ่งในผู้ดูแลหลักของ Earthstar ก็คือหนึ่งในผู้เขียน Willow สองคน”
มี Python client ไหม? สิ่งเดียวที่ดูเกี่ยวกับ Python ในเอกสารคืออันนี้
# Earthstar timestamps in pythontimestamp = int(time.time() * 1000 * 1000)ถ้าให้เลือก ผม/ฉันขอแนะนำ jellyfin, immich แล้วที่เหลือก็ใช้แค่ sftp ดีกว่า การซิงก์ หรือไม่ก็การกระจายข้อมูล ทำได้ด้วย git, syncthing, rsync
ยังไม่เคยเห็น ตัวจัดการตัวตน หรือ SSO แบบ self-hosted ที่โอเคจริง ๆ เลย รู้ว่า bluesky กำลังทำอยู่ตัวหนึ่ง แต่ไม่แน่ใจว่าจะ self-host ได้ไหม ระบบเติมคำอัตโนมัติดันเปลี่ยนแบบ Freudian เป็น self hostage
อีกปัญหาหนึ่งที่โฮมแล็บ/ไพรเวตคลาวด์ยังแก้ไม่ตก คือการเป็น CA เอง และจัดการการเข้าถึงเครื่องของฉันโดยไม่ต้องไปสอนอีกฝ่ายใช้ ssh
อยากได้อะไรสักอย่างแบบ meshnet ของ NordVPN ที่คนซึ่งล็อกอินอยู่ในแพ็กเกจครอบครัวสามารถมองเห็นเครื่องของกันและกันเหมือนอยู่ในเครือข่ายโลคัลเดียวกันได้ ทำได้ด้วย wireguard ไหม? yggdrasil ก็ดูเหมือนแนวนี้ แต่ยังไม่ได้ลงลึก
ถ้าพูดถึงการจัดการตัวตนที่ “ดี” หมายถึงอะไรที่ไม่ใช่ OpenLDAP หรือ 389 หรือเปล่า? ถ้าต้องสนใจ Windows ด้วยก็ไม่แน่ใจว่ามันเข้ากันได้ดีแค่ไหน
การเป็น CA เองนั้นง่าย แต่ส่วนที่แย่คือการติดตั้ง CA นั้นลงบนทุกเครื่องที่ต้องการ ถ้าใช้ Let’s Encrypt ทุกอย่างก็ทำงานได้ดีหมด
Wireguard สามารถเชื่อม LAN สองฝั่งผ่านอินเทอร์เน็ตได้ แต่จะดีกว่าถ้ามีเราเตอร์ที่รองรับ wireguard อย่าง pfsense อยู่ที่ปลายทั้งสองฝั่ง ไม่อย่างนั้นก็ต้องติดตั้งการตั้งค่า routing แบบพิเศษบนเครื่องลูกข่ายแต่ละเครื่อง ส่วนวิธีส่งต่อ avahi สำหรับการค้นหาอัตโนมัติข้ามลิงก์นั้นฉันยังหาไม่เจอ
ยังเสียดายอยู่ที่เพิ่งมาร่วม ปาร์ตี้ SQLite หลังจากเบราว์เซอร์เลิกซัพพอร์ต SQLite ไปแล้ว
อันนี้ดูเป็นบล็อกโพสต์ที่น่าจะมีประโยชน์มาก เช่น เขียนว่าทำไมถึงออกแบบแบบนี้ หรือมีทางเลือกอื่นอะไรบ้าง
ความประทับใจแรกคือมันน่าสนใจดี ตัวตนเป็นคู่กุญแจ และยังชอบด้วยที่สามารถ เข้าถึงไฟล์และคอนเทนต์ด้วยชื่อ ได้
มีโอกาสจะมีการทำเวอร์ชันในภาษาอื่นอย่าง Python ไหม? ชอบทุกอย่างเลย ติดอยู่อย่างเดียวตรงที่เป็น JavaScript และฉันยังค่อนข้างระวังกับการใช้ JavaScript กับงานแบบนี้
น่าเสียดายที่ทั้งคู่ยังไม่ค่อยนิยมเท่าไร สุดท้ายคนก็มักจะไปขอ implementation หลายภาษา ซึ่งคงเป็นภาระกับผู้ดูแลโปรเจกต์แบบนี้ ไม่ว่าอย่างไรก็นั่นแหละคือความจริง และถ้าไม่ใช้ภาษาพวกนั้น ฉันก็สนใจ client library ของ Python เหมือนกัน
“self-host ได้เสมอ เซิร์ฟเวอร์เป็นทางเลือก ไม่มีบล็อกเชน ไม่มีโทเคน ฟรีตลอดไปในทุกความหมาย”
เป็น ประโยคสรุปใจความ ที่ยอดเยี่ยม