Data that is not covered by the basedir-spec

Jonas DOREL jonas.dorel at laposte.net
Thu Jun 13 20:26:32 UTC 2019


I think this is a very important question, because currently, applying
different policies (backup, encryption, synchronisation, data duration,
...) to different kind of datas is a pain.


I think that the config/cache/data trio is actually a very well thought
differentiation of a basic framework to differentiate data and is a nice
base for a hierarchy.

Still, I think we should create a specification for those kind of data.
My idea would be to keep the data files in the XDG_DATA_HOME, not
changing the current XDG_BASE_DIR specification. But to assign a
specific file/folder name to a specific type of data, common to all
applications. The user would not be involved in where those files would
be stored, making this specification more similar to the MIME type
specification.

For exemple, for user's actions history, the file would be named
'$application/history'. If the application has several type of history
files (GUI Actions, CLI commands, per tab history), there would be a
'$application/history' folder where the developer would be free to call
his files the way he want.


As there are a lot of different types of data, strictly following this
kind of specification would both be a pain for devellopers (they would
have to know the different types of data) and a relief (they wouldn't
have to think about the name they should give to a specific
file/subfolder). But with support from the community, and with the
community pushing the specification (as it was done with XDG_BASE_DIR,
with people creating issues), it would be a really useful specification.

---

From the types of data you wrote (and some I thought of), we could have:

  - history: for user actions only

  - log: traces of what the program did

  - libraries: for libraries installed locally (this would also be
interesting for package managers like pip, npm, ...)

  - bin: for folders that should automatically be added the PATH

  - user_generated: for content generated by the user (could be
interesting to have another application automatically adding version
control on those folder =) )

    - bin: for user generated files that should be added to the PATH

  - runtime_config: for things like windows position, dynamic panel/tabs
layout, ...

I can't think of a correct name for (self-contained virtual systems (Flatpak, Wine [2], VirtualBox)).

If you can see any other type of data (except secrets, there is another thread about this, and I think they should be in another folder) please share them.

PS: This also made me think about cache data: maybe we should
differentiate cache from the network from cache generated from local
data (builds, uncompression, ...) ?




More information about the xdg mailing list