5,544 bytes added,
17:43, 14 April 2014 ==MakeDrive==
An always available filesystem for web making and Webmaker.
''NOTE: The "MakeDrive" name is a working name only. Final naming and branding TBD''
==Overview==
Since its launch Webmaker has provided a set of tools (Thimble, Popcorn, Goggles) that focus on single-page makes (i.e., single file). Users have focused on creating content that is self-contained, without external dependencies other than URLs. This has been an effective way to insulate new web makers from the complexities of modern web development as they begin.
In 2014 Webmaker's tools are evolving to allow the creation and editing of more realistic, multi-file web sites, mobile web apps, components, etc. Today, everything on the web is a collection of separate resources--HTML, CSS, JavaScript, JSON, XML, images, and other types of media--some living on remote servers and used via URL, and some living on the same server, with relative links. Modern web making involves being able to work with trees of files and folders.
The ubiquity of filesystems in desktop applications means that
==Goals==
===Primary Goals===
* A Webmaker user has a filesystem, available to various apps (e.g., Nimble, AppMaker).
* MakeDrive is a service that can be used in, and shared across various apps
* MakeDrive is a place to store web sites, web apps, and other web makes. It is optimized for HTML, CSS, JavaScript, images, JSON, and other web resources. It is not a backup service, a place to store all your photos, or share large files.
* MakeDrive expects transient users, and tries to make your files available wherever you go. You can always get your files on your current computer (i.e., in your current browser) and keep working.
* MakeDrive has no concept of file history, and never asks users to perform merges.
* MakeDrive uses a mix of an in-browser filesystem with cloud storage, and tries to handle syncing between the two without user intervention
* REST API with CORS for interacting with S3 cloud storage portion of filesystem
===Secondary Goals===
* MakeDrive can connect to other cloud systems, e.g., Dropbox, Github, GoogleDrive, etc in order to import/export data.
* Files can be public or private. Files saved in MakeDrive are potentially "published" and hosted on user.makes.org, but may not be (yet). Saving vs. publishing allows users to work on things privately.
* Easy to get files in/out of MakeDrive relative to current computer (drag-and-drop file upload)
* Simple sharing model, allowing a user to specify other users who can collaborate on a set of files
* Figure out the sweet spot between syncing everything always, and not hogging bandwidth, bloating browser storage
* Support for both trusted and untrusted computing environments. User might be using their laptop one day, and school computer the next.
* Develop a web filesystem conventional directory layout. Where a Unix filesystem has /bin, /etc/, /home, etc, what is the layout of MakeDrive?
** /tmp - temporary files that are cleaned up on opening/closing the filesystem
** /apps - folder where each app (e.g., /apps/nimble.webmaker.org, /apps/appmaker.webmaker.org) can place its files
** /makes - user data (this name seems bad)
** ???
===Longer Term Research Goals===
* Swappable, user-specified storage backends. We default to S3 for storage, but allow a user to specify their own backend, for example Dropbox.
* Special folders (virtual folders). For example: files by type (js, html, css), recently edited, trash, etc
* Special file types reflecting the fact that this is the web. For example, symlinks to URLs?
* Ability for users to obtain (or create--vanity urls) sharable URLs to files in the filesystem.
* Easy integration of MakeDrive in other web apps via Persona-like button(s). The user clicks the button and a File Picker is shown (e.g., https://www.dropbox.com/developers/dropins/saver, https://www.dropbox.com/developers/dropins/chooser/js)
* WebRTC or other LAN-based sync'ing for situations with no Internet but a local/mesh network
* Figure out how to support file syncing when there is no user account. For example, uuid generated that gets used to lookup a folder when re-connecting instead of a user account.
* Ability to upload files by sending an email (similar to how Kindle supports getting files on your Kindle via email attachments with a special email address per user)
==Questions==
* How is MakeDrive different from X cloud storage? Which other services exist in this space?
** Github (source code, advanced users/developers)
** Micosoft OneDrive (Windows, photos)
** Dropbox (Any OS, sharing with friends, photos)
** Google Drive (ChromeOS, Google Docs, Spreadsheet, etc. Apps)
** Box (IT and Business users, focus on privacy settings)
** Amazon Cloud Drive (Amazon Fire, photos/video, backup)
** Bittorrent Sync (large files, p2p)
Where most cloud platforms are increasingly targeting business (Box, S3) or personal (Dropbox, Google Drive, etc focused on video, photo, document backup) use cases, MakeDrive is focused on files, and collections of files for creating things on the web. MakeDrive attempts to seamlessly bridge offline and online in-browser editing/making. MakeDrive allows Webmaker users to collaborate and share things they make
* What is our file size restriction (max size per file)?
* How much total storage do we allow?
* What does sharing look like? Read-only, collaborator (can get Read+Write), owner?
==Resources==
* [https://github.com/js-platform/filer Filer]
* [[Webmaker/Concept-Nimble|Nimble]]