On File Systems

Posted on October 30, 2009

File on Desktop

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 Problem

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?

  1. Immediate sharing of anything to anybody (file or folder)
  2. Fine grained user permissions for any non-local users
  3. Document revision tracking
  4. Access to files from any computer connected to the internet
  5. Access to non-traditional file systems through web services

Many Solutions

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.

Share-Menu

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.

Moving Forward

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?


4 Replies to "On File Systems"

  • Derek
    October 30, 2009 (3:09 pm)
    Reply

    I like it!
    For file versioning, with all of your suggestions in mind, each save on any given day would also be synced up to the cloud, and could call it a minor revision (ie. V1.1, V1.2, etc.). Anything changed on another day could be called a new version. It’s a big assumption that everyone would want those specifics, and obviously the ability to edit your preferences would be pretty important.

  • kristy
    October 31, 2009 (12:24 am)
    Reply

    So I think that my RSS reader must have freaked out when it saw you had a new blog post – welcome back!

    That being said, I like the idea… as long as folders would have the same permission levels – ie I would be able to change the permission based on an entire folder rather than just a file itself then it could be more project based. Would be helpful for companie that work with freelnacers etc.

  • Greg Bell
    October 31, 2009 (9:56 am)
    Reply

    @Derek – Agreed. File version would be the best (and most difficult to implement and design) part of designing a file system from scratch.

    @kristy – Thanks for the support :). Definitely, folder based as well as finer grained permissions is a must. Good call on the companies with freelancers. Would be great to give permissions for a while, then remove them at some point.

  • itil
    October 12, 2010 (7:35 am)
    Reply

    Being that we already happen to be sharing points regarding On File Systems | Greg Bell | Design + Development, Whether one is searching for new opportunities or advancing in his current position, one wants to construct and demonstrate his technological expertise and skills.


Leave a Reply to Derek Cancel reply

Some html is OK