Tak ogólnie to jestem wielkim zwolennikiem backward compatibility i seamless transition.
Czyli jak sam piszę soft to próbuję to robić tak, że będzie umiał pracować ze starymi formatami danych.
Ogólnie staram się to tak robić by istniała zawsze deterministyczna ścieżka transformacji. To się do pewnego stopnia da prawie zawsze zrobić.
System plików w macOS jest by default case insensitive, czyli plik README.md i readme.md są tym samym plikiem. Da się podobno system plików zmienić na case insensitive, ale wymaga to dziwnych operacji (jak reformatowanie dysku, bo jak OS jest OK z oboma przypadkami, to dysk by default jest sformatowany dla case insensitive).
To case insensitive jest jak rozumiem pozostałością po wcześniejszych OSach, najpewniej tym z Apple DOS z Apple II, który miał chyba tylko uppercase i tak zostało, więc system plików dla Classic MacOS stał się case insensitive i jak Classic MacOS stał się OS X (czyli de facto NextOS z Rosettą) to i system dla OS X dostał case insensitivity... OK, jest też wersja bardziej oficjalna, że Classic MacOS dostał ten ficzer specjalnie bo to było przyjazne dla userów... moje 20+ pracy z kodem sugerują, że to mogło być ubieranie w szatki ficzera czegoś co mogło wynikać np. z przeportowania kodu ;-) [ale fakt, to mogła być przemyślana decyzja, nie mająca nic wspólnego z tym, że kod dla Lisy był pisany na Apple II w Pascalu, czyli w języku który jest case insensitive i na OSie który wspierał tylko wielkie litery, a kod dla Classic MacOS był pisany na Lisa'ie....]
Zwykle to case insensitive nie robi problemów... chyba, że chcesz zrobić rename pliku z README.md do readme.md (czy jak w moim przypadku gdy przez pomyłkę miałem add.java i chciałem zmienić w Add.java).
Rename głupieje, bo każą mu zmienić nazwę pliku w już istniejącą nazwę....
Chociaż wydaje się, że twórcy narzędzi programistycznych, a może i samego OS mogliby wprowadzić zmiany w działaniu rename ;-) coś jak dodanie if'a który sprawdza, że hmm... nazwa pliku już istnieje i uchwyt do pliku to jest ten sam plik, ale jednak znak po znaku obie nazwy się różnią, więc trzeba pójść specjalną ścieżką... choć jak znam życie to ten przypadek też ma jakieś problemy, nie wiem, np. nie jest jednoznaczny przy konkurencyjnym dostępie do plików ;-) albo fanatyczny product owner powiedział "nie będziemy robić tej zmiany" ;-)