TIL case insensitive filesystems are still a thing actually in use.
Why lol
Windows. Probably.
deleted by creator
I believe macOS’s default partition is case-insensitive but not case-preserving. I remember having to check the HUnit (unit testing library for Haskell) in a special partition because darcs barfed on a file whose case changed.
I remember that the BeFS in BeOS was also case-preserving but not case-sensitive. Scot Hacker, the author of the BeOS Bible, relayed an explanation that resonated with him. (Bear in mind that this was pre-2000 and the computing landscape was much different. This was also the time that macOS was born in.)
The short of it is that it’s for usability. The average person doesn’t really differentiate between upper- and lowercase; at most, it’s just aesthetics. If they want to find their resume, they don’t care if it’s spelled
resume
,Resume
,RESUME
, or evenrEsUmE
. Why should the computer require that they conform to a design decision that was made decades prior?Since then, the world has changed again and the average user of today is even further isolated from the internals of a system. And what was a good idea in 1997 may not longer be relevant now.
Good for him. I hate case-sensitivity, and it’s what keeps me going back to DOS & Windows. FILE, File, file, and FilE should all be the same thing at all times.
Why shouldn’t I be able to have the files mare.png (a photo of a horse) and MarE.png (a photo taken on a vacation in March, fifth in the series after MarA, MarB, MarC, and MarD)?
Or rainsley (a text file, no extension, with notes about a story I’m writing) and Rainsley (a directory with art of the same character the file is named after)?
Do I strictly need to be able to do these things? No, of course not. But the file system is more flexible and functional if I am able to.
FILE, File, file, and FilE should all be the same thing
If these were truly the same thing, you should have not written them differently.
But you did.
you should have not written them differently.
But you did.
Remember that 99% of the time that’s gonna be because of a typo for 99% users. They won’t have
File.txt
,FILE.TXT
andFiLe.tXt
, they’ll haveReportMay.docx
andREportMay.docx
or whatever.And yeah, that includes me. I don’t want case-sensitivity for that reason alone. Thanks, but no thanks.
I prefer computers do what I tell them to rather than what it thinks I meant to tell it to. If I screw up, why isn’t it on me to fix it? And why aren’t you proofing data entry before accepting it?
Was this really supposed to be a clever point?
it’s not “supposed”. It just is.
“FILE, File, file, and FilE should all be the same thing at all times.” - Sentences from the utterly deranged.
deleted by creator
Conversely: that two files that differ in name only by non-visible and humanly-impossible-to-detect details is an enormous user-experience fail.
What the hell phoronix, why are you using that cookie vendor that will sell your data to 46396 parties and no worries, you can stop it by deselecting each one of them! You can either accept or spend the day disabling this shit.
If that’s how it’s going to be, phoronix is done for me, sorry. I’d love to support your work even, but not with this
Yeah, I tried disabling my ad blocker to support them, but the page does not show ads even then and complains as if it were still active, and I think it is because I left Privacy Badger on. There is no way I am turning that off, so too bad for them!
Heck, I would even consider subscribing, but it looks like one first needs to create a forum account before one can even see the subscription price‽ What a very weird site…
Such insensetivity!
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
, andPOST
. 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
andhead
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
fromlibwww-perl
onto a Mac with the classic filesystem overwrote/usr/bin/head
and broke various things.Case insensitive is more intuitive and MUCH safer.
You do not want every Windows user to live in a world where Office.exe, office.exe, Offlce.exe and 0fflce.exe are all different files.
OSs and filesystems aren’t built for programmers, they’re built for grandmas. Programmers just happen to use them. It’s much more sensible to give programmers a harder time fixing bugs and incompatibilities than it is to make the user experience even marginally worse.
I mean, all due respect for the guy, but that is an absolutely terrible opinion and I will die on this hill.
OSs and filesystems aren’t built for programmers, they’re built for grandmas.
You’re just flat out and completely wrong.
- No grandma is typing out file URLs. This is not a point.
- OSes literally do nothing useful on their own. Their explicit purpose is to allow developers to write applications for them for users to use.
- Case insensitivity can be handled at the application level, there is no necessity to handle it at the OS level.
- Case insensitivity isn’t even clearly defined as Linus outlined, but you know what is clearly defined? Different character byte codes.
Case insensitive is more intuitive
Are these the same filename?
- ΑΓΑΘΉ.txt
- αγαθή.txt
What about these?
- MY-NOTES-ON-Δ.txt
- μυ-notes-on-δ.txt
Databases have different case-insensitive collations - these control what letters are equivalent to each other. The fact that there’s multiple options should tell you that there’s no one-size-fits-all solution to case insensitivity.
This issue is only simple and obvious if you don’t know enough about it.
I don’t have Windows here to test, so I keep wondering, are all of these forms the same?
- facture-février.pdf
- FACTURE-FÉVRIER.PDF
- FACTURE-FEVRIER.PDF
On a NTFS drive on Windows with default settings the first two are the same, the third one is not.
Caps and non-caps are matched, accented/unaccented characters are not, which is probably what you’d expect.
Thanks. That is what I’d expect, and highlights the disconnect I saw in this comment chain: I think what some other folks were trying (less-than-artfully) to say is that there’s a difference between what one might expect case-insensitive means as a computer programmer, and what one might expect case-insensitive to mean in human language. All three of those should be the same filename in fr_FR locale, since some French speakers consider diacritical marks to be optional in upper case. While that might be an edge case, it does exist. English is even worse, with a number of diacritical marks that are completely optional, but may be used to aid legibility, e.g. café, naïve, coöperation. (Whether that quirk is obvious or not, or whether it outweighs any utility of case-insensitivity is not something that I have a strong opinion on, though.)
Your grandma will never type file names in shell, she’ll use Open File dialog, where case sensitivity does not matter.
What about case insensitive programming languages?
Im a python programmer so I’m used to it, but my coworkers are SAS programmers that is case insensitive and they keep getting errors when trying to write python because of that.
Ouch. Relying on case sensitivity is a lousy coding choice, anyway. No one is made better off by having a case change carry meaning.
Edit: Before anyone asks, I like case convention as a courtesy, too. But my code doesn’t rely on it.
Python is case insensitive? Or do mean that it’s not? The phrasing is a little confusing.
Python is case sensitive. I think they’re saying their coworkers are writing case insensitive code which is causing errors (perhaps writing
myFunction
and then calling it viamyfunction
which would result in an undefined error)
remember when windows could only handle 8 characters and longer names ended in ~1
deleted by creator
To be precise, longer names ending with ~1 are a backwards compatible fix for DOS programs introduced after Windows started supporting longer filenames.
Damn straight. I thought bcachefs was a modern filesystem? Why is it case insensitive? Huge red flag.
It isn’t normally, but it, like e.g. Ext4, allows case insensitivity mostly for the sake of Wine.
But Wine could handle the case insensitivity though? NTFS is case sensitive.
It does, but having case insensitivity in the file system can get you better performance.
How would that happen?
If you’re running Wine on a case-sensitive file system, and you it tries to open a file, it would first try to open a file whose case matches exactly. But if it doesn’t find one, it would then need to list all the files in the directory, normalize their case, and go through them all to see if there is a file with the given name but in a different case. That can take some time if there is a lot of files in the directory.
But if you’re on a case-insensitive filesystem, the FS can keep case-normalized names of all files on disk, so you can do a case-insensitive open just as fast as you can do a case-sensitive open.
BTW, another application that can benefit from this is Samba, since SMB is case-insensitive.
That –at best– gives you the same performance.
EDIT: Ok, I misunderstood – you meant the performance of “case insensitive in kernel” vs. “case insensitive in userspace”. I get your point now.
Isn’t bcache the one made by the solo dev who was causing all that drama trying to merge a bunch of crap during a freeze last year?
If so that explains quite a bit lmao
Utterly reasonable opinion. Case insensitive filesystems are just lazy programming.
Case insensitive file systems arent lazy, they’re a programmer putting in a lot of effort to try and be helpful only to realize that their helpful system doesn’t actually cover all the edge cases it needs to and thus just adds a whole extra layer of complication and annoyance to the project.
Hmmm. I doubt that, unless they were really bad programmers, downcasing (or upcasing) the file name in the file name accessors took much work, but I’ll grant it’s more than zero.
I’ll retract the “lazy” comment.
That’s because you’re thinking in your tiny ASCII bubble. Switching case in Unicode is a hugely complex problem.
Wait… vfat supports Unicode? The filesystem that craps out if the file path length is longer than a couple hundred characters; that is an extension of a filesystem that couldn’t handle file names longer than 8.3 characters; that doesn’t have any concept of file permissions, much less ACLs; the one that partitioned filenames in 13 character hunks in directories to support filenames longer than 12 characters… that isn’t case sensitive, except in all the wrong ways - this filesystem can handle Unicode?
I greatly doubt that. FAT doesn’t even support 8-bit ASCII, does it? 7-bit only. Unless you mean FAT32, which can optionally have UTF-16 support enabled. And it’s far easier to manage case changes in UTF-16 than UTF-8, using case mapping as MS does. The API handles all of this for you; it keeps track of what the the user calls them, but uses it’s own internal name for the file. And na’er the two shall meet, lest there be trouble.
I do think it’s sloppy and lazy; it’s very easy to avoid doing actual work thinking about the problem and to bang out some hack solution. In the end, far more work is done, but for the wrong reasons.
I don’t know what Apple’s excuse is, except maybe DNA. Apple ][ were not only case insensitive, they didn’t even have lower case characters at all. There was only one case, and maybe those engineers brought that mind set forward with the Lisa, and then the Mac. How it got into Darwin… is Darwin really case insensitive? I’m pretty sure on the company line - at the filesystem level, it is.
I prefer case sensitivity, the filesystem shouldn’t do any magic like that. If someone types “file.txt”, opening “File.TXT” would be convenient, but also misleading. Ignoring case is what autocompletion/search is for imo.
The best things is when the OS enforces magic onto the filesystem. Ntfs is case sensitive but windoze is not. So expect some real fun times if you use ntfs on other systems.
Though I use a case-insensitive filesystem (APFS), I name all files lowercase with underscores and no spaces. Dates get hyphens. Example for purchase receipt to a show I’m about to attend: bloody_beetroots_2025-03-28.pdf
ISO 8601? A man of culture I see.
It’s the only sane dating system.