Most people don’t really give much thought to the idea of file extensions, although they’re nearly universally in the minds of modern computer users. Users have come to understand that .pdf means a file is in the Portable Document Format, or that .ppt is a Microsoft PowerPoint file. DOS users recall that files ending in .exe, .com, or .bat are executable. For those unknown extensions, there’s the very helpful filext.com website. There’s no doubt that filename extensions can provide very helpful information, but here’s the issue: not all platforms care about them. That’s not a problem in all cases, but there are times when it makes life miserable.
Filename extensions can be just another part of the filename, or they can be entirely separate namespace. DOS first introduced the idea of extensions to the general public. In those days, the file had a name of up to eight characters, and an extension of up to three. This “8.3” convention persisted into Windows, and is still commonly seen on Windows system files, even though it is no longer necessary. Unix-based systems, such as Mac OS X and Linux, have no feelings about extensions — they’re certainly not required, but some applications make use of them. The dominance of Windows in the desktop market has encouraged application writers to really care about extensions, and it does help in trying to find the right type of files.
Here’s where it becomes problematic. Because some systems don’t care about extensions, it’s easy to not have extensions on your filename. Then, when you go to a system that does care, things don’t work as you expected. Here’s a fine example: my wife needed to have a few pictures printed, so she loaded them onto an SD card and took them to the store. When she got there, the photo system would not find any of the pictures. As it turns out, she had saved them without the .jpg extension, so while they were valid JPEG files, the system didn’t try to load them.
Now, most photo software, cameras, etc. will add the extension out of tradition (and because that’s what people expect). However, a manual renaming of the files after the fact could result in absent extensions. So what is the solution? Well, we’ll never get all platforms to come to agreement on what filename extensions are, and how they should be defined and treated. The only answer, then, is that applications should be written to not focus on extensions, but on the contents of the file. If applications used methods similar to the Unix file command to determine file type, then such problems could be avoided.