2 điểm bởi GN⁺ 2023-10-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • Spacedrive là một cross-device data platform cho phép xử lý tệp từ nhiều thiết bị và đám mây tại một nơi, lập chỉ mục và tìm kiếm tệp, email, ghi chú, cùng các nguồn bên ngoài, đồng thời đồng bộ qua P2P
  • Không thay thế Finder hay Explorer, mà đóng vai trò là một lớp phía trên các trình quản lý tệp của hệ điều hành để tìm kiếm và duyệt local disk, ổ đĩa ngoài, NAS, cloud storage và các nguồn dữ liệu lưu trữ
  • Gán hàm băm nội dung BLAKE3 cho mọi tệp để nhận diện cùng một tệp bằng cùng một hash, cho phép theo dõi trùng lặp và loại bỏ trùng lặp trên toàn bộ nhiều thiết bị
  • Đồng bộ giữa các thiết bị dùng P2P sync dựa trên Iroh/QUIC với kết nối trực tiếp, đồng bộ metadata mà không cần server, cloud hay điểm lỗi đơn, còn tệp vẫn được giữ ở vị trí gốc
  • Lập chỉ mục S3, Google Drive, Dropbox, OneDrive, Azure, GCS thành các cloud volumes cùng với local storage; còn Gmail, Apple Notes, Chrome Bookmarks, Slack, GitHub... trở thành kho lưu trữ có thể tìm kiếm thông qua adapter dựa trên script
  • Tích hợp với Spacebot để chạy runtime AI agent như một tiến trình riêng tùy chọn, trong đó Spacedrive đảm nhiệm lớp dữ liệu, quyền hạn và thực thi, còn Spacebot phụ trách phần trí tuệ
    • Mỗi instance Spacebot được ghép cặp với một node Spacedrive, và node đó xử lý xác thực agent, duy trì đồ thị thiết bị, phân giải quyền hạn và chuyển tiếp tác vụ tới thiết bị ngang hàng
    • Việc đọc tệp, shell command và tác vụ được proxy tới thiết bị đích thông qua Spacedrive; hệ thống quyền hạn xử lý thiết bị, đường dẫn, tác vụ nào có thể truy cập và liệu có cần con người xác nhận hay không
  • Khi được kích hoạt, các bản ghi cần lập chỉ mục sẽ đi qua pipeline Safety Screening trước khi trở thành dữ liệu có thể tìm kiếm
    • Prompt Guard 2 phát hiện prompt injection trong email, tin nhắn và tài liệu bằng bộ phân loại cục bộ
    • Thông qua trust tiers, isolation system và content fencing, các bản ghi bị gắn cờ sẽ bị loại khỏi truy vấn của AI agent và có thể được xem xét trong ứng dụng desktop
  • Kiến trúc cốt lõi gồm Virtual Distributed Filesystem, hệ thống nhận diện nội dung, transactional actions và đồng bộ không leader
    • Tệp và thư mục trở thành các đối tượng độc lập với vị trí vật lý, và mỗi tệp có địa chỉ SdPath hoạt động trên nhiều thiết bị
    • Các thao tác tệp có dạng durable job với khả năng xem trước trước khi thực thi, phê duyệt hoặc hủy, và chịu được gián đoạn mạng cũng như khởi động lại thiết bị
  • Việc triển khai dựa trên một crate Rust duy nhất và kiến trúc CQRS/DDD, sử dụng các công nghệ chính như Tokio, SQLite, SeaORM, sqlx, Iroh, BLAKE3, LanceDB, FastEmbed, OpenDAL, Tauri 2, React Native, React 19, Vite, TanStack Query, Tailwind CSS v4, Specta
  • Ứng dụng desktop nhắm tới macOS, Windows, Linux; ứng dụng mobile nhắm tới iOS, Android; đồng thời còn có cấu trúc CLI, daemon, headless server và browser client
  • Yêu cầu để chạy gồm Rust 1.81+, Bun 1.3+, just và Python 3.9+ cho adapter; các lệnh phát triển là just setup, just dev-desktop, just test
  • Mô hình quyền riêng tư và bảo mật là local-first; lưu lượng P2P được mã hóa bằng QUIC/TLS, thư viện có thể mã hóa đĩa bằng SQLCipher, và không có telemetry dùng cho tracking hay analytics
  • Giấy phép là FSL-1.1-ALv2 Functional Source License và sẽ chuyển sang Apache 2.0 sau 2 năm

1 bình luận

 
GN⁺ 2023-10-12
Ý kiến trên Hacker News
  • Ngay sau khi cài đặt, ứng dụng đã yêu cầu tạo thư viện, chia sẻ dữ liệu phân tích và đăng nhập, nên kỳ vọng của tôi khác hẳn so với một trình quản lý tệp khác
    Tôi di chuyển tới một thư mục bất kỳ trên ổ đĩa rồi nhấp đúp nhưng không có gì xảy ra; mở bằng menu ngữ cảnh cũng vậy
    Hóa ra nếu trong một thư mục có 15 nghìn tệp thì về cơ bản không thể duyệt được
    Total Commander và Windows Explorer không gặp vấn đề này, nên có lẽ Spacedrive cần trau chuốt thêm ngay từ chức năng duyệt tệp cơ bản

    • Cảm ơn vì đã dùng Spacedrive; lỗi xảy ra khi duyệt trước khi thêm “Location” này chúng tôi đã biết
      Trái với một số phản hồi ở đây, Spacedrive được thiết kế với dữ liệu dung lượng lớn trong đầu; nó lập chỉ mục trước các Location để tạo cache, đồng thời cache và ảo hóa mọi thứ
      Trong bản cập nhật tiếp theo, chúng tôi dự định sửa lỗi khi duyệt những nơi không phải Location; có vẻ nhiều người dùng thử duyệt trước khi thêm vào Location
      Đây vẫn là phần mềm alpha, nên mong mọi người cho chúng tôi thời gian để hoàn thiện
    • Hầu hết các ứng dụng React dường như không mấy tính đến việc hỗ trợ dữ liệu lớn
      Khó có thể chỉ trách nhà phát triển; tôi nghĩ framework nên hỗ trợ sẵn việc này
      Không nên bắt người ta phải hiểu danh sách ảo hóa mới làm được
      Khi tôi tạo TableView bằng SwiftUI, dù hoàn toàn không biết cơ chế bên trong, tôi vẫn có thể cuộn qua hàng nghìn mục
    • Windows Explorer cũng bị khựng nếu có nhiều tệp trong một thư mục trên HDD
      Vì không có cache thứ tự sắp xếp, nếu mở theo kiểu không phải thứ tự chữ cái thì phải chờ hơn 5 phút để nó sắp xếp
  • Khi tôi thấy dự án này khá lâu trước đây, chưa có gói phát hành để tự dùng thử, nên tôi định chờ đến khi sẵn sàng rồi xem lại; có vẻ bản alpha đã ra khoảng một giờ trước nên lại được đăng lên HN
    Bản thân ý tưởng thì đáng hoan nghênh
    Ngày nay ranh giới giữa tệp cục bộ nghiêm ngặt và nhiều kho lưu trữ đám mây đã mờ đi
    Cá nhân tôi vẫn giữ ranh giới đó và hầu như không mount kho đám mây trên Mac, nhưng vợ tôi là học giả thì dùng cả Dropbox, iCloud Drive, Google Drive và kho lưu trữ phía Microsoft
    Lý do là những người làm việc cùng cô ấy chia sẻ tệp và cộng tác đánh giá qua từng dịch vụ đó
    Nếu một công cụ như thế này có thể che đi các vấn đề kết nối theo từng nhà cung cấp và những hành vi kỳ lạ, đồng thời cung cấp một hệ thống tệp trong suốt trông như cục bộ nhưng phía sau có thể gắn với bất kỳ kho đám mây nào, thì nó sẽ giúp ích khá nhiều cho workflow
    Điều cốt lõi là tính dễ dùng; nếu độ trễ lớn khiến nó có cảm giác chậm hơn Finder thì triển vọng sẽ thấp

  • Rất có thể Hacker News không phải nhóm người dùng tối ưu cho sản phẩm kiểu này
    Những người ở đây nhiều khả năng đã có workflow được tối ưu hóa riêng, và tôi cũng vậy
    Sản phẩm này có vẻ phù hợp hơn với nhà sáng tạo số dùng Windows và Mac nhưng không quen với terminal
    Tức là những người như animator, họa sĩ minh họa, biên tập video, nghệ sĩ 3D, nhà sản xuất âm nhạc, YouTuber, streamer
    Tuy nhiên tôi không chắc nhóm thứ hai đó có thực sự muốn thứ như thế này không
    Chỉ nhìn marketing thì không rõ phần mềm này chính xác làm gì, và tôi nghĩ nhóm đó cũng sẽ thấy vậy
    Tôi hiểu họ muốn nói đến “trải nghiệm tệp phổ quát”, nhưng cụ thể nó nghĩa là gì thì không rõ
    Không nên bắt người dùng phải cài phần mềm chỉ để hiểu tính năng
    Việc nó là mã nguồn mở hoặc chạy trên Linux dường như cũng không quá quan trọng với họ
    Nếu ở giai đoạn này, tôi sẽ làm lại hoàn toàn phần marketing và tối ưu cho nhóm thứ hai đó
    Nên làm cùng người phụ trách PR hoặc chuyên gia marketing để truyền đạt cụ thể và hiệu quả giá trị đang tạo ra là gì
    Ngoài ra, để tiết kiệm công sức cho đội ngũ, tôi có lẽ sẽ gỡ kho mã nguồn và dừng cả bản Linux, hoặc để riêng tư cho đến khi có nhu cầu
    Chúc may mắn

  • Tôi đã theo dõi khá lâu và có vài góp ý
    Việc lập chỉ mục một thư mục phát triển cục bộ của tôi đến giờ đã mất hơn 35 phút, và có lẽ tôi sẽ không chờ đến khi xong
    Như những người khác đã nói, độ trễ là vấn đề
    Trên mẫu macOS M1 14 inch bản cơ bản, ngay cả sau khi thêm Location, đôi khi vẫn mất 2–4 giây từ lúc mở thư mục đến khi thấy tệp
    Nếu tôi không bỏ sót gì thì có vẻ vẫn chưa có tab
    Chức năng sắp xếp và nhóm tệp quá nghèo nàn, hoặc gần như không có, nhưng tôi nghĩ sẽ được cải thiện trong quá trình phát triển
    Để có trạng thái lập chỉ mục hợp lý, có vẻ người dùng phải làm khá nhiều việc, như tự tay thêm nhiều Location
    Tôi hiểu đây là local-first, nhưng cách làm telemetry và đăng nhập thì tôi thực sự không thích
    Nhìn chung, sau khi tự dùng thử tôi hơi thất vọng nên khả năng cao là không hợp với tôi, nhưng vẫn có thể có người dùng mục tiêu và dự án còn một chặng đường phía trước
    Trông thì thật sự rất đẹp

    • Cập nhật là tôi quên mất mình đã để nó chạy, và nó vẫn tiếp tục lập chỉ mục cùng thư mục phát triển cục bộ đó trong hơn 4 giờ :(
  • Tôi thắc mắc vì sao lại làm cái này bằng React
    Tôi hiểu Rust không có framework GUI như Qt, nhưng liệu đây có phải câu trả lời không
    Có phải vì không muốn học thứ mới không?
    Hoàn toàn có thể làm bằng ứng dụng C++ hoặc Qt, viết GUI bằng QML và gắn Lua, Python, JavaScript làm ngôn ngữ scripting
    Tất nhiên đó cũng là công việc
    Render bằng trình duyệt gần giống một phiên bản dễ hơn của việc tạo GUI bằng GPU API như OpenGL
    Hệ điều hành vốn đã có công cụ GUI rồi, cứ dùng chúng là được
    Ngoài chuyện đó thì trông khá ổn, nhưng tôi nghĩ những thứ như pcmanfm cũng hỗ trợ thêm vị trí từ xa mà
    Một điều nữa tôi tò mò là vì sao lại dùng Prisma

    • Nếu muốn làm ứng dụng desktop đa nền tảng bằng Rust thì hiện tại tôi cũng sẽ khuyên dùng Tauri + React
      Tauri giúp dễ chuyển xuống Rust khi cần tác vụ hiệu năng cao hoặc tích hợp với hệ điều hành, và cũng đã có sẵn đóng gói cho các nền tảng chính
      Dùng React thì có thể tận dụng một hệ sinh thái tốt với rất nhiều component UI sẵn có
      Điều này khác với hầu hết các framework GUI Rust native
      Ngoài ra còn có thể tái sử dụng kỹ sư frontend cùng năng lực công nghệ web và cộng tác với designer của họ
    • Nói Rust không có framework GUI thì vẫn có Slint, egui và các crate binding Qt
      Có thể nói chúng chưa chín muồi như Qt, nhưng so với thứ chạy trong trình duyệt thì trong nhiều trường hợp là đủ
  • Việc kho này đang ở giai đoạn alpha rất sớm và còn nhiều lỗi đã biết mà lại có nhiều GitHub star như vậy thì hơi khó tin
    Hơn nữa trông có vẻ đã nhận đầu tư VC, điều này còn khó hiểu hơn cả việc langchain hay pinecone được đầu tư
    Ít ra bên đó còn là các dự án dựa trên AI, còn dự án này thuộc một lĩnh vực đã được khai thác rất nhiều
    Ngay cả nếu miễn phí vĩnh viễn thì có lẽ mọi người cũng không muốn dùng, và nếu có quảng cáo, theo dõi, thuê bao tháng thì lại càng không
    Về cơ bản không có lý do để tin tưởng, nhưng có nhiều lý do để nghi ngờ
    Đây không phải công kích cá nhân, nhưng nếu chưa từng cân nhắc góc nhìn này thì nên suy nghĩ thử

  • Màn hình đầu tiên sau “welcome” là đăng nhập
    Không hiểu vì sao một trình quản lý tệp lại cần đăng nhập; thời đại này thật kỳ lạ

    • Ngay dòng đầu của liên kết đã viết như sau: “Spacedrive is an open source cross-platform file manager, powered by a virtual distributed filesystem (VDFS) written in Rust.”
      Lý do cần đăng nhập là vì đây là một hệ thống tệp từ xa
      Nghĩ đến Dropbox sẽ đúng hơn là một trình quản lý tệp
    • Chúng tôi đã thêm vào ở phút cuối nhưng không giải thích rõ cho người dùng, đó là lỗi của chúng tôi
      Bản cập nhật tiếp theo sẽ thay đổi điều này
      Cuối cùng, đăng nhập sẽ trở thành một cách để kết nối nhanh các thiết bị, giống như Tailscale
  • Một chỉ mục siêu dữ liệu có thể tìm kiếm và duyệt bao phủ cả lưu trữ đám mây và cục bộ rải rác, cả kho đã mount lẫn chưa mount, chắc chắn rất thú vị và trong một thời gian dài gần như là một kiểu “chén thánh”
    Quản lý tài sản số không phải khái niệm mới, nhưng hiện không phải là lĩnh vực có nhiều lựa chọn
    Portfolio hay bộ sản phẩm phức tạp của Adobe cung cấp nhiều chức năng như vậy, nhưng tập trung vào quy trình làm việc và metadata hơn là lưu trữ đám mây
    Ngày nay phải rất thận trọng khi đưa thêm một dịch vụ phụ thuộc vào đám mây vào sử dụng
    Xét đến mức nhạy cảm của “mọi tệp, bao gồm cả tệp cục bộ và ngoại tuyến”, self-hosting/on-premises có thể trở thành yêu cầu bắt buộc
    Nếu cần tài khoản, có lẽ người ta sẽ muốn tích hợp với hệ thống quản lý danh tính hiện có thông qua OIDC hoặc SAML
    Nếu công cụ này trở thành cửa ngõ duy nhất bắt buộc để xem toàn bộ tệp và người ta xây dựng quy trình làm việc trên đó, cũng cần các tính năng đảm bảo tính liên tục để có thể tin vào khả năng sẵn sàng
    Hy vọng tiếp tục theo đuổi
    Chưa có nơi nào giải quyết triệt để chuyện này

  • Dự án trông rất hay và tôi thích tham vọng của nó
    Có vài ghi chú
    Nên có một công tắc rõ ràng cho mọi truy cập WAN, và các công tắc gửi dữ liệu phân tích hoặc dữ liệu sử dụng nên tách riêng, mặc định là tắt
    Tốt hơn nữa là biến những thứ này thành cờ ở thời điểm biên dịch
    Trước đây terminal mới tên Warp rất hấp dẫn, nhưng mặc định gửi dữ liệu qua mạng nên lập tức trở thành lý do loại bỏ đối với nhiều người
    Hy vọng lấy nhiều cảm hứng từ Windirstat và Everything, đặc biệt nên đặt hiệu năng tìm kiếm của Everything làm mục tiêu
    Tôi thấy có trong roadmap rồi, nhưng xin nhắc lại là cần có tab
    Cũng nên cân nhắc rời khỏi Prisma
    Nó bọc cơ sở dữ liệu quá nhiều và có quá nhiều “ma thuật”
    Có thể căn cứ chưa mạnh, nhưng tôi hơi lo rằng một ngày nào đó họ sẽ đổi giấy phép

  • Mong mọi người ngừng xem written in Rust ở đầu README như một tính năng
    Mỗi khi thấy câu đó, tôi không nghĩ “chắc sẽ ổn định hơn”, mà nghĩ “đây là dự án sở thích của ai đó rồi”

    • Trên website tôi không thấy chỗ nào đưa Rust ra như một tính năng
      Nếu là README thì với một dự án mã nguồn mở, đưa vào như một chi tiết liên quan có vẻ hợp lý