One has to be very careful when they share a git repository between case-sensitive and case-insensitive OSes
The utility is that the filenames are digitally unambiguous buckets of bytes and we avoid 1000000 ways things can go wrong with case-insensitivity, plus the huge performance penalties.
Sometimes catering to how the machine works makes things better than going through hoops for marginal returns and complicating every part of the stack with that technical debt.
>If main.h and Main.h are truly different, I find it more useful to make the file name more descriptive than just changing letters.
Well, main.h and Main.h are visually different, aren't they?
That's only because of a similar cluster-fuck that is unicode compound characters and normalization schemes.
One and only one unambiguous code per different visible glyph would have been too much to ask...
As an analogy take the common text file. Would you like it if the read() and write() system calls looked at the file extension and refused to write non-ASCII or non-Unicode into it?
I would not like that. The flexibility to do whatever I want with those bytes is more important than guaranteeing correct text encoding.
If someone wants that for their system, make the user software do it, not the kernel.
You might be interested in reading "the design of everyday things" by Norman.
If you are developing something for your own use, who cares. But for something that users (even technical users) are going to use, these marginal returns are what makes the difference between a pleasant or a frustrating experience. It's the kind of things that Apple users (used to?) expect in Macs.
I've read it 20+ years ago as suggested by a HCI class at the uni.
The point still stands, regardless of whether it's something for "one's own use" or not. The technical debt from such decisions like a non-case-sensitive fs and the piles upon piles of kludges required to sustain it affect everybody, including the "non technical users".
>these marginal returns are what makes the difference between a pleasant or a frustrating experience
Users can be taught a simple, unambiguous rule, and they'll never think twice about it. "Pleasant experiences" that come with performance penalties, bugs and caveats on the other hand, make them suffer more, whether they know the cause or not. At some point the Clippy was somebody's idea to "delight the users" too.
>It's the kind of things that Apple users (used to?) expect in Macs.
And the kind of thing Apple itself decided it was not worth it.
Now, if we take the example in this thread (INSTALL and install), WHY ON EARTH did the programmer think it was a great idea to do name files like that? Sure, INSTALL for a readme is a tradition in free/*nix software, but then s/he could rename the other file. It seems to me that what really affects users are these nonsensical decisions taken without ease of use and ergonomics in mind.
In 99.9% of cases (no pun intended), case sensitivity is useless and needlessly confusing, which is why you don't use variables named buffer and Buffer in the same scope (I hope), even if you can.
> And the kind of thing Apple itself decided it was not worth it.
Well, I'm still using a Mac because I think the whole experienced is way more polished and consistent than any other Unix, or Windows. And I'm sure many here agree.
Case insensitivity is bad design by the standards established by Norman whose book I have also read.
Well, that's at least arguable. See for example https://www.nngroup.com/articles/readers-comments-on-url-as-...
"We don't need any more case-sensitive computers . It is now several decades since research on human errors proved the prevalence of description errors where people easily confuse two situations that are virtually identical except for a small difference"
That's from Jakob Nielsen, of the Nielsen-Norman group, in which the Norman is that Norman we both referred to.
File systems pose different challenges than urls. Ambiguity in file systems is wholly unacceptable and its more important to be simple and correct than keep idiots from typing afile instead of Afile.
Also it can be bad design in the sense that Norman described even if Norman himself disagrees.
Of course Norman and Nielsen could be wrong, even if they are renowned experts of this field. But please consider that you might be wrong, too :)
I think you answered this yourself:
> If main.h and Main.h are truly different, I find it more useful to make the file name more descriptive than just changing letters.
I truly doubt that most users - especially non-technical users - actually would do this.
Let me argue this another way. Nobody regards John Smith and john smith as different names.