Hi everyone,
I’m sharing an early, experimental project called TryIt.jl. Inspired by the quick workflow of tools like try-cli and/or try-rs, this package explores how we can build rich, interactive interfaces to test and play with Julia code (but also other code).
Disclaimer: This project and its companion UI libraries are at an early experimental stage, rapidly evolving, and currently unregistered. Expect breaking changes, rough edges, and exploratory code. (Note: TryIt.jl does not currently sandbox environments. It is focused on the user interface experience).
What is TryIt.jl?
Instead of just typing in a standard REPL, TryIt.jl aims to provide a more visual, interactive layer to explore APIs and test snippets. The core of this project is heavily tied to experimenting with different UI backends in Julia.
Architecture & UI Experiments
Under the hood, the project is exploring different interfaces to achieve this:
- Tachikoma.jl: Currently used to drive the terminal/TUI interactions (main branch)
- ManyUI.jl: An experimental abstraction layer (explored in dedicated branches) designed to bridge multiple UI backends (TUI, Web, etc.) from a single codebase. Documentation and concepts for this architecture are available on the ManyUI documentation site.
Links & Code
- Organization: github.com/JuliaTryIt
- TryIt.jl repository: github.com/JuliaTryIt/TryIt.jl
- TryIt.jl docs: juliatryit.github.io/TryIt.jl/dev/
- ManyUI docs: juliatryit.github.io/ManyUIDoc.jl/dev
- ManyUI dev superproject: JuliaTryIt/ManyUIDev.jl
The Vision: ManyUI Ecosystem & Python Inspirations
TryIt.jl also serves as a primary testbed for a much broader initiative: the ManyUI ecosystem. Inspired by the ergonomics and design philosophy of Python’s Textual framework and its broader ecosystem (such as Rich), ManyUI aims to provide a unified abstraction for UI development in Julia. The ultimate goal is to write the interface logic once and project it seamlessly across multiple backends, whether that is a rich Terminal UI (TUI), a Web interface (either true native web or terminal in web interface), or a native desktop application (through CImGui). Building robust multi-backend UI projections is a complex challenge, and TryIt.jl is the first practical playground to refine this architecture.
Trying it out
Since the packages are unregistered, you can test it directly via Git:
using Pkg
Pkg.add(url="https://github.com/JuliaTryIt/TryIt.jl")
I am primarily looking for feedback on the UI abstractions (Tachikoma/ManyUI integration) and ideas on how to improve this interactive workflow. Thoughts and PRs are very welcome via GitHub issues or in this thread!
