I recently wrote about how I dislike case insensitive file systems because they lead to sloppy coding. I have since found some more evidence.
Exhibit A. I decided to try Optimism to keep track of my RA symptoms. It wouldn’t run on my machine, which I tracked down to it asking for
Carbon.Framework when the file I have is
Carbon.framework. So, I pulled an Ivan, and opened it up in Emacs and lowercased it. Interestingly, the string
Carbon.framework was in there as well, so I don’t know exactly what was going on. Apparently it fixed the problem though and it now works fine. (Note to kids at home: Do not try to change strings in an executable unless you keep the exact same number of bytes in the string. In fact, unless you understood why I told you that, don’t do it.)
Exhibit B. I have been working a little on a Cocoa GUI for Sage and so I thought I would put together a binary distribution with the new GUI. I did so, but got feedback that it couldn’t copy onto a case insensitive filesystem. It turns out that during the build process
Singular is copied to
singular for convenience. They are exactly the same file, and on a case insensitive filesystem the copy will fail, but the desired effect is still there since it can be called as either
singular. This and a few similar things mean that it’s not possible to build on a case sensitive filesystem and run on an insensitive one or vice versa. To do this we would at least have to audit the code and see whether Singular is called as Singular, or singular and convert to one, potentially breaking people’s code at home.
If you ever find the man who thought case insensitive filesystems (or languages—I’m looking at you LISP, and you too AppleScript) let him know I have a bug with his name on it.