29 Sep 2019

On GUI Frameworks

This is a rant. In 1984 Apple released the Macintosh, the first widely available computer that featured a graphical user interface [1], this was 35 years ago. 35 years in which developers had the opportunity to implement GUI-Frameworks and Libraries, which will make it easy to develop applications with GUIs. And here we are, it is 2019, and this is still not the case.

At first i want to clarify some points and lay my criteria for a good GUI framework out. I primarily develop applications using C++, thus my focus will be on the C++ ecosystem, nevertheless this applies for other languages as well. My criteria for a usable framework are:

  1. Easy to integrate with my build process: i want to use the build system of my choice to build my project, i do not want to be required to use a specific build system
  2. No autogenerated code: the UI should be configurable from software but should not require to autogenerate source code
  3. Options to use WYSIWYG-Designer, but this shouldn’t be a requirement
  4. Framework should not try to replace the standard library
  5. The library should provide a clean and well thought-out interface, following common best-practices
  6. Cross-Platform (at least Linux, Mac-OS and Windows even better if mobile platforms are supported as well)

Frameworks

This is by no means a complete list of GUI-Frameworks, if there is a framework that is not on the list but does fullfill all criteria listed above i would be happy to hear from you.

Framework Pros Cons
Qt 3;6 1;2;4;5
GTK 1;2;3;5 (4);6
wxWidgets 1;2;3;4;6 5
.NET 3;4;5 1;2;6
HTML + CSS 1;2;4;5;6 3
Android (native) 1;3;4;5 2;6
JavaFX 2;3;4;6 1;5

This list shows that there is still no framework which fullfills all of the criteria. And even worse, this problem doesn’t seem to be of high priority for most people.