Webmaker/MakeDrive

From MozillaWiki
Jump to navigation Jump to search

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.

Adopting a files-and-folders approach makes it easier to bring traditional types of desktop editing tools to Webmaker, and gives users a well-understood metaphor. MakeDrive will be a web filesystem for web making, one that works online, offline, or mobile. Where other cloud storage services are a) integrated into the OS; b) focused on backup, video/photo sharing, etc. MakeDrive will be integrated into the web and web browser, and will focus specifically on the needs of web making.

MakeDrive will allow users to move easily between devices and browsers, and create and access their existing web makes. MakeDrive will synchronize user's files and folders between browsers and the cloud, and seek to provide novel and useful ways to put the user at the centre of their data. MakeDrive is also bound to makes.org. In the same way that gh-pages branches and github.io allow Github users to host static web sites, MakeDrive and makes.org allow Webmaker users to publish their makes easily.

Goals

MakeDrive has a number of near, medium, and long term goals. The following lists are incomplete, but point at the directions we might take.

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 (i.e., it isn't part of Nimble, for example, but something Nimble uses)
  • 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)
    • /docs - various kinds of learning and web editing docs for access offline
    • /script - scripts for things that can run on the filesystem (e.g., nohost web server)

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