On File Systems
Posted on October 30, 2009
For the past 15 years (the age of the web), we've slowly been moving our data from our personal hard drives up onto the cloud. We've seen the proliferation of sites like Flickr and Facebook for sharing specific sets of data such as photos and contact information. We're beginning to see the reality of document generation in the cloud with services such as Google Docs and Bespin. However, these services still can't compete with the raw power and speed of editing files locally. Someday they will be able to compete. Till then, we need to evolve the file system.
The file system as we know it hasn't changed much in the past 25 years. The technology may have incrementally evolved and details may have changed, but the core user experience and mental model has stayed stagnant. Here's a screenshot of the original Mac OS desktop from 1984.
Source: History of Mac OS
Look familiar? If you've used a computer in the past 25 years, it should. Although this over-simplification of the past 25 years of filesystem technology is a bit of a gloss-over, the fact still remains that not much has changed in the user experience of the filesystem. We still email files to our co-workers for feedback. We still make PDFs to ensure our clients can open our files. We still make files named "My FIle V1", "My FIle V2", "My FIle V3" to version them.
So what are the core elements that we are missing?
- Immediate sharing of anything to anybody (file or folder)
- Fine grained user permissions for any non-local users
- Document revision tracking
- Access to files from any computer connected to the internet
- Access to non-traditional file systems through web services
Today, there are many services which attempt to solve the "sharing" files issue. My favourite of which is Dropbox. Dropbox offers a folder on your local machine which can be shared with registered users through a web-based UI. This allows for seamless sharing of file structures (or files) to friends, family, coworkers or another computer of your own.
Although Dropbox is a great service and solves many of the headaches of sharing files, it doesn't do so at a deep enough level. To share a file, users move it into the "Dropbox" folder then manage the permissions through a web based UI. Its a fabulous service for setting up team folders, but it isn't fast enough for ad-hock file sharing and management.
The Solution (as I see it)
The operating systems must evolve their understanding of a file system. Local files should become a cached version of a cloud based file which holds onto its permissions and content. In this sense, the operating systems defines an API for generating file structures (similar to the Fuse and MacFuse projects) and the file service providers define how the system interacts with the cloud.
For example, you may have a Google Docs account in which all your document files go. You could mount your Docs file structure in a specific location, and your computer would treat it just like local files. Giving you access to the files content and permissions.
Permissions and user rights can continue to follow the excellent UNIX model of User, Group, World with read and write permissions, however usernames must become global (instead of local to the machine). This could be implemented through email addresses as the primary login device for computers.
It will be the job of the operating system to notify the service provider when files have changed. In turn the service provider will deal with the syncing, merging and distribution of the files.
The dream for me is captured in this conceptual mockup of a simple right-click on a file.
The file has some type of icon associated with it to indicate its been shared, and the list (and management of that list) of people the file is shared with. To make this a reality, a significant amount of technology needs to be built, however starting from the user experience allows for a well defined roadmap.
This problem of sharing data doesn't have any easy solution. It will require many different players to come together and define a solution that will better computing as a whole, not just for any one provider. However, in the meantime, I love discussing the possibilities. Thoughts? Ideas? Suggestions? What do you want from your files?