Well, just curious... What reason you consider case sensitive for filesystem (over the default case insensitive)? Is there any real-world benefit having this? thanks!
Yes, there are reasons. And the Linux actually get it right. The rest are just trying to support their past mistakes and laziness.
Let's name a few most important:
- A case INsensitive file system introduce significant Internationalization problems.
The operating system will have to implement and perform functions like lower/upper case on all operations involving file names for each operation on the file. This may not sound like a big problem for an average English speaker. Well, there are 149186 different Unicode characters, some of them being upper and lower case letters in various languages from the world.
The MacOS kernel will have to convert every file name for every language in this world to lower case. And it should do this according to standards. The kernel file system driver is not the best place to include complex internationalization libraries. But wait, aren't the standards change with time? Yes, they are. Original characters conversion codes including Unicode standard were updated many times in the past. Old software that implemented upper to lower case conversion based on an older standard may stop working when dealing with new conventions.
More, various Unicode implementations of Unicode upper to lower functions were buggy and continue to be buggy due to the complexity of the various languages rules and depending on the conversion standard they implement. I contributed to one myself and I discovered bugs after many years despite a lot of projects where using it.
- The Unicode Standard is a Work In Progress, specially when it gets to supporting less-common writing systems and languages. English is quite well supported but once you start mixing Brahmic, Arabic, Armenian, Bengali, Bopomofo, Cyrillic, Chinese, Japanese, Hebrew... (just to name a few)... various problems may emerge with the software.
Are those conversions consuming CPU cycles? Yes they are! Somebody will say, that's nothing, just a lookup into a table. And he is right despite FS operations are a big percentage of any computer operations. But once you don't care about any performance issue, that's only the beginning of many similar bad choices. MacOS and Windows contains many lazy decision that are forcing users to spend much more money on expensive hardware... compared to what they actually should if the programmers where a little bit more careful...
- Many Linux native FS don't have this internationalization problem, any character stay the same no matter how standards change. For those FS any character in a file name is simply an unique integer number. It doesn't matter if it's an upper letter or not. No conversions are made. Kernel FS drivers doesn't keep unnecessary character conversion tables in ram for doing unnecessary conversion. That's why Linux remain the top choice for servers serving billions of users, a market where any mistake like this comes up to hunt you in benchmarks, your data-center energy consumption and your pocket.
- With more peoples using computers in their native language most OS and software will migrate to case sensitive and stop propagating the mistakes they did in the past, which is actually the only reason why we still have this choice today.
- Another common problem is related to the fact many modern programming languages implements case sensitive naming conventions for their files. An insensitive FS can quickly become a nightmare for a programmer. You may face many different packages, coming from different sources. For example one library called Driver, another one called DriVer - something related to versioning. When those libraries are packed together it may create problems in case insensitive FS. You will say: just rename the package. Well it is not always possible to simply rename them because they maybe part of external libraries out of your control or libraries used by other libraries. However even if possible it will be a complete waste of time. Libraries update often, and when they do you will have again to rename them, and rename the hundreds of occurrences in the code where they are referenced, again and again. Better just move on case sensitive FS and get rid of the problem itself!