Announcing results of the first Go GUI Developer survey.
- Up to 15% of the Go community is working on graphical applications
- 32% of respondents picked Go because of the toolkits rather than the language itself
- Fyne appears more popular than GTK+ and Qt combined, and Gio is clearly preferred over GTK+
Nearly 600 developers responded to the survey, which we had aimed at developers using, or investigating, Go as a language for developing graphical applications. As this was a different target audience from the Go Developer survey we decided to ask if they had responded to the previous study.
According to the Go Developer Survey from 2021 around 8% of the Go developer community is working on Desktop/GUI applications. From our chart above we find that 45% of those working on GUI development did not respond to the community survey, so the real number could be as high as 15% of Go developers are working on building graphical apps!
The Go Experience
We wanted to know more about why users picked the Go language and who they interacted with in building their project. This offered us a chance to understand what our projects could be doing better to provide a great experience for developers.
Clearly a lot of developers who build graphical apps using Go were already using the language for other projects, but it is heartening to see how many chose the language because of the toolkits and libraries available. A solid 50% found that it was an easy to use language and nearly a quarter were keen to learn – this is a very strong basis and we are thankful to the language and tools teams for building such a solid project and community.
We also asked about support, there are so many places to get help that most people did manage to get their questions answered. However we see that nearly half felt they were not able to get the support they needed – something that our projects will have to work on going forward.
As Go has built-in support for building web sites and apps through a browser (HTML, template, web services and so on) it is expected that there is a lot of usage in this area. We decided to explore how many developers were using these technologies compared to native apps (compiled for a platform GUI toolkit or abstraction):
As you can see above the overwhelming majority of app development is done using some form of native toolkit. Many developers are using both native and web, but nearly 90% of the survey responses stated that they were developing using native toolkits such as Fyne, Gio, Qt. We also asked which of these toolkits had been used for app development.
Looking at the 5 most popular technologies in the graph we can see that 60% (Fyne, Gio and Shiny) were designed specifically for the Go language. It is also worth noting that Fyne and Gio are less than 5 years old but they are proving far more popular than the industry-leading Qt and GTK which have been in development for over 30 years each!
One more question that was asked to compare toolkits was to see what sorts of projects were being developed so we could compare when each of these toolkits was being chosen. The following chart shows five different areas of work and compares each toolkit usage for them.
As you can see Both Fyne and Gio are popular across the board, but used a little more for first time developers, hobbiests and developers exploring options for a new work project. This trend in is similar to the usage of GTK+, though it is used more in established Go projects. Most of the technologies were used in broadly similar amounts, though we can see that Qt is clearly appealing to existing Go development teams – possibly due to it having been around longer than all the alternatives.
Choosing GUI Technology
The last section that we covered was discussing how GUI toolkits or libraries are chosen by developers – reflecting on what matters to them and how they work. We asked respondents to rank various factors from 0 to 5 based on how important they were to the technology decision:
Whilst it is no surprise that multiple platform support was important to Go developers, we were surprised to see that usability ranked even higher. It was also interesting to see that the ability to build custom user interfaces easily was seen as more important than the CPU and memory usage of a resulting application. Overall energy efficiency (and thus battery life) was deemed least important – which may explain why web based solutions have remained popular despite requiring additional technologies and skills from standard Go development.
Lastly we asked, what might be blocking your adoption of building more graphical applications with Go? Again this was a multiple choice question – an “Other” option was available but there were not many standard replies outside the given options.
What we can tell from these data is that runtime dependencies and the underlying use of C remain concerns for many Go developers. This may be a factor in why Qt and GTK+ are not used as much as Go native toolkits such as Fyne, Gio and Shiny. Additionally the size of files and difficulty with distribution both ranked higher than any trouble obtaining support. This seems to indicate that even though many developers (noted earlier) had trouble finding support, they managed to complete their apps regardless.
Thank you to everyone who participated in this survey, we hope the data has been insightful and that you will consider using some of the technologies highlighted above if you are not already working with them. Happy Go-ing :).