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:
- 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
- No autogenerated code: the UI should be configurable from software but should not require to autogenerate source code
- Options to use WYSIWYG-Designer, but this shouldn’t be a requirement
- Framework should not try to replace the standard library
- The library should provide a clean and well thought-out interface, following common best-practices
- 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.