Gio (Go cross platform GUI toolkit)

Recently listened to: Immediate mode GUIs (Go Time #128) |> Changelog

And learned about:

Gio uses a different GUI paradigm called immediate mode programming, which is popular in game development.

Overall, it looks like a fairly polished toolkit – impressive for this early stage of development. In order to be truly cross platform, the Gio project implements everything above the OpenGL layer – much like Flutter. However, in my brief tests of Flutter, I have been turned off by the complexity, and how slow it is on web targets. In the podcast, Elias also admits the web target of Gio is pretty poor due to the poor state of Go Wasm and other factors. However, the fact that it works as well as it does is still impressive.

If you open the Gio web site, make sure you click on the “run” button circled below. This button causes a Wasm version of the app to be downloaded in the web page and run.

The Gio web site is also an interesting bit of technology – appears to be a Go app which can download Gio apps at run time into a page. From https://git.sr.ht/~eliasnaur/giouiorg/tree/master/content/doc/architecture.md?view-source:

Below are a few vidoes by the Gio author. In the below demonstrations, the author targets his native computer, Android, iOS, and web targets – all with a simple build command – pretty amazing. The Gio project is a very ambitious project – seems it has a tough hill to climb with so many other Gui technologies out there and well funded/staffed projects like Flutter. However, the foundations seem sound, and sometimes the scarcity of resources require we do things differently. Often true breakthroughs come from individuals and small companies. Will be interesting to watch!