In a talk about the failed LiMux project in the city of Munich a small discussion was held at the end. It was interesting to hear, that even Linux in Munich has failed, there is until now a general interest in the topics Opensource and Desktop-Linux. The number one problem of the developers was, that under Linux no standards are existing. That is remarkable, because the GUI development under Android and under MS-Windows has clear Standards. So what could be the answer to this challenge?
At first, a base standard for the operating system itself is out and working. This is called RHEL Workstation edition. This operating system costs around 400 US$ per year and includes the Opensource software, continuous updates of all parts and support from Red Hat. After booting up RHEL the same desktop is visible like in Fedora Linux. It consists of Gnome and that’s it. But from the perspective of daily usage, a vanilla Gnome GUI is not what the user want. He can start LibreOffice, and surf in the Internet, but most users in business and public government have so called special applications. That are handmade GUI applications which are normally written for MS-Windows. The apps consisting of many menus, and often a network connection to a remote database it integrated. Sometime the programs are standardized, and sometimes they are hand-tailored. The number one problem of the developers seems how to migrate these applications to Linux.
From the programming language the best opportunity for doing so is C++, which can be compiled with GCC and works quite well under Linux. But on top of C++ it is unclear, how exactly a GUI app has to be programmed. I personally use SFML for game programming, but SFML has no option for creating full blown desktop apps. A menu function is missing. The alternative are toolkits like GTK+ and KDE. GTK+ runs under Gnome, and KDE under KDE. But, and here is the weak point of Linux. There is not standard. There are at least 20 possibilities to create such GUI applications.
If we are assuming, that RHEL is the standard operating system, and that Gnome is the standard Desktop, than the answer is called gtkmm. Which is a C++ interface for programming GUI applications. But, I’m not sure how to program an app with that technology. It seems possible, but there is a lack of good examples. Today, i can’t answer the question if wxwidget, gtkmm or Qt is the better framework under Linux. But it seems, that this question is the bottleneck why Linux is not used often as a desktop application. Even a developer is highly motivated to program under Linux, and is able to adept to new technologies he is not sure, which GUI interface is right. That the people think in general positive about Linux can be shown on the number of apps available for the Android system. If a clear best-practice method exists, for programming an app, it will be used by the community.
According to the number of published books, GTK+ is not very widespread in Linux GUI development. It is the historical older framework which is mainly programmed in C. GTK+ stands for Gimp Toolkit and has only the GUI interface itself onboard, but no extensions for threads or network programming. In contrast, the Qt toolkit has a much higher number of books available, which are explaining of how to use it. On the other hand it is important to know, that the RHEL workstation comes per default with the Gnome Environment but not the KDE, which is optional.
What can we say additional? I mentioned above, that only C++ is a good programming language, especially for GUI programming. Programming a full blown app in C, Python or Java is not a good idea, and nobody in the MS-Windows world is doing so. So we can say, that a Linux app consists of the following ingredients:
• RHEL Workstation as platform
• C++ as programming language
• Gnome or KDE
• GTK+ or QT or wxwidget or another framework
So the question which has to be answered is, what of the following technologies is well suited for app-development: Gnome, KDE, GTK+, QT, wxwidget. The weakness of the Linux ecosystem is, that this question is not answered today. And perhaps this is the number one reason, why potential app-developer do not use Linux on a desktop.
Let us compare direct the Qt framework with potential alternative. In a discussion thread somebody has mentioned, that Qt is used by 800k developers worldwide and runs under all major operating systems. According to the numbers of published books and youtube-tutorial videos this high marketshare seems legitimate. It seems, that Qt is apart from MS-Windows the most important GUI framework. In contrast, the GTK+ framework is even in the Linux community not very often used. Most games are programmed with SFML, and Kdenlive (a video editor) runs for example under KDE.
Qt seems the best
A first comparison of the different frameworks has shown, that Qt is the best option for programming a GUI app under Linux. It has today many problems, for example some bugs, and it needs additional libraries but it also has many advantages:
• the same program can be compiled for running under Linux, Windows, Mac and Android
• Qt comes with extra feature for network and database support
• lots of documentation available
• nearly one million developer are using it, most of them not in the Linux community itself
So in my opinion it is a good bet, the use RHEL Workstation plus C++ plus Qt for developing opensource applications under Linux.
The normal debate about “Linux on the desktop” works with the end-user in mind. The question is, if the ordinary user like the Linux system or if he prefers Windows because it is easier to use. I think, the enduser is not important. Instead the developer should be focussed. Let us investigate why Android is successful. It is not, because the enduser like the environment, it is more that it is very easy to program an app in Android. So the number of people is high who can with minimal effort create such apps and pushing them to the customer. This brings the development forward.
I think, Linux on the desktop will be only a success, if the developer likes the environment. In my opinion, Qt is the key in the workflow. For the enduser, the Qt framework is not important. Because he is not interested in programming something, nor he is interested if qt or gtk+ is the better framework. But for the developer qt is important, because it allows him to create programs for Linux. And this is the real bottleneck. Only if programmers are able to program for a platform, they will bring the platform forward. Before the enduser can install a program with the package manager, somebody must first write the C++ code. And if the developers doesn’t know how to develop a GUI in Linux, they will not create such apps.
What we need for Linux is a similar community driven development like for the android market. A huge amount of well programmed and not so well program GUI apps, from different programmers in the world who wants to bring their software on the desktop. The question is not, how to contribute to existing softwareprojects like Apache or GIMP, the question is how to write from scratch a new app, which is doing something and looks snappy.
How many programs are existing today for the MS-Windows desktop is simple: 500k apps, https://venturebeat.com/2016/03/30/hey-microsoft-how-many-apps-are-in-the-windows-store/ If we compare this with the number of apps in the Fedora software manager, it is much more. In the software manager of Linux only a small number of apps are available. Perhaps 1000 or less. Most of the programs are dedicated for server usage and are coming without a GUI.