MakeDrive: Syncing Filesystem for the Web from Mozilla
MakeDrive is a new offline-first, syncing filesystem for the web, from Mozilla. Built on node.js and filer, it provides a sync service that other apps can use, while user retains full control of where her data lives.
Imagine Dropbox in a web page, without installing any software, and being able to share files and folders between different browsers, applications, and mobile apps. That's what MakeDrive is.
The difference is that the main purpose of MakeDrive is not backup; it's to enable web-making. Mozilla's WebMaker set of tools, once integrated with MakeDrive, could allow users to build multi-page apps instead of single page; and then create and access their web makes from different browsers and devices.
However, clearly, the project has applications beyond Mozilla's specific use-case.
MakeDrive can primarily help in cases where offline-mode needs to be supported for a web-app. Imagine a browser-based game which has state held offline and synced periodically across devices. Or an FTP client, only, you wouldn't need to manually upload the modified files, the sync service will take care of it for you.
The project is still in early stages and is not ready for production yet. In David's own words -
On Friday we reached the end of our summer work, where we tried hard to follow Pike's 5 rules of programming; specifically, we made it work before we made it fast or scalable. In the fall we're switching gears to start focusing on performance, memory footprint, deployment, and scalability.
Some concepts and interesting things about MakeDrive -
- A filesystem is something that a user has. In context of Mozilla, this can be a WebMaker user (who uses the MakeDrive sync server provided by Mozilla) but the MakeDrive server could be self-hosted as well.
- MakeDrive is a service that other apps can use - Nimble and AppMaker, for e.g. can use the same MakeDrive filesystem.
- MakeDrive does not maintain a file-history. Instead it uses a rolling-checksum and a differential algorithm inspired by rsync, to only send bits of a file that has changed (similar to Dropbox).
- Currently optimised for web resources (HTML, CSS), and not large files (such as photos/videos)
- Uses local DB as a backing store - IndexedDB for IE, Firefox and Chrome, WebSQL for Safari. Both for Opera.
As epayne notes, MakeDrive seems to be a part of a bigger movement towards a web with data in the hands of the user.