Local and networked UIs in Julia


UIs and networks for Julia.

Browser UIs

UIs in the browser via the Escher/Interact ecosystem Interact.jl is a UI/widget framework that is reasonably front-end agnostic. A web-app-style interface that can deploy to IDE, web server, or desktop electron via Bink.jl. How much tedious javascript management is required I do not know, but at least javascript UI development is well-documented.

If you really wanted to have lots of control and a proper web framework, you could use a full web framework like Genie.jl.

Reactive programming

Reactive programming is for managing state asynchronously, which turns out to be practical for UIs. Reactive.jl is widely used to manage signals in UI toolkits. It has a competitor Signals.jl, whose creator describes the differences:

Signals.jl, while offering the same functionality as Reactive, is different on some key factors

  • Dynamic: Signals are not typed, you can push an integer then float64 and then a string and it blends nicely with Julia’s Multiple Dispatch
  • Push-Pull: you can either push a value into a Signal and propagate changes along the Signal graph , or you can set a value without any propagation and only pull the necessary changes from any other signal.
  • Syntax: Syntax is somewhat simplified, square brackets to set or query a value, round brackets to pull or push a value (see documentation for more examples)

The last point is, IMO, a minus, but the second one is a plus for the engineering-type applications that I need to care about.

Traditional UI toolkits

Invoke someone else’s toolkit and have them worry about which pixel goes where. QML.jl plugs into Qt5. Gtk.jl plugs into GTK.

Immediate mode

I can plug into classic C++ immediate mode Dear Imgui via CImGui.jl.