|
| 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. |
0 commit comments