Earthstar – Cơ sở dữ liệu cho ứng dụng cá nhân, phân tán, ưu tiên ngoại tuyến
(earthstar-project.org)- Earthstar là một đặc tả dữ liệu và thư viện JavaScript để xây dựng ứng dụng phân tán riêng tư do người dùng tự sở hữu và vận hành
- Đặc tả Earthstar mới đã chuyển sang dựa trên Willow, và Earthstar v11 hiện được cung cấp ở bản beta
- Ứng dụng mặc định hoạt động ngoại tuyến, đồng thời hỗ trợ đồng bộ trực tiếp, tài liệu tạm thời, xóa thực sự, lưu trữ nhạc, ảnh và video
- Máy chủ là tùy chọn, nhưng mô hình vận hành luôn là tự host, không phụ thuộc vào blockchain hay token
- Hoạt động trên trình duyệt, Deno, Node và cung cấp xác minh ed25519, quyền truy cập chỉ đọc, đồng bộ streaming, nhiều tác giả và driver lưu trữ
Vai trò và trạng thái hiện tại của Earthstar
- Earthstar là một đặc tả mang tính cơ sở dữ liệu và thư viện JavaScript để xây dựng ứng dụng do người dùng sở hữu
- Đặc tả Earthstar mới dựa trên Willow
- Earthstar v11 hiện được cung cấp dưới dạng phiên bản beta
- Tài liệu, JavaScript API, đặc tả và hướng dẫn làm ứng dụng chat là các điểm bắt đầu chính
Tính năng cho ứng dụng ưu tiên ngoại tuyến
-
Tính năng ứng dụng
- Hỗ trợ hoạt động ngoại tuyến
- Hỗ trợ đồng bộ trực tiếp và phương thức Sneakernet
- Có thể lưu trữ nhạc, ảnh và video
- Hỗ trợ tài liệu tạm thời và xóa dữ liệu thực sự
- Có thể sử dụng một hoặc nhiều identity
-
Mô hình vận hành
- Máy chủ là tùy chọn
- Mô hình vận hành luôn là tự host
- Không sử dụng blockchain và token
- Tự định vị là “miễn phí mãi mãi theo mọi nghĩa”
-
Tính năng kỹ thuật
- Hỗ trợ xác minh ed25519
- Hoạt động trên trình duyệt, Deno, Node
- Có thể cấp quyền truy cập chỉ đọc
- Hỗ trợ đồng bộ hiệu quả và đồng bộ streaming
- Có thể dùng một identity trên nhiều thiết bị
- Hỗ trợ nhiều tác giả, driver lưu trữ và quyền ghi tài liệu
1 bình luận
Ý kiến trên Hacker News
Hơi giống nostr nhưng có khác biệt. Dữ liệu không được định địa chỉ theo nội dung mà là dựa trên tên, nên hỗ trợ ghi đè và xóa; kiểu dữ liệu thô cũng không phải là tập hợp thông điệp mà là một mảng kết hợp ánh xạ từ tên sang tài liệu.
Tài liệu được gom thành các "shares", và để máy chủ thừa nhận rằng nó có tài liệu của share đó thì trước tiên phải biết "share address". Cách tiếp cận trong đó một số là riêng tư, một số là công khai khá thú vị; các dự án chọn cực đoan trên trục này thường gặp khó, và tôi nghĩ phần lớn là như vậy.
Có vẻ sẽ thành công trong việc chặn spammer và kẻ lừa đảo, nhưng tôi vẫn thận trọng với các nhóm lớn khi phải đối mặt với kẻ tấn công có động cơ rõ ràng. Nếu một người dùng làm lộ share address nằm ở vùng lưng chừng giữa công khai và riêng tư, có vẻ mọi người dùng của share đó đều bị lộ.
Web of trust sẽ tốt hơn, nơi kẻ tấn công phải xuyên qua từng bước nhảy trong đồ thị tin cậy trước khi tìm được mục tiêu, nhưng độ phức tạp mà người dùng phải gánh sẽ lớn hơn, nên tôi cũng hiểu vì sao họ chấp nhận thiếu độ chi tiết để đổi lấy sự đơn giản. Tôi mong những thứ như thế này thành công; tôi có cảm giác chúng ta đã đánh mất web, và nếu không có thứ gì giống web thì trong những thời điểm quan trọng, rất nhiều người sẽ khó phối hợp ở quy mô lớn.
Share address nên được đối xử như khóa ssh.
Tôi không chắc chính xác đây là gì.
Đây có phải là một cơ sở dữ liệu tài liệu·media nào đó dùng nhiều JavaScript không? Có vẻ hơi hướng tự host, rồi nhân bản sang các node ngang hàng kiểu Mastodon? Có vẻ có tầm nhìn lớn, nhưng tôi chưa thấy rõ.
Tôi không rõ tính phân tán của Earthstar đem lại điều gì. Nếu là sao lưu thì SQLite và PGlite cũng khá đơn giản. Tôi không thấy đây là lợi ích lớn với phần lớn người dùng cơ sở dữ liệu.
Có vẻ có lợi cho những người muốn lưu dữ liệu trên thiết bị của mình, đồng thời chia sẻ dữ liệu đó với những cá nhân khác và muốn họ cũng có bản sao cục bộ. Có khi cũng dùng để chia sẻ nội dung bất hợp pháp.
Rõ ràng có những tính năng thú vị, nhưng tầm nhìn có cảm giác bị mờ đi giữa danh sách tính năng.
Tôi xem thứ này đã được thay thế bởi giao thức Willow [0] từng được đăng trước đây.
Tôi đã cố đọc Willow nhưng thật sự không nắm bắt được [1]. Nó trông như một kho khóa-giá trị phân cấp gắn thêm rất nhiều trường cho timestamp và token mật mã, nhưng lại quá thiếu ví dụ hoạt động.
Ngay cả thư viện Rust gần đây [2] về cơ bản cũng chỉ là một bó lớp trừu tượng, còn phần triển khai thì chỉ ném lỗi. Có thể đùa về hiện trạng mức độ tinh tế của công nghệ châu Âu, nhưng tôi sẽ chỉ lịch sự mỉm cười cho qua.
[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
Nếu đánh giá chất lượng phần mềm do Thung lũng Silicon tạo ra bằng các dự án nhận vốn VC nhưng không thành công, thì chịu thôi.
Những người đứng sau Willow có vẻ cũng là cùng một đội: https://earthstar-project.org/docs/future#willow-protocol
https://willowprotocol.org/more/compare/index.html#compare_e...“Tất cả các tính năng trên sẽ được hiện thực nhờ Willow General Purpose Sync Protocol mới mà chúng tôi đang phát triển. Đây là một giao thức mới lấy cảm hứng từ Earthstar, tinh chỉnh và mở rộng các khái niệm của nó. Chúng tôi sẽ ra mắt một website mới chứa đặc tả đầy đủ của giao thức này.”
“Nếu Earthstar đem lại cảm giác rất giống Willow thì đó không phải là ngẫu nhiên. Willow bắt đầu từ việc hình dung lại Earthstar; các phiên bản Earthstar trong tương lai sẽ được xây dựng trên Willow, và maintainer cốt lõi của Earthstar là một trong hai tác giả của Willow.”
Có client Python không? Trong tài liệu, thứ duy nhất trông liên quan đến Python là đoạn này:
# Earthstar timestamps in pythontimestamp = int(time.time() * 1000 * 1000)Thà khuyên dùng jellyfin, immich, còn lại thì cứ sftp. Đồng bộ, à không, phân tán hóa thì có thể làm bằng git, syncthing, rsync
Vẫn chưa thấy trình quản lý danh tính tự host hay SSO nào ổn. Tôi biết bluesky đang làm một cái, nhưng không rõ có thể tự host được không. Tự động hoàn thành đã đổi theo kiểu Freud thành self hostage
Một vấn đề khác vẫn chưa giải được trong homelab/private cloud là làm sao tự làm CA và quản lý quyền truy cập vào máy của mình mà không phải dạy người khác dùng ssh
Tôi muốn một thứ giống meshnet của NordVPN, nơi những người đăng nhập trong gói gia đình có thể nhìn thấy máy của nhau như trong mạng cục bộ. wireguard có làm được không? yggdrasil cũng có vẻ giống vậy nhưng tôi chưa xem sâu
Nếu nói quản lý danh tính “tốt” thì có phải ý là không phải OpenLDAP hay 389 không? Nếu phải tính cả Windows thì tôi không rõ nó phù hợp đến mức nào
Tự làm CA thì dễ, nhưng phần cài CA đó lên mọi máy mình muốn mới không hay. Dùng Let’s Encrypt thì mọi thứ chạy ổn
Wireguard có thể nối hai LAN qua Internet, nhưng sẽ tốt nếu có hai router hỗ trợ wireguard như pfsense ở hai đầu. Nếu không thì phải cài thiết lập định tuyến đặc biệt trên từng máy client. Tôi vẫn chưa tìm ra cách chuyển tiếp avahi để tự động khám phá qua liên kết đó
Tôi vẫn tiếc là chỉ tham gia bữa tiệc SQLite sau khi trình duyệt đã ngừng hỗ trợ SQLite
Cái này có lẽ rất cần một bài blog hữu ích. Ví dụ như vì sao thiết kế như vậy, các phương án thay thế là gì
Ấn tượng đầu tiên là thú vị. Danh tính là cặp khóa, và việc có thể truy cập theo tên vào tệp và nội dung cũng hay
Có khả năng sẽ có bản triển khai bằng ngôn ngữ khác như Python không? Tôi thích mọi thứ, chỉ vướng mỗi chỗ là JavaScript, và tôi vẫn còn thận trọng khi dùng JavaScript cho mục đích như thế này
Tiếc là cả hai đều không quá phổ biến, nên cuối cùng lại phải yêu cầu triển khai bằng nhiều ngôn ngữ, và có lẽ đó là gánh nặng cho maintainer của dự án kiểu này. Dù sao thực tế là vậy, và nếu không phải những ngôn ngữ như thế thì tôi cũng quan tâm đến thư viện client Python
“Luôn tự host. Máy chủ là tùy chọn. Không blockchain. Không token. Miễn phí mãi mãi theo mọi nghĩa.”
Đây là bản tóm tắt luận điểm tuyệt vời