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, ...) ? _______________________________________________ xdg mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/xdg
