https://bugs.kde.org/show_bug.cgi?id=402346

--- Comment #14 from Thomas Debesse <d...@illwieckz.net> ---
`GenericConfigLocation` should never be used to store configuration. On Windows
it is set to `C:/Users/<USER>/AppData/Local`, here `Local` means “local to the
machine”. This being “local” means anything stored here is lost when the
computer is replaced and such data is not meant to be backed up. It's only use
is for some machine-specific data. This is the place to store data that is not
cache but should not be backed up. The only situation where a configuration can
be placed there, is like if the configuration is specific to the hardware and
is not supposed to be reusable on another hardware (like some screen layout on
a laptop).

The application configuration should be stored in `AppDataLocation` which is
`C:/Users/<USER>/AppData/Roaming/<APPNAME>` on Windows. The application
configuration should be stored in the “Roaming” folder, never the “Local” one.
As said the Local one is meant to be lost with the computer, the Roaming one is
the one that is kept is sync with the file server. If a computer breaks, the IT
service just replaces the computer and on next session opening, the “Roaming”
server is downloaded and the user gets his config restored on the new computer
like if nothing happened. The same happen in an office with multiple desks that
are not specific to users: whatever the computer the user uses, the Roaming
folder will be kept in sync with the computer he logs on (hence the “Roaming”
name), whatever the computer. If the configuration is stored in the “Local”
folder, then the user will have to reconfigure the software on every
workstation as the user roam across the various workstation according to
workstation availability.

The `GenericConfigLocation` has almost no usage, there is a reason why
`GenericCacheLocation` is set to `C:/Users/<USER>/AppData/Local/cache` on
Windows, because the Local folder is local to the machine, but setting generic
configuration in Local folder is nonsensical, the only situation where config
can be stored here is that if the config is non generic but local, specific to
the exact computer and assumed to be non-portable across computers.

The `GenericConfigLocation` being set to `C:/Users/<USER>/AppData/Local/` on
Windows is a design bug of Qt itself.

Qt applications should use `<GenericConfigLocation>/<APPNAME>` on everything
but Windows, but should use `AppDataLocation` on Windows.

The confusion is that file layouts totally doesn't match between Windows and
Linux.
On Linux there is a separation between `<HOME>/.config/<APPNAME>` (application
config directory) `<HOME>/.local/share/<APPNAME>` (data application directory).
On Windows that doesn't exist, there is only
`<DRIVE>\Users\AppData\Roaming\<APPNAME>`.

On the other hand, while Windows has both a “Local” local-to-the-machine folder
and “Roaming” shared-accross-machines folder, Linux doesn't have such
distinction: everything is part of the same home folder and is backed up.

The “Local” name in Windows and the incredibly misnamed “.local/share” folder
on Linux adds to the confusion, the Windows “Local” folder is “local to the
machine”, the Linux “.local” folder is just a parent folder with weird name for
the “share” folder and maybe no other folder. The “share” name of a folder
purposed to be shared is antinomic with its parent ”local” one as it is not
local but shared. Maybe XDG designers just wanted to somewhat mimic the File
Hierarchy Standard with user's `.local/share` being like system's `/etc/share`
and maybe some other future `.local/something`.

Anyway, NEVER use Qt's GenericConfigLocation to store application configuration
on Windows : this is a serious mistake, it's the same mistake as writing
configuration in a cache folder.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to