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.