transientはEmacsのコマンドを作るためのemacs lisp。 Magit Organizationによって開発/管理されている。
以前magitのUI部分はmagit-popupというライブラリとして切り出されて開発されていた。 このライブラリは他のライブラリからも使いやすいように改良さたtransientによって置き換えられた。 現在magitのUI部分はtransientで実装されている。 magit-popupは今後は新機能の追加はせずバグフィックスのみが行われる(そのようにREADMEに記載がある)。
transientはmagit以外にもdocker.elでも使われている。 探せばもっと使われていると思う。
kubernetes-elもtransientを使っているかなと思って確認してみたが こちらはmagit-popupが使われていた。 これはしばらくしたら置き換わるかもしれない。
transientの弱点
transientを使ってコマンドを構成すると宣言的に定義できてよいが 問題が発生した場合にedebugなどでデバッグをすることが多少難しくなる。 コマンドを実行するためのS式を返す関数と 実際にコマンドを実行するS式をきちんと区別して 必要な分だけを実装されたほうが良いように思える。 便利な機能ばかり実装されいても結局使うことができないし管理コストばかり増える。 まあtransientの弱点というより一般的にいえることか。