Don't Pollute User Space

I agree with you all. Programs should not pollute, but they should not make the useful files (saved games, yes) hidden either. I think the important part is habing official standards, set by the OS, so that from then, people can start ignoring them.

I think one of the problem is that many coders who code for windows don’t have the correct information, and won’t find it even if such documentation exists and is easy to find. They’ll ASSUME it’s something like that, and go on. (I’m not really better myself, but then, it’s not directly my job either).

The My Document mess is pretty bad, but I’m more troubled by the program files mess itself. Some program seem to think this folder is not good enough for them, and will use simply “C:” instead and that, without asking.

So where should programs save their files? I thought writing to the C:\program files\program directory was a no-no? Doesn’t that give a UAC warning? Your program certainly shouldn’t write to C:\directory

Actually, “Users” and “Library” are NextStep conventions, not the historic unix/linux ones (which use “home” and “lib” for much the same purpose, displaying the unix allergy to uppercase letters and uncontracted words).

Re the “dot files”: remember that on unix/linux, files/directories beginning with a period are hidden files and don’t show up in normal listings. Though I wish they’d picked /home/username/.etc/ to dump them all in.

The one I hate the most is “My eBooks”. Even if I delete it the first
time I load up Adobe Reader it re-appears in My Documents.

So use the free Foxit reader instead.

I hate all this “My Pictures” “My Skype Shared Files” “My Buggy C# Code” that Windows seems obsessed with. I know it’s mine, it’s on my PC (or at least my profile).

And no, Visual Studio shouldn’t create its own folder to put your files in. That should be your job. What if I have somewhere else that I store source because I don’t just use Visual Studio? Just make step 1 of the startup wizard “where do you want to store your files?”.

Ask me where I want stuff to go, don’t tell me where it’s going… it’s MY documents after all, as Windows is so insistent on telling me. That means it conforms to MY structure.

When programs want to store data they should ask the user, and default to My Documents, just like MS Office does. If it wants to save a directory structure then make the program ask the user on its first run where that should go.

Now someone change the Unix convention so we get a “Documents” directory so that our work isn’t mashed in with hundreds of dotfiles and bits of random junk :wink:

Vista is a vast improvement on the handling of user home directories/folders (user space is a memory/process issues) over any previous Windows I’ve used. However, it appears that Linux is picking up bad habits from Windows, at least the KDE desktop environment (or some of its apps are). Imagine my surprise after years of never seeing automatically generated visible directories in /home/user when I suddenly saw things like “Documents” and “Music”! At first I thought this was because I share my main personal /home/user and mount it on other machines (including a Vista system) and that Windows had somehow done this to me. Not so. Turned out it was KDE that done it.

As for .hidden directories on Linux/Unix: they are not-visible by default in the GUI and via ls and normally I wouldn’t put .hidden directories in /home/user for my own purposes. So .hidden directories are good for user-specific data, like configs or saved games… where else would you put that data on a Linux system since /home/user is probably the only place an app can write without privilege escalation?

On the other hand, what are VBA script kiddies like me supposed to do? I’m someone who writes a fair amount of scripts and solutions for Microsoft Office, and being able to just plunk my crummy little template into C:\Documents and Settings\Geoff\Application Data\Microsoft is kind of handy, in many cases. That way, I’m the only one who’s the victim of my crappy macros. :slight_smile:

Even funnier is that Microsoft breaks the Mac OSX convention as well. Install Microsoft Office on your Mac and you get a Directory called ‘Microsoft User Data’ in ~/Documents as opposed to ~/Library/Application Support which is where it should go.

I couldn’t agree more, and it drives me absolutely nuts (most especially when non-user editable files are dropped in my documents; for example saved games and application configuration files. If the user never directly opens the file for manipulation it belongs in application data). However vista has come to the rescue!

I have found that the only viable way to use Vista is to not view hidden files and folders (as there are so many more) but this has afforded me the opportunity to us mklink at the command line to make a symbolic link in the documents folder pointing to where the file really should be stored, which I then hide. I suppose I could just hide the offending folder in documents, but this way I know absolutely where that file is (with all other similar files) and it isn’t hidden in that location when I want to go find it. I think mklink is my single favorite thing in vista as it allows me to organize the file system how I want, not how any other developer wants (what they hell do they know about how my system is configured).

It is also a great way to move the user directory off of the system partition so that I can format/reinstall the OS without jeopardizing my user files.

I haven’t used Vista much, because what little bit I have used I’ve hated, but the user data directory system seems even more awkward than XP. I do agree though, half of the folders in my main documents folder were not created by me. Why couldn’t those go in the Application Data folder?

On a side not, Jeff, I have a recommendation. Alex over at The Daily WTF just implemented a new feature where he highlights his favorite user comments on each post, these show up in blue at the top of the comments. It would be nice, since you have so many commenters, to see the same thing here. Just a thought.

I agree that Windows apps should be more courteous and consistent about where they store things.

Microsoft has other ideas. Vista introduced the new, extensible Known Folder system, which offers much fuller Windows-integrated support for adding all sorts of application-specific crap to user space:

http://msdn2.microsoft.com/en-us/library/bb776910(VS.85).aspx

Frankly, the mess that results from this sort of thing is largely the result of Microsoft’s failure to lead software developers effectively. If MS was better at explaining what features were intended to accomplish, apps would be more consistent and polite. If MS was interested in making Windows a little more actively self-administering, a lot of these things could be gently guided toward consistency by the “make the easy thing the right thing” principle.

Well you know what, developers used to store settings in the application’s program folder and in the windows folder. That was before we cared about security and everybody ran as an admin. Nowadays, I write my config files, etc to Application Data, whether the User’s one or the All Users one.

Jeff I have to agree, like others I frequently uninstall programs that put more stuff in my My Documents folder, as titled those are My Documents, not application documents.

oh, and Cabbage let me introduce you to “ls -al”.

To Cabbage:
"(Yes, you can hide them, but then what do you do when you actually want to see them besides hunting around in configuration dialogs to find the checkbox to make them visible again?)"
What do you mean, “dialog boxes”?
alive@m00h test $ ls
visiblefile
alive@m00h test $ ls -a
./ …/ .hiddenfile visiblefile

There. That makes perfect sense, doesn’t it?

But my arrogance to the side, if you prefer to use a graphical file manager and a graphical text editor to “hunt around” in your “hidden files”, I’d suggest Nautilus where you can just click “View-Hidden Files” to show all the “hidden” files in your system.

This is such a bad problem to me that I put all my personal files on a separate drive, mounted at /media/files. My /home/justin directory just contains the Desktop directory and tons of hidden configuration stuff.

I absolutely can’t stand having OS configuration data mixed in with my personal files. Am I in the minority here? Both Linux and Windows do it by default.

I disagree with your thesis. The less computer-savvy a user is, the more appropriate it is to add some things to “user space”. A program responsible for pulling images from a digital camera for example. The pictures should definitely go in the folder the user expects (My Pictures).

If I’m playing a game, I’d rather have my saved game files show up in “user space” in a folder named “WhizBang Saved Games” than have those files tucked away under some arbitrary AppData folder.

Moreover, I really like the way Linux stores application data in .folders, like .mozilla, or .wine. The dot puts them out of the way during a regular ls -l command, but still leaves them in a convenient location like ~/.wine/drive_c/ when I want to get to something. If Windows can’t hide dot-folders in it’s graphical shell (Windows Explorer), then that’s what needs to be fixed, not the programmers who are storing data in an intelligent way.

Finally, if you don’t want my dirty, filthy paws on your user space, I suggest you not run any programs that I write. It’s not my fault you chose a half-assed operating system shat into the world by a convicted monopolist.

I put all my documents into directories i create. I don’t use the My Documents or Documents folders.

I PREFER apps to place directories for there projects/files in the Documents folder. Like Visual Studio. I prefer projects to go in the Documents/VS2008 folder when i DO NOT specify a directory. I wish ALL programs would create a directory inside Documents and use that as the DEFAULT save locations. Then i know where stuff was dumped and don’t have to go looking for it when i want to place it into a REAL folder.

Because apps do not do this i must ALWAYS select the final resting place for documents OR create the directory in Documents to dump into, before i finally move them to a real directory.

I Use Documents, Downloads, Pictures, and Music as temporary resting places before organizing them properly. I cannot imagine the mess I would have otherwise.

Personally this issue never bothered me, but stuffing “My Documents” full of various folders can become annoying if you have tons of apps which put their things there…

However my biggest annoyance with this (and the whole app data thing) is ANYTHING which puts ANYTHING AT ALL on my C: drive. DO NOT PUT STUFF ON MY C: DRIVE WITHOUT ASKING ME.

I constantly have to clean up C because of stupid apps which put their stuff there. Almost all bigger apps and some games put gazillion megabytes of files, eventually clogging up C: to the point where you no longer have enough free space on the partition. ARGH.

As others have said the main issue issues are as follows:

  1. No one has even discussed the difference between “roaming” and “local” users yet. Most programmers don’t know the difference. This means that there are two different sets of preferred folders for a local user. On XP the naming is ridiculous. At least they improved it a bit on Vista.

  2. There is no clear guidance from Microsoft.

  3. The folders that are considered “preferred” are actually marked as hidden by default so users can’t find them anyway. Why they did this I’ll never know.

  4. It is hard to distinguish between what a “user” creates and what a “program used by the user” creates.

  5. It is difficult to support applciations that can be installed for either multiple users or just a single user. It should be a simple base path change to support both but it isn’t. This is also confusing for users.

  6. Multi-user folder ownership is difficult. If a standard user creates a new folder under the shared documents area then they are the sole owner (even though it is under a shared folder). Other users can see the files in this folder but they can’t delete or modify them. In a world where users used to always run as administrators this wasn’t an issue. But now that users are supposed to be running as standard/limited users we have to worry about giving all users on the machine ownership to each folder we create.

Interesting how the operating systems’ conventions are converging. Kudos to Microsoft for not letting ego get in the way, and going with (mostly) similar folder names to Apple. This is good for users. (And even though I rarely use Windows, I am sincerely thankful for the liquidation of the embarrassing “My Pony” naming convention!)

Mac OS 9 (1999) actually had a user accounts and home folders system, which it inherited from At Ease (c 1991). But no one used it. The default start-up had no user account associated, and users continued to put their files wherever they felt. It’s a good thing that the clean break of OS X was able to impose a tidy new organization on both users and developers.

I’ve migrated my user folder through several machines since the previous century, and the only intrusive folders appearing are the empty ~/Documents/AdobeStockPhotos (now trashed) and Apple’s ~/Documents/iChats, containing my chat logs. Yes, iTunes and iPhoto each drops its own folder into Music and Photos respectively. Perhaps if Apple created them today, these apps would store their data in ~/Library (you can move and rename music files and folders and iTunes won’t blink, but woe be on ye who touches anything in iPhoto Library).

In Mac OS X, you can also add an ~/Applications folder, and the OS will support applications’ system services. Of course you can still drag a program into any other folder and still run it. Putting user apps here lets you move your entire account to another mac by copying the user folder, but it is easier to let the Migration Assistant do this.

It’s too bad that XP’s chaos drove all the savvy users to use a separate folder or hard drive, as attested by so many comments here. Although Vista has an improved structure, it looks like MS isn’t encouraging developers to clean things up, so the transition could be a long one.

With OS X Leopard adding the new Downloads folder, both OSes now have a very similar home folder structure.

In Mac OS, no standard folders are hidden:

Desktop
Documents
Downloads
Library [=~\AppData]
Movies [=~\Videos]
Music
Pictures
Public
Sites

Vista:

AppData [= ~/Library/]
Contacts [= ~/Library/Application Support/AddressBook/?]
Desktop
Documents
Downloads
Favorites [= ~/Library/Safari/]
Links [how is this different from “Favorites”?]
Music
Pictures
Saved Games [= ~/Library/game/, perhaps]
Searches [= ~/Library/Saved Searches/]
Videos [= ~/Movies]

By the way, since the Mac OS X file system is not path based, the folder names are internationalized. So if I go to the International System Preference and drag #1056;#1091;#1089;#1089;#1082;#1080;#1081; to the top of the language list, when I next log in to that account the home folder names are displayed as #1041;#1080;#1073;#1083;#1080;#1086;#1090;#1077;#1082;#1080;, #1044;#1086;#1082;#1091;#1084;#1077;#1085;#1090;#1099;, #1047;#1072;#1075;#1088;#1091;#1079;#1082;#1080;, #1048;#1079;#1086;#1073;#1088;#1072;#1078;#1077;#1085;#1080;#1103;, #1052;#1091;#1079;#1099;#1082;#1072;, #1054;#1073;#1097;#1080;#1077;, #1056;#1072;#1073;#1086;#1095;#1080;#1081; #1089;#1090;#1086;#1083;, #1057;#1072;#1081;#1090;#1099;, and #1060;#1080;#1083;#1100;#1084;#1099;. Will Vista do this?