But then you are not getting rid of the complexity, you are just forcing programs to become more complex/inefficient.
I experienced this with the doom libretro core, which is meant to be portable and have minimal dependencies… so if I need it to automatically find DOOM.WAD
/ doom.wad
/Doom.WAD
/etc in a directory I would either have to add a globbing library as dependency to handle this case and have it fetch [Dd][Oo][Oo][Mm].[Ww][Aa][Dd]
, manually check for each possible case, or list the entire directory (I hope you don’t have a library of a million wads!) and compare each file (after upper
/lower
) just to find the one with the right name. And that could be a real pain for embedded devices with low I/O or if there’s a remote storage layer behind.
Yes, but you know what I did? nothing, I just have the program exclusively accept lowercase
doom.wad
This means it became annoying for the user. The problem shifted and now it’s the end-user the one with the responsibility to read the manual and do the work. A lot of people just get a
DOOM.WAD
, put it there and are surprised it doesn’t work.And there are many many programs that are doing the same thing in many similar situations. In fact, in the Linux world, most software pushes this to the end user. So this is just as much of a problem for users as it is for programmers.
At the end of the day, the question should not be: is it more complexity for the user or for the programmer? …the question should be: what’s the end cause making it complex? is there a way it can be made simpler?
This is the same for every problem. Often user-friendliness is a tradeoff, most user-friendly software I’ve used keeps so much complexity within that it becomes annoyingly slow and inefficient. I’d rather use the terminal for file management than wait for the GUI file browser to finish loading my huge remote storage directories.