Back to Index

Writing GUI apps doesn't have to be painful

Recently, I came across the article Writing GUI apps for Windows is painful which resonated with me. Just over a year ago, I was in a similar position as the author. I was just starting a new project and was looking for a GUI library with the following requirements:

The project I was starting was a reader for smart card documents (like personal identification cards). As the project was new, and the GUI would be an important part of it, I decided to remain open to solutions in different languages. Therefore, I was looking for a language and UI library combination that would give me an environment in which I could easily develop the new application (note that my new application doesn’t have big requirements from the UI library: labels, images, message boxes, and buttons are enough). Also, I wanted an environment that would be easy for others to set up. I didn’t want to lose contributors just because my library required dozens of obscure dev packages, black magic, and hours of configuration and compilation (cough, Qt, cough). These were the alternatives I explored at the time:

In the end, I took the plunge and chose Fyne. Now, one year later, with hundreds of users and dozens of contributors (half of them via mail), I can only say that it was the perfect choice. It did everything I wanted (even more), and everything I did with it was easy (compare this with requests from the cited article):

Of course, Fyne isn’t perfect. Styling abilities are far from what you get with libraries like GTK or Qt - With Fyne, you are locked into flat aesthetics. The documentation could also use improvement 1. Ironically, I think that the design of the documentation website is the worst part of it.

Will Go+Fyne cover your needs for your next GUI application? I don’t know. But I know that there are projects for which this is the perfect choice. Dare yourself to start with simple tools. You will be impressed by how long they will take you.


  1. This bothers me less and less. With Go, I’ve learned to read the code of libraries I use, reducing my dependence on documentation. This was something I almost never did before, but Go’s philosophy naturally led me to it. ↩︎