The new, in my opinion proper, structuring is basically as follows:
- Executables and other static data in Program Files
- All user specific and "dynamic" data in user home directory*
This approach has numerous advantages:
- Only admin can access Program Files, so viruses for example cannot infect the executable files or do other damage to installed data
- Executables and data files are shared between all users of the computer, but each user automatically has their own config settings etc. without any special "profiles" support in the application
- Easy transfer and backup of your personal data, ie. you only need to take a backup of your home directory and all your important data is safe: You can reinstall the application itself and then copy your home dir data back and all is back the way it was, without having to do backups of the whole program installations (not a big issue in LFS' case, but if all other applications behave this way and LFS doesn't then its an annoyance to do special steps for LFS)
- All your private data is safe from other users, ie. if a server admin password is saved in some config file then its in your home dir and other users of the computer cannot get to read it
* In XP this is a bit messy, with horrible names like "Documents and Settings", "Application Data", etc. but this has been made more sensible in Vista and especially Windows 7.
(All this is documented by Microsoft and they do provide guidelines for using them, for example here. I think the only reason why the situation today is such a mess is that many developers simply do not follow these guidelines)