Hacker News new | ask | show | jobs
by GuB-42 272 days ago
I don't consider "My..." in Windows XP to be a blooper. In folders, it meant these are personal folders, as opposed to system folders, shared data, etc...

You have to put it into context, it was the fist multi-user system for most people. Before that, they considered the whole filesystem to be theirs, no pesky permissions or anything like that. So "My" is a good indication for where to put their stuff (instead of, say, C:\).

I think it makes more sense than "Your" as "Your" is more like "stuff the computer gives you / read only" rather than "stuff you give the computer / editable" and a folder like "My Photos" is more of the latter. Matching the idea of the article where "your" is the question, a question is not something you change, and "my" is the answer, which is the thing you act on.

And by the way, the more I look at it, the more I respect the UI designers at pre-Windows 8 Microsoft. So many stupid things that turned out not to be stupid at all. It doesn't mean perfect, but when we see the mess that we have now, it pretty much was by comparison.

Another one is why have folders with spaces in them: "Program Files", "My Documents", etc... The rumor is that it was to force programmers to take handle spaces in filenames properly, because if they don't, it won't work at all. And seeing how terrible the situation is with Unix shells, if true, it is definitely justified. Most of the shell scripts (and not just shell scripts) I see outside of popular public projects fail to handle spaces properly, sometimes catastrophically.

5 comments

The real solution is to clarify the position of the folder in the hierarchy. If the Pictures folder is in your user directory what else than your folder should it be?

Lets say your name is alex and you share the computer with tony. Both of you have folders called "My Pictures". That "My" is simply false if you look at the files in Tonys directory. The conceptually much better solution is to take the parent folder into account. In Linux that usually means /home/alex/pictures and /home/tony/pictures

Filepaths in my opinion are already a perfectly fine abstraction and everything that tries to teach people to not understand them is creating new problems and a new class of idiot that doesn't understand computers. The latter is of course a feature, not a bug from the standpoint of OS manufacturers thar want to smartphone-iphy their Desktop-OS.

> Lets say your name is alex and you share the computer with tony. Both of you have folders called "My Pictures". That "My" is simply false if you look at the files in Tonys directory. The conceptually much better solution is to take the parent folder into account. In Linux that usually means /home/alex/pictures and /home/tony/pictures

I haven't used Windows in a long time, but, at least back in the 95 days, "My Pictures" wasn't the name of the folder; the name was (IIRC) just "Pictures", but Explorer displayed it as "My Pictures" when you were in your home directory, making it just an additional affordance over the structure you indicate. So Alex wouldn't see it for Tony's "Pictures" folder.

I've never seen Explorer show any name other than the folder name, for what it's worth. Then again, I don't remember Windows 95 having "my" anything, except for "my computer".
"My Computer" and "My Documents" first showed up in Windows 95, though. In that context, it's not really a multi-user system.

But yes, I do quote all my paths excessively in shell scripts because of Program Files…

The blooper is that apps take the initiative to put random files in there, thus it is no longer "mine".
I don't know the Microsoft guidelines about that. But my understanding is that apps should put their stuff in AppData.

"My ..." is for files intended for the user to access directly. For instance photo apps will naturally save their photos in "My Photos", but just the photos, and with the understanding that the user can reorganize them, open them with other apps, etc... Apps that put their crap in "My Documents" are likely not following the best practices.

Note that not all folders in %userprofile% are called "My ...". For example "Downloads" (you are not supposed to modify stuff there, just read and delete) or "Desktop" (you are not supposed to access it through the explorer). The OS won't stop you, but the fact they aren't "My..." is a hint that it is not their purpose.

Microsoft has been inconsistent, both in recommendation and what they've done in their own programs. Probably the most inexplicable is that in the Windows Vista timeframe they recommended that games place their save games into a folder under My Documents despite the Saved Games folder having also been introduced in Vista.
That was often a sticking point that broke compatibility with programs between XP and Vista. Starting in Vista only programs running as administrator can modify the Program Files directory, but many programs for XP would dump config files and such directly in their installation directory. You'd have to run those programs as administrator every time or else they wouldn't work.
Every platform and application seems to do things differently. On Linux, I end up with a mix of dotfiles in my home directory, some apps putting things under ~/.local/..., and then tools like Miniconda insisting on a top-level folder. It feels inconsistent and messy. Windows isn’t much better—despite having an AppData folder, some programs still scatter their files in random places. \s I guess we'll just need to create a brand new standard, that will make things better. \s
> \s I guess we'll just need to create a brand new standard, that will make things better. \s

Linux has one single standard, all that software doing random stuff is non-standard.

And the standard says it's configurable, so I don't know what of your examples is the correct one on your machine.

There is definitely not one single standard. If you look at the "Filesystem Hierarchy Standard" (LSB standard, which is not universal), on the section about the home directory, you can find this:

> A number of efforts have been made in the past to standardize the layout of home directories, including the XDG Base Directories specification [9] and the GLib conventions on user directory contents. [10] Additional efforts in this direction are possible in the future. To accomodate software which makes use of these specifications and conventions, distributions may create directory hierarchies which follow the specifications and conventions. Those directory hierarchies may be located underneath home directories.

So one standard saying you should look at other standards. XDG from freedesktop.org is the most popular (and probably the one you are referring to). However, it relate to Linux desktops, it says nothing about non-desktop applications (ex: bash, ssh, git, ...). About git, it would a bit ironic for git, made by Linus himself for working on the Linux kernel to not follow the "one standard".

Many standards refer to other standards. The XDG Base Directories specification is for any software on any Unix like OS. Git supports it. So does GLib. Bash and OpenSSH should. The GLib user directories are Desktop, Documents, and so on. The specifications do not conflict.
It looks like Git supports it since 2015 and Bash and OpenSSH apparently don't as neither contain the string "XDG_" in their binary.
Raymond Chen clears things up again:

> Some people suggest that one thing Microsoft Research could do with that time machine they’re working on is to go back in time and change the name of the Program Files directory to simply Programs. No, it really should be Program Files. Program Files are not the same as Programs. Programs are things like Calc, Notepad, Excel, Photoshop. They are things you run. Program Files are things like ACRORD32.DLL and TWCUTCHR.DLL. They are files that make programs run. If the directory were named Programs, then people who wanted to run a program would start digging into that directory and seeing a page full of weird DLL names and wonder “What the heck kind of programs are these?” And eventually they might figure out that if they want to run PowerPoint, they need to double-click on the icon named POWERPNT. “Computers are so hard to use.” WLCM2DOS

> If you want to find your programs, go to the Start menu. The Program Files directory is like the pantry of a restaurant. You aren’t expected to go in there and nibble on things that look interesting. You’re expected to order things from the menu.

https://devblogs.microsoft.com/oldnewthing/20131119-00/?p=26...

See also:

https://learn.microsoft.com/en-us/previous-versions/technet-...

I'd buy this except we have existence proof of how Apple solved this by instead making .app folders act special in the UI and having an /Applications folder you drag applications into.

A much more elegant solution and I think the criticism stands correct; Microsoft Research just didn't realize how to solve the problem and everything else is justification after-the-fact.

I'm not a mac guy - but I was playing some sts and for some reason my _data_ was embedded inside an Application which is kind of a package of files and I have to "unzip it" from a context menu to see the save games (but everything still functions the same).

That is, imo, awful. I'm not sold they've got everything right

That is very weird and suggests the App developer made a weird choice and ignore the HIG. Not a problem with the approach IMHO.
I remember when you’d look in that folder in old versions of Windows, explorer would actually tell you, “Hey, don’t look in here!”

This was because they hadn’t yet implemented security. (Was probably Win98 or so.)

Except that "Program Files" contains also folders, so it should be "Program Files And Folders", with all the nasty caps and spaces. What's the point of pushing the details to such level if you destroy usability?

In the meantime unix and alike use /bin, /lib, ... and everybody is happy.

But Unix isn't a good system for a person that isn't a computer geek
Macs seem to sell just fine to people that aren't "computer geeks".

> https://www.opengroup.org/openbrand/certificates/1223p.pdf

this makes Unix-style directories seem downright logical:

- programs go in /bin

- configurations go in /etc

- libraries go in /lib

- your personal user files go in /home/username

And then, there is /usr

It was supposed to be the user directory, but because someone didn't have enough space on /, it was somehow decided to put some stuff in there, so you have /usr/bin, /usr/lib, etc... But the user directories moved to /home, making /usr hold everything but user directories. Decades later, we still don't know what goes in /usr and what goes in /. In theory, what you need to boot the system should go to /, the rest goes to /usr, but in practice, there is no real rule, just don't break the scripts. Nowadays, distros tend to link one to the other in hope of making some sense without breaking too much stuff.

All that because someone was lacking disk space at some point in history.

But do you put extra programs in /usr/bin, /usr/local/bin, /opt/, ~/bin. ~/.local/bin or somewhere else entirely. Or if you're using homebrew, who the hell even knows how to make those the first choice in your PATH.
i thought /usr was a mounted shared volume for files that were static for everyone in the lab/office and the local machine machines files went in /
It should have been /shr for shared resources rather than unix shared resources (usr) to prevent people from confusing it with something related to user
god I wish it was that simple. Anything using the native package manager mostly follows this convention (with a variants like /usr/bin, /usr/local/bin, /opt). As soon as you need to install something that's not available from the system package manager all bets are off and you need to get ready for your home directory to never look the same again.
So, each thing is split through five completely different categories. And my /home/username still have to contain tons of configuration files.
These labels are unintuitive.

‘Bin’ is a generic empty container, and specific slang for a trash can. It might stand for ‘binary’ but what’s the difference between ‘binary’ 1s and 0s and ‘binaries’ aka compiled executables?

‘Etc’ is a dismissive way to refer to there being more things, too numerous to list: X, Y, Z, etc. in no way does it relate to configuration or options or settings or preferences.

‘Lib’ is fine I guess, but also what are libraries. If I ask my mom “what libraries do you have on your computer?” She’s going to be 1) confused and 2) assume I mean ebooks. I’m a programmer so I have a concept of what a library is - but how does that relate to my OS? Is it packages? Is it utilities? Is it frameworks?

accessible, intuitive, usable UX is a Very Hard Problem, there’s a reason it isn’t trivially solved with directory names like ‘bin,’ rather with elements of layout, colour, iconography, typography, you know, a GUI.

Users don’t want to solve a logic puzzle in order to interact with their computer.

except...
The types of people digging in PROGRA~1 were pretty likely to understand the difference between executables and DLLs.
Everything under %USERPROFILE% is user data, so having "My" for directories living under it makes zero sense. XDG user dirs is good enough to tell you where you put stuff and for programs to find them.