aboutsummaryrefslogtreecommitdiff
path: root/docs/decisions/0001-storage-path-default.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-04-30 07:55:28 -0500
committerCraig Jennings <c@cjennings.net>2026-04-30 07:55:28 -0500
commitb0d722d1a985326fb38e4e7fea237b9c4a2adcfd (patch)
tree47793265082155fe8ddacfc09d5990d7760de15a /docs/decisions/0001-storage-path-default.org
parent9e90517a98785c450cd13cd940bd1787a4771529 (diff)
downloadgloss-b0d722d1a985326fb38e4e7fea237b9c4a2adcfd.tar.gz
gloss-b0d722d1a985326fb38e4e7fea237b9c4a2adcfd.zip
docs: record four ADRs for gloss design decisions
The four decisions called out in the brainstorm now have their own files under docs/decisions/, each with Context / Decision / Consequences / Alternatives Considered. - 0001 — storage path default: respects org-directory if set, falls back to user-emacs-directory. - 0002 — auto-fetch on local miss: silent fall-through, network failures surface via the regular error rollup. No y/n prompt for v1. - 0003 — drill direction: every entry exports as twosided. One card per entry, both directions over time, no per-entry override. - 0004 — HTML strip strategy: libxml-parse-html-region. Plain text only, no italic/bold preservation. Online fetch disabled package-wide for the session if libxml is missing. The "Open Questions" section in the design doc is now "Decisions Recorded" with links into the ADRs.
Diffstat (limited to 'docs/decisions/0001-storage-path-default.org')
-rw-r--r--docs/decisions/0001-storage-path-default.org55
1 files changed, 55 insertions, 0 deletions
diff --git a/docs/decisions/0001-storage-path-default.org b/docs/decisions/0001-storage-path-default.org
new file mode 100644
index 0000000..539cba7
--- /dev/null
+++ b/docs/decisions/0001-storage-path-default.org
@@ -0,0 +1,55 @@
+#+TITLE: ADR-1: Storage path default
+#+DATE: 2026-04-30
+#+STATUS: Accepted
+
+* Context
+
+The glossary is a single org file. The package needs a default location
+that integrates with the user's existing org workflow when one exists,
+and falls back gracefully otherwise. The choice is visible to users via
+the =gloss-file= defcustom and to the file system as the path that gets
+auto-created on first save.
+
+* Decision
+
+Default =gloss-file= to:
+
+#+begin_src emacs-lisp
+(expand-file-name "gloss.org" (or org-directory user-emacs-directory))
+#+end_src
+
+If =org-directory= is set, the glossary lives next to the user's other
+org files. If it isn't, the glossary lives under =user-emacs-directory=
+(typically =~/.emacs.d/=).
+
+* Consequences
+
+*Positive.*
+
+- Users with an established =org-directory= get the glossary in their
+ org tree without configuration.
+- Users without =org-directory= still get a sensible default path that
+ doesn't require a directory tree to exist.
+- The path is writable on every supported platform without privilege.
+
+*Negative.*
+
+- =user-emacs-directory= isn't intended for user data — it's
+ configuration. Users who care will set =gloss-file= explicitly.
+- A user who later sets =org-directory= won't see the glossary move.
+ =gloss-file= is captured at defcustom evaluation time, not on each
+ call. This is documented in the README troubleshooting section.
+
+* Alternatives Considered
+
+*Hardcoded path* — e.g. =~/.gloss.org= or =~/gloss.org=. Rejected:
+ignores the org-directory convention; doesn't respect user
+preferences for where data lives.
+
+*XDG_DATA_HOME* — e.g. =~/.local/share/gloss/gloss.org=. Rejected:
+correct in spirit but adds a layer the user doesn't otherwise see in
+their org workflow. The whole point is "this is one of your org
+files."
+
+*Package-data dir* — e.g. inside the gloss package's install location.
+Rejected: data shouldn't live with code; survives reinstalls poorly.