Today, traveling in the bus, I had some time to think and my mind wandered towards a discussion on twitter about the impending demise of the file system in the operating systems of tomorrow. This is, of course, fueled by the mobile operating systems like iOS, Android and Symbian where apps have all the access to different files within themselves but the use does not have direct access to them. One of the biggest issues with this is that if the functionality is not there, these files are not available to other softwares that the user installs and that which perform similar tasks to the default app.
To deal with this scenario and to get my mind racing, I thought of amusing myself with building a standard that will define a file-less AppSystem. The prerequisite is that all apps should be able to access files within other apps. So I created, in my mind, the FileSystem-killer OS that replaces file systems with app systems.
Here’s what I came up with –
AppSystem Standard v0.1
1. There will only be apps as a resource to the user.
2. There can be multiple apps that perform the same or similar tasks.
3. The user is allowed to install any app that they choose
4. The apps will primarily have access only to files within their own sandbox
5. Apps will treat files as objects. Available object types will be defined based on the apps that the user installs. For example, if the user doesn’t have the Adobe Reader or another PDF app installed, the OS will not recognize PDF files and will discard those files upon download
6. The OS will have an underlying framework for all apps to share objects. If there are apps that are defined for a particular object type then they will have access to all those type of objects in the whole system. This framework, in essence, is the file system killer that I talked about up above.
When I was building these standards in my mind, I thought, “Hey, this is very Do-able! All I need to do is to rewrite a large part of the OS. Even better, I can work on the Mac OS X or Windows to remove the Finder or Windows Explorer respectively and replace it with this framework.
Better still, I could start with Linux, the most open system of them all. I could re-write a Linux kernel and as an example could add a simple PDF or JPG viewer which as an example. Then I started thinking about how to go about it. I’d need to open up the terminal, remove the GUI file system so that the user doesn’t have access to it and create a simple viewer app.
That’s when it hit me.
How will I write the apps and re-write the kernel, how will I do it?
Well, I’ll open the Terminal and start hacking.
Hacking at what?
So what am I accessing?
Uh…. Ummm… Using the
Yes. You can really have an OS without a file system. You can’t get enthusiasts and hackers and programmers to look at their work as based on objects or projects or apps because in the end, the smallest indivisible unit that any OS understands is the file. When I jailbroke my iPhone, the first app that I downloaded was iFile – a file explorer. The essence of looking at any information in any OS is looking at the files.
Also, when you think about it, all apps have access to the files on the disk and there is another little app that users can use to look at common properties of files or manage the deletion or organization of files – the file system.
The file system is a two pronged approach – a framework to allow all (seriously, ALL apps) access to files and an app that the ordinary user can use to look at all types of files independent of their type. Thus, the file system cannot die, because it already is all that we need from an App system.
Writing this, I am reminded of a dialogue I heard or read somewhere, don’t remember the source –
“NASA is such a waste of money. They should just remove it!”
“and do what?”
“Well, can’t they have one agency or consortium of private companies that sends people to the moon and launches satellites while there should be a separate government agency that works with Universities to launch all kinds of experiments. That way we’ll know that the first is a source of income and the second is a sink.”
“What do you think NASA is? It is exactly that. It is a government agency that launches experiments in conjunction with Universities and also, till now, launches people to the moon.”
The lesson – Just because you think that the current system is bad, doesn’t mean you need to replace it. Sometimes there is no real alternative to the current system because it is the best, or at least, better than the rest.
I disagree. Files inherently cause chaos and a lack of cohesion. Linked data will transform digital life. You may find my post interesting: ‘Why files need to die’ http://radar.oreilly.com/2011/07/why-files-need-to-die.html
I read your article. Perhaps, there is a way to abstract information out of files and perhaps there’s a way to represent it in a different format. Let’s analyse that train of thought. On your computer, you have email. The earliest email programs saved every single email in a text stream. This was saved on files. As time went on, email programs became smarter and now your Mail program saves everything on a searchable and taggable database on your computer.
Social networks have long been considered alternatives to emails. Why send out emails when you can broadcast the message right here? Yes, that’s a good idea. But how do they save these broadcasts? By saving it in a database.
Now consider this – if I want to hack a piece of code that I download from github, what do I do? I go into each file and modify the code according to my needs. If I want to edit a photo on my computer, I can just open the file in a photo editing software and start editing.
But what if I want to edit a photo saved on Facebook? I need to find a software that extracts that ‘file’ from a database and then allow me to edit it. Then I need to save it back into the database. This whole process increases the complexity of my interaction with the elements.
Databases are great for storage and tagging. But they’re not great for retrieval or editing. Specially if the database is owned by some corporation and is saved on their servers.
But complexity is a good thing too. It abstracts all the data storage and lets you focus on the content. That’s a very good thing for focussing on what’s happening instead of how the heck it’s being stored on disk.
Coming to tagging. Yes, it’s a wonderful thing when done automatically. For example, I do not ever need to go looking for a file on my Mac. I just make a search and press enter. The file gets searched and opens in my default program without me needing to do anything. So yes, tagging without human intervention is a very important thing. The problem is that tagging text is very easy. Tagging photos or videos is extremely difficult. To that end, companies like twitter and Facebook, that see millions of photo uploads daily can best work on automated tagging as a product. They can create a system where the software guesses the tags and then corrects itself as people approve or disapprove the tags.
The problem with all of this is that there needs to be a need. Facebook and Twitter have everything stored in their databases. They probably have an in house solution that tags everything. They just don’t need to release it to the public. That’s not really their product. MS and Apple have implemented rudimentary tagging and searching. But beyond that, their OSes are not social platforms and data is not stored in databases but in flat files.
I’ll tell you what, the day I can write code directly into a database, I’ll say that files are no longer needed. Till then, let’s keep hacking. 🙂