Skip to content

Commit 26aa5ae

Browse files
author
Arturo R Montesinos
committed
adr: define project purpose and scope
1 parent 90bf6f1 commit 26aa5ae

File tree

2 files changed

+69
-11
lines changed

2 files changed

+69
-11
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# ADR-0001: Project Purpose and Scope
2+
3+
- Status: Accepted
4+
- Date: 2025-12-07
5+
6+
## Context
7+
8+
The `odsview-cli-python` project aims to provide a way to inspect
9+
LibreOffice Calc `.ods` spreadsheets in environments where graphical
10+
applications are impractical or unavailable, such as:
11+
12+
- SSH sessions to remote servers.
13+
- Headless or low-bandwidth environments.
14+
- Terminal-only contexts like Termux on Android.
15+
16+
Today, opening `.ods` files typically requires a full GUI office suite
17+
(e.g., LibreOffice). X11 forwarding or remote desktops are heavyweight
18+
and often fragile. There is no small, focused CLI tool that plays a
19+
similar role for `.ods` files as `less` does for text files.
20+
21+
The accompanying `docs/curation/BLUEPRINT.md` document captures an
22+
aspirational design for such a tool, but per the Software Curatorship
23+
baseline, **implemented behavior and ADRs are authoritative** once they
24+
exist.
25+
26+
## Decision
27+
28+
We define `odsview-cli-python` as:
29+
30+
> A minimal, read-only, terminal-based viewer for `.ods` spreadsheet
31+
> files, designed to run well over SSH and in constrained terminal
32+
> environments.
33+
34+
Key aspects of this decision:
35+
36+
- **Read-only**: the tool will not modify `.ods` files.
37+
- **Terminal-focused**: output is rendered as text tables suitable for
38+
standard terminals; no GUI dependencies.
39+
- **CLI-first**: interaction happens via a command-line interface
40+
(e.g., `odsview path/to/file.ods [options]`).
41+
- **Minimal dependencies**: prefer a small, reliable ODS parsing
42+
library and otherwise rely on the Python standard library unless an
43+
ADR justifies additional dependencies.
44+
- **Initial target format**: `.ods` only. Support for other formats
45+
(such as `.xlsx`) may be considered in future ADRs.
46+
47+
This ADR also establishes that the blueprint’s vision is the primary
48+
source of inspiration for future features, but **ADRs and tested
49+
behavior override the blueprint wherever there is a conflict**.
50+
51+
## Consequences
52+
53+
- Future work will be evaluated against this purpose: features that do
54+
not serve the read-only terminal viewer use case require strong
55+
justification.
56+
- Editing capabilities, GUI front-ends, or broad spreadsheet
57+
manipulation APIs are explicitly out of scope unless reintroduced by
58+
a new ADR.
59+
- The CLI contract (inputs, outputs, exit codes) will be refined in
60+
`AI_CURATOR_RECIPE.md` Appendix A and backed by tests as behavior is
61+
implemented.
62+
- Library choice for reading `.ods` files (e.g., `ezodf` or another
63+
library) will be decided and documented in a separate ADR (e.g.,
64+
ADR-0002) once implementation begins.
65+
- The ADR index in `docs/adr/README.md` must be kept up to date so that
66+
curators and contributors can quickly discover this foundational
67+
decision.

docs/adr/README.md

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
# Architecture Decision Records (ADR)
1+
# Architecture Decision Records
22

3-
This directory contains Architecture Decision Records for the
4-
`odsview-cli-python` project. ADRs capture **why** significant decisions
5-
were made, not just **what** was implemented.
6-
7-
## Index
8-
9-
> Maintained by tooling (e.g. `scripts/check_adr_index.py`).
10-
> Each entry should be updated whenever ADRs are added or statuses change.
11-
12-
- _No ADRs recorded yet._
3+
- ADR-0001: [Project Purpose And Scope](0001-project-purpose-and-scope.md)

0 commit comments

Comments
 (0)