aman/docs/persona-and-distribution.md
Thales Maciel a3368056ff
Some checks are pending
ci / test-and-build (push) Waiting to run
Ship the portable X11 bundle lifecycle
Implement milestone 2 around a portable X11 release bundle instead of\nkeeping distro packages as the only end-user path.\n\nAdd make/package scripts plus a portable installer helper that builds the\ntarball, creates a user-scoped venv install, manages the user service, handles\nupgrade rollback, and supports uninstall with optional purge.\n\nFlip the end-user docs to the portable bundle, add a dedicated install guide\nand validation matrix, and leave the roadmap milestone open only for the\nremaining manual distro validation evidence.\n\nValidation: python3 -m py_compile src/*.py packaging/portable/portable_installer.py tests/test_portable_bundle.py; PYTHONPATH=src python3 -m unittest tests.test_portable_bundle; PYTHONPATH=src python3 -m unittest tests.test_aman_cli tests.test_diagnostics tests.test_portable_bundle; PYTHONPATH=src python3 -m unittest discover -s tests -p 'test_*.py'
2026-03-12 15:01:26 -03:00

3.5 KiB

Aman Target Persona and Distribution Strategy

Primary Persona: Desktop Professional

This is the canonical Aman user.

  • Uses Linux desktop daily on X11, across mainstream distros.
  • Wants fast dictation and rewriting without learning Python tooling.
  • Prefers GUI setup and tray usage over CLI.
  • Expects a simple end-user install plus a normal background service lifecycle.

Design implications:

  • End-user install path must not require uv.
  • Runtime defaults should work with minimal input.
  • Supported daily use should be a systemd --user service.
  • Foreground aman run should remain available for setup, support, and debugging.
  • Diagnostics should be part of the user workflow, not only developer tooling.
  • Documentation should distinguish current release channels from the long-term GA contract.

Secondary Persona: Power User

  • Comfortable with CLI, package internals, and model customization.
  • Uses advanced config, external APIs, or custom models.
  • Can run diagnostics and debug logs when needed.

Design implications:

  • Keep Make and Python workflows available.
  • Keep explicit expert-mode knobs in settings and config.
  • Keep docs for development separate from standard install docs.

Current Release Channels

The current release channels are:

  1. Current canonical end-user channel: portable X11 bundle (aman-x11-linux-<version>.tar.gz).
  2. Secondary packaged channel: Debian package (.deb) for Ubuntu/Debian users.
  3. Secondary maintainer channel: Arch package inputs (PKGBUILD + source tarball).
  4. Developer: wheel and sdist from python -m build.

GA Target Support Contract

For X11 GA, Aman supports:

  • X11 desktop sessions only.
  • System CPython 3.10, 3.11, or 3.12 for the portable installer.
  • Runtime dependencies installed from the distro package manager.
  • systemd --user as the supported daily-use path.
  • aman run as the foreground setup, support, and debugging path.
  • Representative validation across Debian/Ubuntu, Arch, Fedora, and openSUSE.
  • The recovery sequence aman doctor -> aman self-check -> journalctl --user -u aman -> aman run --verbose.

"Any distro" means mainstream distros that satisfy these assumptions. It does not mean native-package parity or exhaustive certification for every Linux variant.

Canonical end-user lifecycle

  • Install: extract the portable bundle and run ./install.sh.
  • Update: extract the newer portable bundle and run its ./install.sh.
  • Uninstall: run ~/.local/share/aman/current/uninstall.sh.
  • Purge uninstall: run ~/.local/share/aman/current/uninstall.sh --purge.
  • Recovery: aman doctor -> aman self-check -> journalctl --user -u aman -> aman run --verbose.

Out of Scope for X11 GA

  • Wayland production support.
  • Flatpak/snap-first distribution.
  • Cross-platform desktop installers outside Linux.
  • Native-package parity across every distro.

Release and Support Policy

  • App versioning follows SemVer (0.y.z until API/UX stabilizes).
  • Config schema versioning is independent (config_version in config).
  • Docs must always separate:
    • Current release channels
    • GA target support contract
    • Developer setup paths
  • The public support contract must always identify:
    • Supported environment assumptions
    • Daily-use service mode versus manual foreground mode
    • Canonical recovery sequence
    • Representative validation families
  • GA means the support contract, validation evidence, and release surface are consistent. It does not require a native package for every distro.