Linus Torvalds Expresses His Hatred For Case-Insensitive File-Systems. I’d like to express my hatred distrust towards anything that makes the average user’s (i.e. the one that indirectly pays our salaries) life harder.
In case-sensitive file systems, file names like “CustomerPresentation.pptx” and “customerpresentation.pptx” are treated as distinct. This means you could have both files in the same directory, each containing different content. Common case-sensitive file systems include ext4, used by many Linux distributions.
On the other hand, in case-insensitive file systems, “CustomerPresentation.pptx” and “customerpresentation.pptx” are considered the same file, as it should, because semantically the meaning of the two filenames are the same, so only one can exist in a directory. The system ignores capitalization when accessing files, making it more forgiving for users. Windows uses NTFS, and macOS uses APFS or HFS+, all of which are case-insensitive by default (slightly related: creating a CS folder on macOS).
Here’s 3 4 reasons why Linus is wrong, and I’m willing to die on this hill:
Ease of use
Users don’t need to remember the exact capitalization of file names when opening, saving, or referencing files. For example, if a file is named “VacationPhotos.jpg,” typing “vacationphotos.jpg” or even “VACATIONPHOTOS.JPG” will still access the correct file. It is particularly valuable for non-technical users who may not be aware of or care about the concept of case sensitivity. For instance, a user following instructions to open “config.ini” might type “Config.ini” and expect it to work.
Consistency
Case-insensitive file systems enforce a unique naming convention within a directory, preventing the creation of multiple files with names that differ only in case. For example, you cannot have “data.txt,” “Data.txt,” and “DATA.TXT” in the same folder, which is – again – how it should be.
Compatibility
Many applications, particularly those designed for Windows and macOS, are built with the assumption that the file system is case-insensitive. They will not have second thoughts about completing the filename from “report” to “report.PDF”.
Common sense
If someone mentions “the report,” it’s understood to be the same as “The Report.” This natural case-insensitivity extends to other contexts, like usernames or email addresses, which are often case-insensitive to simplify access. Case-insensitive file systems mirror this expectation, making the computing experience feel more intuitive.
The Wikipedia page on case sensitivity draws a parallel with search behavior: “Users looking for the word ‘dog’ in an online journal probably do not wish to differentiate between ‘dog’ or ‘Dog’, as this is a writing distinction.”
Linus is not entirely wrong, though (but mostly is)
While case-insensitive file systems are advantageous for everyday users, it’s worth acknowledging that case-sensitive file systems have their place, particularly in technical contexts. For example, if you want to use base64-encoded filenames, then yeah, you’ll most likely need a CS system.
However, for everyday users, these scenarios are rare. The average user is unlikely to need multiple files with names differing only in case or to encounter situations where case sensitivity provides a practical benefit. Moreover, the compatibility issues and potential for confusion in case-sensitive systems often outweigh these advantages for non-technical users.
The preference for case-insensitive file systems in consumer operating systems reflects their suitability for everyday use. Windows has maintained case-insensitive file systems since MS-DOS, prioritizing user-friendliness and backward compatibility. macOS, while offering case-sensitive options, defaults to case-insensitive for similar reasons.