Mystery File

I just had a great idea for functionality that should be integrated into Mac OS X. Here’s the premise: people spend a lot of time getting files over email (or from other sources) and trying to figure out how to use the files. You’ve got all sorts of files, often times with their own metadata and file extensions. But how would you know what kind of file something was if someone didn’t tell you? Look at this list of extensions: .bin, .cwk, .doc, .exe, .gif, .graffle, .html, .idx, .info, .jar, .java, .jpg, .lha, .mov, .nib, .php, .plist, .png, .ppt, .raw, .rdf, .rsrc, .rss, .rtf, .sit, .strings, .tar, .tiff, .txt, .wmv, .xml, .xls, .zip.

Some people may recognize all of those extensions, but not many. Average users never would, so the question becomes this: why would we author our software in such a way that it expects people to recognize extensions? The full list of extensions is probably 100 times longer than the one I’ve made above, and it’s just going to get longer and longer. The problem in our scenario becomes even more difficult when the file has no extension on it and no custom icon.

Truth be told, usually the OS will automatically recognize a file as long as the application is installed (and in some cases, when the application has been run at least once). What I’m saying is that it shouldn’t require that. The OS should be able to tell you what kind of a file you’ve got even if you don’t have the software to run it. It should look at the file and say “This file is a _____ file. You need _____ to use this file, and it appears that you do not have ______” if you don’t have the application. I’m not aware of any OS that does that. Are you?

7 Comments

  1. Posted January 6, 2005 at 6:31 pm | Permalink

    I thought that was how the old Mac OS (9 and prior) behaved: Apple had to know what your extention meant in order for Finder to launch it. I think you could add things yourself, but IIRC there was some sort of application registration that you were supposed to do with Apple in order for things to work correctly. I never really used a Mac prior to OS X though, so maybe I’m way off.

  2. Posted January 6, 2005 at 7:53 pm | Permalink

    This would be problematic because some applications use the same file extension (.f is the one that comes to mind because we have conflicts with it). We should give up on the extension thing all together and move towards metadata or a header in the file (oddly this was the way it was originally done, but the destinations were binary and text, nothing about what application would run the file). The file should tell the os what application (or type of application in the case of a text file for example) it is associated with, and if your into icons carry its icon imbedded in it. This would suck a little for small files so you could have the os manage some of the icons, but on the whole there are too many applications for the os to have to keep track of that…
    my two cents.
    Also registering your application with other companys / people sucks… by far the worst part of my job is dealing with crap like that.

  3. Posted January 6, 2005 at 9:23 pm | Permalink

    Josh, I agree that it would be difficult for the OS to keep track of all the file types. I also think, though, that it’s a much more likely scenario than all file types moving to metadata when Microsoft is so enamored with file extensions. I would personally much prefer metadata to file extensions as long as the metadata was easy to manipulate, and was structured in such a way that it would always be totally cross-platform.

    In either case, something inside the computer needs to be able to inform the user “You need ____ to use this file. You don’t have that. Get it at ______ web site” or something. That would be much more useful than the current “Huh?” error messages most/all computers give.

  4. Neal
    Posted January 6, 2005 at 10:47 pm | Permalink

    Well, I know XP pops up a list of programs you could choose from, or search the web, for the program you are trying to open, and Windows can’t figure out what should open it (or if you need a program still to open it), so Windows is kind of halfway there with that at least.

    Out of curiousity, how hard would it be to to do what you are suggesting Josh? It seems like it’d be a simple thing to program, and while the extension types are expanding, it’s not like they are doing so at an enormous rate. It’d be nice to have this at least for 90% of the extensions alone.

    And what the heck is metadata? Darn CS types make techie blogs and want comments, but make no effort to reach out to those of us who are just above average in our techie understandings. 😉

  5. Posted January 7, 2005 at 9:30 am | Permalink

    What you ask is impossible to do – new applications add new extensions all the time. Apple would have to maintain a database of all extensions and what programs open them, and every application that takes an extension would have to register to be able to open that extension. And then every copy of the user’s OS would have to fetch that extension list periodically from Apple. And it should be obvious that it is impossible to keep the list accurate and up-to-date.

  6. Posted January 7, 2005 at 9:43 am | Permalink

    Actually Kevin, that’s essentially the business I’m already in. We update the OS at least once a month. Actually it averages out to more than that. The file that gets updated periodically could be a simple XML file that contains sets of extensions, and then an application name and/or application type for that extension. As Neal said, yes, there are more extensions every month. But not so many that no one could keep up with them. You’d really just need to get the core 90% or 95% as Neal said above, and you’d satisfy almost all of your users. The rest of the updates would just be “fringe” apps, and most users wouldn’t notice if they were or weren’t there.

    It would be in a developer’s best interest to “register” their extension with a larger company so that users could more easily use their files and be exposed to their application. But of course it wouldn’t be mandatory.

  7. Posted January 8, 2005 at 11:07 pm | Permalink

    Actually Microsoft has been sorta pushing Windows in this direction, but I haven’t been watching what they’ve done. When they introduced NTFS one of the core features was streams. They hadn’t used it all that much, although with the File Services for Mac and various malware (taking advantage of paths like bla.txt:badthing.exe where bla.txt is the only thing you see but that’s runable). Lately they’ve added a metadata one though and office uses it (the stuff when you right-click and get properties isn’t being pulled out of the insides of the file, it’s a “standard” metadata format that office saves in a stream). It’s just a shame they’re still pushing extensions since their internal stuff somewhat ignores it and bases off the contents (the cause of a lot of their executable text files/images exploits lately). The point is a format like this could easily be expanded to have additional info like the name of the application and a URL to get it. The application could just put it in the file like Office does for its docs. As for my solution, I usually am using a unix system and “file” is a great tool.