And i hate it being case sensitive
Yeah, right? Are we pretending that having case sensitive file names isn’t a bad call, or…? There are literally no upsides to it. Is that the joke?
I’m with you here, i find it infuriating and i never ever had the situation where this was beneficial.
Like who tf actually creates a File.txt, file.txt AND FILE.TXT in one place and actually differentiates them with that.
I mean, it’s less of an issue on Linux for both design and user profile reasons, but imagine a world where somebody can send all the normie Windows users a file called Chromesetup.exe to sit alongside ChromeSetup.exe. Your grandma would never stop calling you to ask why her computer stopped working, ever.
For example I might store blobs of data processed by my database in files that have the Base64 ID of the blob as the filename. If the filesystem was case insensitive, I’d be getting collisions.
Users probably don’t make such files, no. But 99% of files on a computer weren’t created by the user, but are part of some software, where it may matter.
And often software originally written for Linux or macOS and then ported to Windows ends up having problems due to this.
For files of casual users it might be of benefit. They don’t care about capitalization. For system files, I find it pretty weird to name them with random capitalization, and it’s actually pretty annoying. Only lower- (or upper-)case would be ok tho.
To my knowledge since Windows 10, files can be case sensitive. It is still tricky to setup, but it won’t break.
Nah, Windows still fucks it up. I was forced to use Windows 11 for a code generation tool from a chip vendor the other week and it screwed everything up by inserting references to a directory with different cases than how it was actually created.
That’s more likely to be the tool assuming it’s running on a case-insensitive filesystem than it is Windows breaking anything. If you mount networked storage running on a case-sensitive machine, that’s something that’s worked fine in Windows for a very long time.
What a tragedy. Giving files slightly different names seems far more organized and logical than having several files with the same name and different capitalization. Really seems like a non-issue to me.
EDIT: I will never simp for Windows or Microsoft, I definitely think Linux is better in many ways. But my point still stands about this specific topic.
I’ve used Windows for a bit more than a decade, and I only found out its VFS is case-insensitive (by default) after I fully ditched the OS, when a bunch of Electron applications created directories with different cases - nothing ever broke because of it, save for a single Godot game.
Personally, I think case-insensitivity seldom makes sense, though I’m also aware that not everyone [knows how / is able] to properly operate a keyboard.
This is one case where I think Windows is appropriately designed for its target audience.
I don’t really see the benefit of allowing users to create files with the same name in the same directory, yeah, yeah I know that case sensitivity means that it isn’t same name, but imagine talking to a user, guiding them to open the file /tmp/doc/File and they open /tmp/doc/file instead
The reason, I suspect, is fundamentally because there’s no relationship between the uppercase and lowercase characters unless someone goes out of their way to create it. That requires that the filesystem contain knowledge of the alphabet, which might work if all you wanted was to handle ASCII in American English, but isn’t good for a system which needs to support the whole world.
In fact, the UNIX filesystem isn’t ASCII. It’s also not unicode. UNIX uses arbitrary byte strings, with special significance given to a very small number of bytes (just ‘/’ and ‘\0’, I think). That means people are free to label files in whatever way they like, and their terminals or other applications are free to render them in whatever way seems appropriate, without the filesystem having to understand unicode.
Adding case insensitivity would therefore actually be significant and unnecessary complexity to add to the filesystem drivers, and we’d probably take a big step backwards in support for other languages
You’re basically arguing that a system shouldn’t support user friendly things because that would add significant burden to the programmer.
The quintessential linux philosophy. Well done! I mean, what is language? Why have named code variables? This is just a random array of bytes!
This isn’t “Windows design”… this is just inherited stone age bullshit from the DOS days when the filesystem was FAT16 and all file names were uppercase 8.3.
NTFS is case sensitive in its underlying design, but was made case insensitive by default, yet case preserving, for reasons of backwards compatibility.
If Microsoft has to design something from scratch, without the need for backwards compatibility, they go for case sensitive themselves. For example: Azure Blob Storage has case sensitive file names.
If you rename a file only changing the casing it doesn’t update properly, you need to rename it to something else and back.
This is so userfriendly I have been stumped by it multiple times.
On the other hand in using Linux I have had a number of problems with the casing of files: The number is 0
If you rename a file only changing the casing it doesn’t update properly, you need to rename it to something else and back. This is so userfriendly I have been stumped by it multiple times.
To my great surprise, this has been fixed. I don’t know when, but I tried it on my Windows 10 VM and it just worked. Only took them 20 years or so :)
macOS also does this by default, but you can change it (though you have to reformat the disk in question). This is generally fine for non-system disks if you REALLY need it for some reason, but afaik it is not recommended for the OS disk due to assumptions that macOS-targeted binaries make (similar to the windows regex version matching that caused problems for a while because it became the unofficial best way to check windows versions for app install compatibility). It’s doubly annoying on newer Apple systems because the integrated SSDs are WAY faster than pretty much anything else you can connect to it. But for the most part, I find it’s more of a nuisance to keep in mind than a real problem (I’ve been dealing with dev-issue MBPs since about 2012).
As in the windows case, this is also an appropriate choice for the average Apple user (though the fact that they’re fairly ubiquitous as dev machines in many places is annoying on several levels, despite the generally solid best-case performance and thermals I’ve observed).
Huh I had thought case-sensitive was default on APFS/HPFS and you had to choose insensitive specifically but I guess not
Windows way is superior, in my opinion. I don’t think there’s a need for File.txt and fILE.txt
Indeed. Linux audio also allows control characters like backspace to be part of a file name (though it is harder to make such file as you can’t just type the name). Which is just horrible.
Yeah, Linux can capture and playback the spoken distinction between lowercase and uppercase letters. Windows can’t do that.
You’re not taking advantage of that functionality?
I don’t think there’s a need for File.txt and fILE.txt
It’s not so much about that need. It’s about it being programmatically correct. f
and F
are not the same ASCII or UTF-8 character, so why would a file system treat them the same?
Having a direct char
type to filename mapping, without unnecessary hocus pocus in between, is the simple and elegant solution.
Because it’s designed for average people
It is not. It is designed for all purposes, automated processes and people alike. A filesystem is not just for grandma’s Word documents.
And even people’s names are case sensitive. My name has the format Aaa Bbb ccc Ddd. It is not the same as the person with the name Aaa Bbb Ccc Ddd, who also exists. So why shouldn’t file names be?
It turns out that the easiest thing to program isn’t always the best application design.
I would argue that elegance and being easy to program are virtues by themselves, because it makes code easy to understand and easy to maintain.
A one-to-one string to filename mapping is straightforward and elegant. It’s easy to understand (“a filename is a unique string of characters”), it makes file name comparisons easy (a bit level compare suffices) and as long as you consistently use the case that you intend, it doesn’t behave unexpectedly. It really is the way of the least surprise.
After all, case often does have meaning, so why shouldn’t it be treated as a meaningful part of a filename? For example: “French fries.jpg” could contain a picture of fries specifically made in France, whereas “french fries.jpg” could contain a picture of fries made anywhere. Or “November rain.mp3” could be the sound of rain falling in the month of November, whereas “November Rain.mp3” is a Guns N’ Roses song. All silly examples of course, but they’re merely to demonstrate that capitalization does have meaning, and so we should be able to express that canonically in filenames as well.
That’s some suckless level cope. What’s correct is the way that creates the least friction for the end users. Who really cares about some programming purity aspect?
That’s some suckless level cope
Thanks, really constructive way of arguing your point…
Who really cares about some programming purity aspect?
People who create operating systems and file systems, or programs that interface with those should, because behind every computing aspect is still a physical reality of how that data is structured and stored.
What’s correct is the way that creates the least friction for the end users
Treating different characters as different characters is objectively the most correct and predictable way. Case has meaning, both in natural language as well as in almost anything computer related, so users should be allowed to express case canonically in filenames as well. If you were never exposed to a case insensitive filesystem first, you would find case sensitive the most natural way. Give end users some credit, it’s really not rocket science to understand that f
and F
are not the same, most people handle this “mindblowing” concept just fine.
Also the reason Microsoft made NTFS case insensitive by default was not because of “user friction” but because of backwards compatibility with MSDOS FAT16 all upper case 8.3 file names. However, when they created a new file system for the cloud, Azure Blob Storage, guess what: they made it case sensitive.