# Design patterns to discuss: Previous private google docs that should probably also be converted and made public: Kickoff meeting notes: [link](https://docs.google.com/document/d/1EpUkIWWBuX0Z-WZfzwsP9BFSne0bl69P6P5W7MJhzgU/edit#heading=h.b30vn2mwxopg) (private gdoc) Use Cases meeting notes: [link](https://hackmd.io/QZzHNLFUSzSeiubxzCVmow) # Design Topics ## Future: - automatic re-entry on new tab - option 1: use a profile - option 2: VTE patch - option 3: toolbox --create-gnome-terminal-profile - how should people use toolbox - treat it like a pet that will be updated indefinitely - periodically save via `podman commit` - rebuild it often based on a custom user defined definition - something like `toolbox up` on a definition ## Some Things we like about original debarshiray/toolbox (current containers/toolbox) - code: - reuses some flatpak code (taking part of a bigger community) - UI: - try to keep old toolbox containers working when we release new toolbox versions - nice help screen for interactive commands - helps the user along with commands - don't like - some historical mistakes with the CLI - onerous UI if you create a differently name toolbox - CLI bash completions ## Some things we like about original cgwalters/coretoolbox code ([to be merged too](https://github.com/containers/toolbox/pull/303)) - UI: - Some points gleaned from [coretoolbox README](https://github.com/cgwalters/coretoolbox/blob/master/README.md#rationale) - support for making derived custom toolbox containers that can be rebuilt. i.e. `podman build` periodically vs `toolbox enter && dnf update -y` - inject more dynamic state at runtime - username - `HOME` path - bind mount everything from host into `/host` and symlink popular directories into their counterparts in `/host` - The above allows for the set of things exposed to be easily changed and tailored to an individuals custom use cases - In the entrypoint we call mount inside the container - users are creating their own toolbox like things, we could dynamically do useradd in the entrypoint (runtime, not buildtime) - code: - ## Parts from https://github.com/coreos/toolbox (maybe should be merged too) - UI: rhel7/support-tools (matches `oc debug node/`) - code: kubelet auth ## Other things from previous meeting: - Split runtime and dynamic state - https://github.com/cgwalters/coretoolbox/commit/f618ce69bca762f9f4bd2835d11d7aa87e3915f2 Notes: My (Ondra) branch with initial go rewrite bits of code: https://github.com/HarryMichal/toolbox/tree/rewrite-in-go