Zen: the choices we made Why ticat Why use cli as component platform Why not use unix pipe Why the usage so weird, especially the + and - Why use tags Why so many abbrs and aliases Why commands and env key-values are in tree form Why use git repo to distribute componets Why not support async/concurrent executing