User:Suzanne.soy/Data storage: RFC

From FreeCAD Documentation
Revision as of 07:37, 3 February 2021 by Suzanne.soy (talk | contribs) (WIP, saving to avoid loosing everyting in a browser crash…)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • FreeCAD should honor the [ XDG https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
    • $XDG_CONFIG_HOME for configuration files, i.e. most of .FreeCAD
    • $XDG_CACHE_HOME for any data that can be deleted and regenerated offline, and caches of things which normally require network access at the moment when they are browsed, so most likely .FreeCAD/webdatacache/ and ~/.FreeCAD/AddonManager/Images/
    • $XDG_DATA_HOME for fonts, icons etc. which are usable by multiple applications. It is the equivalent of /usr/local/share ($XDG_DATA_HOME is ~/.local/share by default)
      • There are some recommendations about other directories namely …/lib/ (portable libraries) …/lib/<some-arch-id> (arch-specific libraries) and …/bin/ (executable libraries) A few tools (1, 2) use the directories other than share.
      • $XDG_DATA_DIRS defaults to /usr/local/share:/usr/share
      • It is unclear what the difference between share and lib is:
        • This page on tldp.org says that plug-ins live in /usr/lib/,
        • this page on tldp.org says that "The "share" word is used because what is under /usr/share is platform independent, and can be shared among several machines across a network filesystem",
        • this page at freedesktop.org says that ~/.local/lib is for "Static, private vendor data that is compatible with all architectures" and that ~/.local/share is for "Resources shared between multiple packages, such as fonts or artwork.".
      • The directories other than share are not customizable using env vars.
      • Macros and mods (currently in ~/.FreeCAD/Macro and ~/.FreeCAD/Mod), when they are installed by the Addon manager, should be in $XDG_DATA_HOME/share or in $XDG_DATA_HOME/lib.
      • Which one to pick depends on whether we consider these "plug-ins" usable by other tools or whether they are private (which could likely be understood as "FreeCAD-specific"). Branded versions of FreeCAD can share installed macros and mods; and external applications could invoke FreeCAD macros directly (see e.g. how the XternalApps Workbench invokes Inkscape extensions from within FreeCAD, the reverse would also make sense). Also, since ~/.local/share is not customizable, it seems less useful to move things there (maybe it is a recent

$XDG_RUNTIME_DIR

$XDG_DATA_DIRS

https://wiki.debian.org/XDGBaseDirectorySpecification#state

/usr/share/freecad/mod

, ~/.local/share/freecad/freecad/freecad.qhc

    • $XDG_DOCUMENTS_DIR as the default location when opening/saving files on a fresh installation (probably already the case, I didn't pay attention; the $PWD is probably an okay choice especially when started from the command-line)