Spacedrive - โปรแกรมสำรวจไฟล์ข้ามแพลตฟอร์มแบบโอเพนซอร์ส
(github.com/spacedriveapp)- Spacedrive คือ cross-device data platform สำหรับจัดการไฟล์จากหลายอุปกรณ์และคลาวด์ไว้ในที่เดียว ทำดัชนีและค้นหาไฟล์ อีเมล โน้ต และแหล่งข้อมูลภายนอก พร้อมซิงก์แบบ P2P
- ไม่ได้มาแทนที่ Finder หรือ Explorer แต่ทำหน้าที่เป็น เลเยอร์ระดับบน เหนือตัวจัดการไฟล์ของ OS เพื่อค้นหาและสำรวจดิสก์ในเครื่อง ไดรฟ์ภายนอก NAS, cloud storage และแหล่งข้อมูล archive
- กำหนด BLAKE3 content hash ให้ทุกไฟล์ เพื่อระบุไฟล์เดียวกันด้วยแฮชเดียวกัน และช่วยให้ ติดตามไฟล์ซ้ำ รวมถึงลบไฟล์ซ้ำได้ทั่วทั้งหลายอุปกรณ์
- การซิงก์ระหว่างอุปกรณ์เชื่อมต่อโดยตรงผ่าน P2P sync ที่อิง Iroh/QUIC ซิงก์ metadata โดยไม่มีเซิร์ฟเวอร์ คลาวด์ หรือจุดล้มเหลวเดียว ส่วนไฟล์ยังคงอยู่ในตำแหน่งเดิม
- ทำดัชนี S3, Google Drive, Dropbox, OneDrive, Azure, GCS ร่วมกับ local storage ในรูปแบบ cloud volumes และแหล่งอย่าง Gmail, Apple Notes, Chrome Bookmarks, Slack, GitHub จะกลายเป็น storage ที่ค้นหาได้ผ่าน adapter แบบสคริปต์
- ผสานกับ Spacebot เพื่อรัน AI agent runtime เป็นโปรเซสแยกแบบเลือกเปิดใช้ได้ โดย Spacedrive รับผิดชอบเลเยอร์ข้อมูล สิทธิ์ และการประมวลผล ส่วน Spacebot รับผิดชอบด้าน intelligence
- Spacebot แต่ละอินสแตนซ์จะจับคู่กับ Spacedrive node หนึ่งตัว โดย node นั้นจะทำหน้าที่ตรวจสอบสิทธิ์ agent, ดูแล device graph, resolve สิทธิ์ และส่งต่องานไปยังอุปกรณ์ peer
- การอ่านไฟล์ คำสั่ง shell และงานต่าง ๆ จะถูก proxy ผ่าน Spacedrive ไปยังอุปกรณ์เป้าหมาย โดยระบบสิทธิ์จะจัดการว่าเข้าถึงอุปกรณ์ เส้นทาง งานใดได้บ้าง และต้องให้มนุษย์ยืนยันหรือไม่
- เมื่อเปิดใช้งาน ระเบียนที่เป็นเป้าหมายการทำดัชนีจะผ่าน pipeline Safety Screening ก่อนเข้าสู่สถานะที่ค้นหาได้
- Prompt Guard 2 ตรวจจับ prompt injection ในอีเมล ข้อความ และเอกสารด้วย local classifier
- ใช้ trust tiers, isolation system และ content fencing เพื่อตัดระเบียนที่ถูก flag ออกจาก query ของ AI agent และทำให้ตรวจสอบได้ใน desktop app
- สถาปัตยกรรมหลักประกอบด้วย Virtual Distributed Filesystem, ระบบระบุเนื้อหา, transactional actions และ leaderless sync
- ไฟล์และโฟลเดอร์กลายเป็น object ที่ไม่ขึ้นกับตำแหน่งทางกายภาพ และแต่ละไฟล์มีที่อยู่
SdPathที่ทำงานได้บนหลายอุปกรณ์ - งานไฟล์อยู่ในรูปแบบ durable job ที่รองรับการพรีวิวก่อนดำเนินการ อนุมัติหรือยกเลิก และทนต่อเครือข่ายสะดุดหรืออุปกรณ์รีสตาร์ต
- ไฟล์และโฟลเดอร์กลายเป็น object ที่ไม่ขึ้นกับตำแหน่งทางกายภาพ และแต่ละไฟล์มีที่อยู่
- การพัฒนาอิง Rust single crate และสถาปัตยกรรม CQRS/DDD โดยใช้เทคโนโลยีหลัก ได้แก่ Tokio, SQLite, SeaORM, sqlx, Iroh, BLAKE3, LanceDB, FastEmbed, OpenDAL, Tauri 2, React Native, React 19, Vite, TanStack Query, Tailwind CSS v4, Specta
- desktop app รองรับ macOS, Windows, Linux ส่วน mobile app รองรับ iOS, Android และยังมีโครงสร้าง CLI, daemon, headless server และ browser client
- ข้อกำหนดในการรันคือ Rust 1.81+, Bun 1.3+, just และ Python 3.9+ สำหรับ adapter โดยใช้คำสั่งพัฒนา
just setup,just dev-desktop,just test - โมเดลความเป็นส่วนตัวและความปลอดภัยเป็นแบบ local-first, ทราฟฟิก P2P เข้ารหัสด้วย QUIC/TLS, library สามารถเข้ารหัสดิสก์ด้วย SQLCipher ได้ และไม่มี telemetry สำหรับติดตามหรือวิเคราะห์การใช้งาน
- ไลเซนส์คือ FSL-1.1-ALv2 Functional Source License และจะเปลี่ยนเป็น Apache 2.0 หลังผ่านไป 2 ปี
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
หลังติดตั้งก็ถูกขอให้ สร้างไลบรารี ทันที รวมถึงแชร์ข้อมูลวิเคราะห์และล็อกอิน ทำให้ความคาดหวังต่างจาก file explorer ตัวอื่น ๆ
ลองไปยังไดเรกทอรีใด ๆ ในไดรฟ์แล้วดับเบิลคลิก แต่ไม่มีอะไรเกิดขึ้น และลองเปิดผ่านเมนูบริบทก็เหมือนกัน
ภายหลังจึงรู้ว่า ถ้ามีไฟล์ 15,000 ไฟล์ ในไดเรกทอรีเดียว การนำทางแทบจะทำไม่ได้เลย
Total Commander กับ Windows Explorer ไม่มีปัญหานี้ เลยคิดว่า Spacedrive ควรขัดเกลาฟังก์ชันพื้นฐานของ file explorer ให้ดีกว่านี้ก่อน
Spacedrive ถูกออกแบบมาโดยคำนึงถึง ข้อมูลขนาดใหญ่ ต่างจากบางคำตอบที่นี่ โดยจะทำดัชนี Location ไว้ล่วงหน้าเพื่อสร้างแคช และแคชกับทำ virtualization ทุกอย่าง
อัปเดตถัดไปจะแก้บั๊กตอนนำทางในที่ที่ไม่ใช่ Location และดูเหมือนผู้ใช้จำนวนมากจะลองนำทางก่อนเพิ่มเป็น Location
ตอนนี้ยังเป็นซอฟต์แวร์ alpha จึงหวังว่าจะค่อย ๆ ขัดเกลาไปตามเวลา
จะโทษนักพัฒนาอย่างเดียวก็ยาก และคิดว่า framework ควรรองรับเป็นพื้นฐาน
ไม่ควรจำเป็นต้องเข้าใจรายการแบบ virtualized list ถึงจะทำได้
ตอนสร้าง TableView ด้วย SwiftUI ผมสามารถเลื่อนดูหลายพันรายการได้โดยไม่ต้องรู้เลยว่าภายในทำงานอย่างไร
เพราะไม่มี แคชลำดับการเรียง ถ้าเปิดด้วยวิธีที่ไม่ใช่เรียงตามตัวอักษร ก็ต้องรอเรียงนานกว่า 5 นาที
เมื่อค่อนข้างนานมาแล้วที่เคยเห็น ยังไม่มีแพ็กเกจ release ให้ลองใช้เอง เลยกะว่าจะกลับมาดูเมื่อพร้อม และดูเหมือนว่า เวอร์ชัน alpha เพิ่งออกเมื่อหนึ่งชั่วโมงก่อน จึงน่าจะถูกนำมาโพสต์บน HN อีกครั้ง
แนวคิดโดยรวมนั้นน่ายินดี
ทุกวันนี้เส้นแบ่งระหว่างไฟล์ local แบบเข้มงวดกับ cloud storage หลายแห่งเริ่มพร่าเลือน
ส่วนตัวผมยังรักษาเส้นแบ่งนั้นไว้และแทบไม่ mount cloud storage บน Mac แต่ภรรยาผมที่เป็นนักวิชาการต้องใช้ทั้ง Dropbox, iCloud Drive, Google Drive และ storage ฝั่ง Microsoft
เพราะคนที่ทำงานร่วมกันแชร์ไฟล์และทำงานรีวิวร่วมกันผ่านแต่ละบริการ
ถ้าเครื่องมือแบบนี้ช่วยปิดบังปัญหาการเชื่อมต่อและพฤติกรรมแปลก ๆ ของแต่ละ vendor และให้ ระบบไฟล์ที่โปร่งใส ซึ่งดูเหมือน local แต่เบื้องหลังอาจผูกกับ cloud storage ใดก็ได้ ก็น่าจะช่วย workflow ได้มาก
หัวใจสำคัญคือ usability และถ้า latency สูงจนรู้สึกช้ากว่า Finder โอกาสสำเร็จก็จะลดลง
Hacker News มีความเป็นไปได้สูงว่าจะไม่ใช่กลุ่มผู้ใช้ที่เหมาะที่สุดของผลิตภัณฑ์แบบนี้
คนที่นี่น่าจะมี workflow ที่ปรับแต่งให้เหมาะกับตัวเองอยู่แล้ว และผมก็เช่นกัน
ผลิตภัณฑ์นี้น่าจะเหมาะกับ digital creator ที่ใช้ Windows และ Mac แต่ไม่คุ้นกับ terminal มากกว่า
เช่น animator, illustrator, video editor, 3D artist, music producer, YouTuber และ streamer
แต่ก็ไม่แน่ใจว่ากลุ่มที่สองนั้นต้องการสิ่งนี้จริงหรือไม่
ดูจากการตลาดอย่างเดียว ผมยังไม่รู้ว่าซอฟต์แวร์นี้ทำอะไรกันแน่ และคิดว่ากลุ่มนั้นก็คงเหมือนกัน
พอเข้าใจว่าต้องการสื่อถึง “ประสบการณ์ไฟล์แบบสากล” แต่ไม่ชัดเจนว่าหมายถึงอะไรอย่างเป็นรูปธรรม
ผู้ใช้ไม่ควรต้องติดตั้งซอฟต์แวร์เพื่อพยายามเข้าใจฟีเจอร์
การเป็นโอเพนซอร์สหรือรันบน Linux ได้ก็ดูจะไม่ใช่เรื่องสำคัญมากสำหรับพวกเขา
ถ้าอยู่ในขั้นนี้ ผมคงทำการตลาดใหม่ทั้งหมดและปรับให้เหมาะกับกลุ่มที่สองนั้น
ควรร่วมกับคนทำ PR หรือผู้เชี่ยวชาญด้านการตลาด เพื่อสื่อสารให้ชัดและมีประสิทธิภาพว่าคุณค่าที่กำลังสร้างคืออะไร
นอกจากนี้เพื่อประหยัดแรงของทีม ผมคงปิด source repository และหยุดเวอร์ชัน Linux หรือเก็บไว้เป็น private จนกว่าจะมี demand
ขอให้โชคดี
ติดตามมาค่อนข้างนาน และมี feedback บางอย่าง
การทำดัชนีไดเรกทอรีพัฒนาแบบ local หนึ่งแห่งใช้เวลาไปแล้ว มากกว่า 35 นาที และผมคงไม่รอจนเสร็จ
อย่างที่คนอื่นบอก latency เป็นปัญหา
บน macOS M1 14 นิ้วรุ่นพื้นฐาน แม้หลังเพิ่ม Location แล้ว บางครั้งยังใช้เวลา 2–4 วินาทีกว่าจะเปิดโฟลเดอร์และเห็นไฟล์
ถ้าผมไม่ได้พลาดอะไรไป ดูเหมือนยังไม่มีแท็บ
ฟังก์ชันเรียงไฟล์และจัดกลุ่มยังน้อยเกินไปหรือแทบไม่มี แต่คิดว่าคงจะดีขึ้นระหว่างพัฒนา
ดูเหมือนผู้ใช้ต้องทำหลายอย่างเอง เช่น เพิ่ม Location ด้วยมือจำนวนมาก เพื่อให้ได้สถานะการทำดัชนีที่สมเหตุสมผล
เข้าใจว่าเป็น local-first แต่รูปแบบ telemetry และ login ทำให้ไม่ชอบเอามาก ๆ
โดยรวมลองใช้เองแล้วค่อนข้างผิดหวัง จึงมีโอกาสสูงว่าจะไม่เหมาะกับผม แต่ก็อาจมีกลุ่มผู้ใช้เป้าหมาย และยังมีทางให้ไปต่ออีกมาก
หน้าตาดีมากจริง ๆ
สงสัยว่าทำไมถึงสร้างด้วย React
เข้าใจว่า Rust ไม่มี GUI framework แบบ Qt แต่ก็ไม่แน่ใจว่านี่คือคำตอบหรือไม่
เป็นเพราะไม่อยากเรียนรู้อะไรใหม่หรือเปล่า?
แอป C++ หรือ Qt ก็สร้างได้เพียงพอ และเขียน GUI ด้วย QML พร้อมผูก Lua, Python, JavaScript เป็นภาษา scripting ได้ด้วย
แน่นอนว่าก็เป็นงานอยู่
การเรนเดอร์ด้วยเบราว์เซอร์คล้ายกับเวอร์ชันที่ง่ายกว่าของการทำ GUI ด้วย GPU API อย่าง OpenGL
ระบบปฏิบัติการมีเครื่องมือ GUI อยู่แล้ว ใช้สิ่งนั้นก็ได้
นอกนั้นดูค่อนข้างดี แต่คิดว่าอย่าง pcmanfm ก็น่าจะรองรับการเพิ่ม remote location ไม่ใช่หรือ
อีกอย่างที่สงสัยคือทำไมถึงใช้ Prisma
Tauri ทำให้ลงไปเขียน Rust ได้ง่ายเมื่อต้องการงานประสิทธิภาพสูงหรือการเชื่อมกับระบบปฏิบัติการ และมี packaging สำหรับแพลตฟอร์มหลักเตรียมไว้แล้ว
การใช้ React ช่วยให้ใช้ประโยชน์จาก ecosystem ที่ยอดเยี่ยมซึ่งมี UI component อยู่มากมาย
ซึ่งต่างจาก native Rust GUI framework ส่วนใหญ่
อีกทั้งยังนำ frontend engineer รวมถึงทักษะเว็บเทคโนโลยีและการทำงานร่วมกับ designer ของพวกเขากลับมาใช้ได้
อาจพูดได้ว่ายังไม่ mature เท่า Qt แต่เมื่อเทียบกับสิ่งที่รันในเบราว์เซอร์แล้ว หลายกรณีก็เพียงพอ
รีโพนี้ยังอยู่ในช่วงอัลฟาเริ่มต้นและมีบั๊กที่รู้จักอยู่เยอะ แต่กลับมี GitHub star มากขนาดนี้ เป็นเรื่องที่เชื่อได้ยากอยู่บ้าง
แถมยังดูเหมือนได้เงินลงทุนจาก VC ด้วย ซึ่งทำให้สับสนยิ่งกว่าตอน langchain หรือ pinecone ได้เงินลงทุนเสียอีก
อย่างน้อยฝั่งนั้นก็ยังเป็นโปรเจกต์ฐาน AI แต่โปรเจกต์นี้อยู่ในพื้นที่ที่มีคนทำกันมาเยอะแล้ว
ต่อให้ฟรีตลอดไป ผมก็ไม่คิดว่าผู้คนจะต้องการมัน และถ้ามีโฆษณา·การติดตาม·สมัครสมาชิกรายเดือนเข้ามา ก็ยิ่งไม่น่าต้องการเข้าไปใหญ่
โดยพื้นฐานแล้วไม่มีเหตุผลให้เชื่อใจ และมีเหตุผลมากมายให้ไม่ไว้ใจ
ไม่ได้โจมตีเป็นการส่วนตัว แต่ถ้ายังไม่เคยพิจารณามุมมองแบบนี้ ก็ควรลองคิดดู
หน้าจอแรกหลังจาก “welcome” คือให้ล็อกอิน
ไม่เข้าใจว่าทำไม file explorer ต้องล็อกอิน และยุคนี้ก็ดูแปลกจริง ๆ
เหตุผลที่ต้องล็อกอินก็เพราะมันเป็นระบบไฟล์ระยะไกล
ควรนึกถึง Dropbox มากกว่า file explorer
จะเปลี่ยนในอัปเดตถัดไป
ท้ายที่สุด การล็อกอินจะเป็นวิธีเชื่อมต่ออุปกรณ์อย่างรวดเร็ว คล้าย Tailscale
เมตาอินเด็กซ์ที่ค้นหาและสำรวจได้ ซึ่งครอบคลุมทั้งคลาวด์·โลคัลที่กระจัดกระจาย และสตอเรจที่เมานต์แล้วกับยังไม่ได้เมานต์นั้น น่าสนใจจริง ๆ และเป็นเหมือนจอกศักดิ์สิทธิ์อย่างหนึ่งมาพักใหญ่แล้ว
การจัดการสินทรัพย์ดิจิทัลไม่ใช่แนวคิดใหม่ แต่ปัจจุบันก็ไม่ใช่领域ที่มีตัวเลือกมากมาย
Portfolio หรือชุดผลิตภัณฑ์ที่ซับซ้อนของ Adobe มีฟังก์ชันแบบนี้ให้มาก แต่เน้นเวิร์กโฟลว์และเมตาดาตามากกว่าคลาวด์สตอเรจ
ทุกวันนี้ หากจะนำบริการที่พึ่งพาคลาวด์อีกตัวหนึ่งเข้ามา ต้องระมัดระวังมาก
เมื่อคิดถึงความอ่อนไหวของ “ไฟล์ทั้งหมด รวมถึงไฟล์โลคัลและออฟไลน์” แล้ว การโฮสต์เอง/ออนพรีมิส อาจเป็นข้อกำหนดที่ขาดไม่ได้
ถ้าจำเป็นต้องมีบัญชี ก็น่าจะต้องการการผสานกับระบบจัดการตัวตนที่มีอยู่ผ่าน OIDC หรือ SAML
หากเครื่องมือนี้กลายเป็นประตูทางเข้าหลักเพียงจุดเดียวสำหรับดูไฟล์ทั้งหมด และสร้างเวิร์กโฟลว์ไว้บนมัน ก็ต้องมีฟังก์ชันด้านความต่อเนื่องที่ทำให้มั่นใจเรื่องความพร้อมใช้งานได้ด้วย
ขอให้ผลักดันต่อไป
ยังไม่มีที่ไหนแก้เรื่องนี้ได้สมบูรณ์
โปรเจกต์ดูเจ๋ง และชอบความทะเยอทะยานของมัน
มีโน้ตอยู่สองสามข้อ
ควรมีสวิตช์เปิด/ปิดที่ชัดเจนตัวเดียวสำหรับการเข้าถึง WAN ทั้งหมด และมีสวิตช์แยกสำหรับการส่งข้อมูลวิเคราะห์หรือข้อมูลการใช้งาน โดยค่าเริ่มต้นควรปิดไว้
ถ้าดีกว่านั้นก็ควรทำสิ่งเหล่านี้เป็นแฟล็กตอนคอมไพล์ด้วย
ก่อนหน้านี้ เทอร์มินัลใหม่ชื่อ Warp ดูน่าสนใจมาก แต่โดยค่าเริ่มต้นมันส่งข้อมูลออกไปทางเครือข่าย ทำให้หลายคนตัดทิ้งทันที
อยากให้รับแรงบันดาลใจจาก Windirstat และ Everything ให้มาก โดยเฉพาะควรตั้งเป้าไปที่ ประสิทธิภาพการค้นหาของ Everything
เห็นว่าอยู่ในโรดแมปแล้ว แต่ขอย้ำอีกครั้งว่าต้องมี แท็บ
ลองพิจารณาออกห่างจาก Prisma ด้วยก็ดี
มันห่อหุ้มฐานข้อมูลมากเกินไปและมีความเป็นเวทมนตร์เยอะ
หลักฐานอาจยังไม่แน่น แต่ก็กังวลเล็กน้อยว่าสักวันหนึ่งอาจเปลี่ยนไลเซนส์
อยากให้เลิกปฏิบัติกับคำว่า written in Rust ที่อยู่ต้น README เหมือนเป็นฟีเจอร์ได้แล้ว
ทุกครั้งที่เห็นข้อความแบบนั้น ผมไม่ได้รู้สึกว่า “น่าจะเสถียรกว่า” แต่รู้สึกว่า “นี่คือโปรเจกต์งานอดิเรกของใครสักคนสินะ”
ถ้าเป็น README ก็ดูเหมือนเป็นรายละเอียดที่ใส่ได้สำหรับโปรเจกต์โอเพนซอร์ส