We are excited to finally announce the beta version of the GoGi cross-platform 
graphical interface toolkit (a preliminary announcement was made back in May), 
and the Gide IDE application written in it:

* https://github.com/goki/gi
* https://github.com/goki/gide

Given the recent discussion about the need for a pure Go GUI framework, anyone 
interested in that should take a serious look at this.  It is now fully 
functional and we are using it daily.  There are plenty of good examples in 
https://github.com/goki/gi/examples to demonstrate how it works and what it can 
do, but the best example is the Gide IDE framework, which is now fully usable 
as an editor for any kind of text editing need (and is what we’re now using for 
all further development), but is still missing e.g., an integrated debugger and 
various other planned features.

At this point, nobody can complain that there isn’t a full-featured, fully 
native cross-platform GUI framework written ENTIRELY in Go!  GoGi uses a 
heavily modified version of the Shiny backend drivers, and the Linux and 
Windows codebase is *pure* Go.  MacOS requires a minimal, single Objective-C 
file for the Cocoa hooks (compiled with cgo), but otherwise everything else is 
entirely in Go.  I’m pretty sure at this point that this is the only 
full-featured GUI framework that is entirely Go-native, without depending on 
some other C-based toolkit.

I have been a long-time user of Qt, and my entirely biased opinion is that GoGi 
is now competitive with it, and it compiles in seconds instead of hours!  
Anyone with an existing Qt-based app should be able to port to GoGi relatively 
easily, although we certainly didn’t constrain ourselves to anything like full 
API compatibility — we took full advantage of native Go design etc, and it 
should hopefully feel very natural to Go users.

There is lots more discussion of the design etc on the Wiki pages 
(https://github.com/goki/gi/wiki).

It is great that there are now multiple GUI efforts — that seems like a sign of 
a healthy ecosystem.  If others are interested in taking advantage of our mods 
to the Shiny backend drivers, that should be something that could be used for 
any kind of GUI framework, and ideally it would be great to not duplicate 
efforts on that front, as it is certainly the biggest PITA in the whole 
enterprise.  I really didn’t want to have to learn that much about Objective C, 
the Windows API, or the X11 xgb framework, all of which seem thoroughly 
horrible in comparison to Go :)  We would welcome any input / PR’s etc that 
would make this code work for others, and hopefully get some help maintaining 
and expanding things going forward...

Vis-a-vis the points Ian made about the incentives for making this kind of GUI: 
our approach, like in Shiny, was to have as minimal of OS-specific dependency 
as possible, and really just push bitmaps out and get UI events in. So this 
means that indeed everything will look identical across platforms, and to my 
eye it is certainly above-threshold in appearance for most users, and 
generic-enough that it probably your average user wouldn’t know or care what 
kind of framework it was written in.  As has been noted, the browser has become 
the app for so many use-cases that it probably isn’t that big of a deal to have 
a “native” GUI anymore.

And our goals and incentives are entirely non-comercial.  I am a neuroscientist 
who depends on interactive GUI frameworks for brain modeling (and for teaching 
this material), and obviously someone who just loves programming a bit more 
than is probably healthy — and John Rohrlich is a senior researcher in my lab 
with a similar profile.  So basically we don’t care about any of the commercial 
incentives, and have just become too frustrated with the state of C++ and Qt to 
continue down our previous path.  And we were due for a major reboot in our 
overall approach.  Also, frankly, this thing was partly therapy for the 
relatively horrible state of the world, and wanting to create the kind of 
beauty, elegance and perfection that can only exist in software :)

Go is such an amazing, elegant language, that it inspired the desire to create 
a GUI framework to match!  You can judge for yourselves if we got anywhere 
close, and everyone’s tastes and goals are different, but anyway hopefully some 
others will be able to take advantage of all this work, and we are very open to 
any further input, contributions, etc.  We certainly took advantage of lots of 
great work by others, particularly Nigel Tao’s great efforts on Shiny, image, 
and font rendering libraries; Steve Wiley’s rasterx package for SVG-based 
rendering, Michael Fogleman’s gg rendering library, and Alec Thomas’ chroma 
syntax highlighter.

Cheers,
- Randy

- Randy

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to