Article URL: https://github.com/hasenj/go-shirei/ Comments URL: https://news.ycombinator.com/item?id=48882562 Points: 45 # Comments: 25

Shirei is a Cross-Platform GUI framework for Go. You get to write the UI using Go, not HTML and Javascript. Truely cross-platform: the same code base produces identical looking programs for MacOS, Windows, and Linux. Also happens to be the easiest way to produce a self-contained GUI program for Linux that does not require any dependencies. ※ "Shirei" is derived from the Japanese pronunciation of "Simple Layout": シンプル・レイアウト → シレイ Experience has shown us that an immediate mode API is the only sane way to program GUI applications. Unfrotunately, there is not good library or framework that just works. Some of them require you to implement your own backend, some of them do not have a decent cross-platform story, some of them do not have proper support for non-latin text. What is it that matters for "immediate mode"? Is it that the UI renders everything every frame? No. It's that you build the UI by describing what it should look like everyframe, based only (or mostly) on the data. This is why React won: no need to maintain UI widgets yourself, no need to keep track of their states in order to update them. You just say "at this point in time, I want a button here, and I want the label on it to say so and so, and when it's clicked, I want to do this and that". You never have to answer these questions. This is the best part about React, and this is what "immediate mode" is all about. It is no good if you have an API that just lets you "draw" things but you are also responsible for maintaining the state of all the "things" that you "draw".