[systemd-devel] file-hierarchy. user persistent data dir.

Ivan Romanov drizt at land.ru
Fri Jul 4 03:56:06 PDT 2014


Thanks for such detailed answer.

On Friday, July 04, 2014 12:33:06 PM Lennart Poettering wrote:
> On Fri, 04.07.14 11:38, Ivan Romanov (drizt at land.ru) wrote:
> > Hello.
> > 
> > Now specification defines system variable persistent data dir (/var) but
> > not defines similar directory for user data. I developer of Psi+ (IM
> > client)  when I was implementing XDG Base Directory Specification was
> > questions where should be saved user conversation history. How I
> > understand ~/.config is used for any settings of application,
> > ~/.local/share is analogue of /usr/share, ~/.cache for data which always
> > can be regenerated and can be freely removed. So no one from these dirs
> > is not suitable for saving user data which is generating by application
> > and needest only in this application on this machine (user conversation
> > history for example).
> > 
> > So I would like to see Persistent Variable User Data Directory in
> > specification.
> 
> I have discussed this a couple of times with various people from GNOME,
> XDG and otherwise, and we came to the conclusion to avoid this
> distinction between configuration and state for the user, and simply ask
> applications to put both into ~/.config. Which is actually what
> file-hierarchy(7) even says.
> 
> The rationale is that the distinction is too specialized for
> applications, they never got that right, and since we cannot protect
> this anyway we probably shouldn't simplify things here, and tell app
> developers to put whatever they like that is variable and changing in
> that directory. So there are there dirs:
> 
> ~/.config: state and configuration, the counterpart for both /etc/ *and*
>            /var/lib/ in the home directory
> 
> ~/.local: static vendor resources of additional packages installed into
>           the home directory. Should be considered read-only except when
>           new packages are installed or removed from the home
>           directory. The counterpart of /usr/ in the home directory.
> 
> ~/.cache: unessential state, that can be flushed if the user desires so
>           without ill effect. The cunterpart of /var/cache in the home
>           directory.
> 
> Also see the discussion around this:
> 
> http://lists.freedesktop.org/archives/xdg/2014-February/013189.html
> 
> Not of course, that this is not what many apps do. Because the XDG
> basedir spec is badly writtem and more confusing than explaining, what
> people ultimately did is use ~/.local for state. I can only recomend not
> to do that though.
So I think new specification should explain this with more obviously way.
To resolve the ambiguity.


> 
> We are working on making user app sandboxing work in the context of
> systemd, one part of that will be that sandboxed apps will only get
> write access to ~/.config and ~/.cache, but only read-only access to
> ~/.local, if at all.
> 
> Lennart





More information about the systemd-devel mailing list