Skip to content

High-Level Priorities #12

@samidalouche

Description

@samidalouche
mindmap
  root((Developer Experience))
    Automate reference documentation
    Extract Iglootools Common Practices
      
      
Loading
mindmap
  root((User Experience))
    Documentation
    Features
      Cryptsetup Assistance
      Additional Sources and Destinations
      Reporting
      Reminders
      Performance
      Better CLI
   

Loading

MVP

Build

  • asciicinema: CI build, credentials, do we want to upload every demo, etc?

Fixes

  • Sunc results: snapshots: display remote backups with ssh server:prefix
  • prune bugs: nothing displayed in table

QA

  • Recreate my original ssb config and make sure it all works out, with locations
  • Explore real-world complex SSH examples with hosts defined inside SSH config, bastions, ssh agent forwarding, etc, and make sure the whole thing makes sense
  • Review formatting logic in details. Do we display the right hosts with multiple endpoints? Do we display all the information we need? etc
  • --private, --public, --location

Code Review

  • Ability to simplify check returns?
    • not necessarily to distinguish source / destination problems, just need to identify which volume
    • no need to perform the same checks for each sync
    • does troubleshoot per sync make sense? I think so...

Roll out

  • Merge branch
  • Test PyPI + PyPI publishing
  • Test publishers + prod publishers
  • Test environment + prod environment

User Experience

Documentation

  • Demo: https://asciinema.org
  • Tutorials
  • How-to Guides
  • Understanding: polish concepts / architecture
  • demo terminal size too small? too many things displayed?

Cryptsetup Assistance

  • troubleshoot command: also provide instructions to help setting up encrypted volumes with cryptsetup, and maybe even trigger mounts using systemd-run --pipe --wait systemctl startsystemd-cryptsetup@securedata.service . encrypted config on destinations to trigger check for encryption? Check fnox?
  • The tool could automatically mount and unmount these volumes, and support for storing encryption keys in the client OS keyring (python keyring lib) is planned.

Reminders

  • Backup event log with run id (stored in destination, cached in workstation).
  • Store run id in snapshot name or metadata file?
  • Config: desired frequency
  • Locking system
  • History: Show backup logs and stats (can parse stats from rsync). Full audit log.
  • Event Log: RocksDB? SurrealDB? other rust DBs?
  • user launchd + systemd scripts to schedule

Reporting

  • Status / Backup / Destinations stats: Number of snapshots, Number of files, File size, Last snapshot date ...
    • Make consistent with prune command

Additional Sources & Destinations

  • Git Backup support
    • Github API support to automatically check out all repos?
  • Orchestration using other tools (Borg, etc)
  • gmvault, google contacts, bitwarden vault, etc
  • Support for APFS snapshots on Mac OS X (may require sudo)
  • Additional retention policies, like keeping one old backup per month/year/etc
  • Investigate supporting bidirectional syncs using unison?

Performance

  • Parallel execution of different non-dependent syncs?

Better CLI

  • Consider using Textual for the demo

Developer Experience

  • Global iglootools conventions / practices
    • mise .venv config + poetry config virtualenvs.in-project true => conventions?
    • release + publish workflow
    • Dev Environment
    • General Testing Strategy: unit + integration + demo/testcli
      • demo/testcli/testapp: provides a way to visualize all the messages, components, etc with fake data
      • provides a way to set up a test environment from scratch
  • Automatically generate reference data
    • config syntax (from pydantic models)
      • (erdantic, sphinx-pydantic, json-schema-for-humans, docdantic, dumping the JSON schema directly, jsonschema-markdown...)
    • list of commands and arguments (from cli)
    • Generate ascii demo gif from CI
  • Faster tests
    • Compress the e2e tests into test_chain, with test_chain explicitly testing all the corner cases of the other tests

Limitations

  • Cannot currently have a remote -> remote sync targeting the same server, with one volume using a bastion and the other directly targetting the server. Is that a problem?
  • bash 3 generation (for Mac OS X compatibility) vs Bash 4 support

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions