

I recall a case-insensitivity bug from the early days of Mac OS X.
There are three command-line utilities that are distributed as part of the Perl HTTP library: GET
, HEAD
, and POST
. These are for performing the HTTP operations of those names from the command line.
But there’s also a POSIX-standard utility for extracting the first few lines of a text file. It’s called head
.
I think you see where I’m going with this. HEAD
and head
are the same name in a case-insensitive filesystem such as the classic Mac filesystem. They are different names on a Unix-style filesystem.
Installing /usr/bin/HEAD
from libwww-perl
onto a Mac with the classic filesystem overwrote /usr/bin/head
and broke various things.
But if someone creates a file called
HEAD
, should it overwrite a file calledhead
?That shouldn’t matter to the “nontechnical” end-user at all. To the nontechnical user, even the abstraction of “creating a file” has largely gone away. You create a document, and changes you make to it are automatically persisted to storage, either local or cloud.
Only the technical command-line user cares about whether
/usr/bin/HEAD
and/usr/bin/head
are the same path. And only in a specific circumstance — such as the early days of Mac OS X, where the Macintosh and Unix cultures collided — could the bug that I described emerge.