June 10, 2019

Is Linux really programmer friendly?


A common misconception about the Linux operating system is, that the with the ecosystem is everything is great, but the uninformed user is not able to see the advantage of Open Source vs closed source software. And this forces them to stay inside the Windows ecosystem and doesn't switch into an alternative.
I'd like to present a different explanation why a certain computer system is prefered and which can explain the user's decisions from the past. The main reason why the mainstream programmer is using a certain system or not is because the quality of the libraries. Quality means, the amount of library functions and well they are documented. What is the state of libraries in the Linux ecosystem? It's not that great. Compared to Windows and Apple the libraries are not great maintained and they are documented poorly. Most libraries for Linux GUI development were programmed 30 years ago and not improved since then. In contrast, Microsoft has made large effort to consolidate the existing ecosystem. The former MFC-class was replaced with the .net/c# library ecosystem which is documented perfectly. If an application programmers like to write code for this platform he won't have any problems to find information about how to draw a window or how to use the mouse cursor.
If the Linux user is programming his software in Python or C# under Linux he can take the same libraries and documentation. But these tutorials were not written for Linux users is mind, but most Python documentation was greated for Windows users. If we are searching for dedicated Linux libraries which are well documented we won't find that much. The reason is, that in the Linux ecosystem there is no need to sell the software on the market and if the Linux ecosystem loose some of the users, nobody cares. In contrast, the Microsoft dominated system is heavily depended on the users. If Microsoft won't improve it's libraries or documented them poorly he will loose all the customers.
The simple explanation why Windows has to much users on his side (especially professional users who are programmers) is because the Windows libraries are so much better. From the quality judgment we can say, that Windows library gets 97 points of 100, while Linux libraries only get 2 from 100. This is exactly the marketshare the operating system has in the market.
But what exactly is a programming library? It seems that answering this question is much harder than expected. Sometimes the libraries are located within the programming languages, this is true for the C# ecosystem. Sometimes there are located within the operating system the best example is the glibc. And sometimes they are part of the GUI framework which is true for the GTK+ library. In general, a library contains of many thousands commands (50k and more) which can be used in application programs. This predefined dictionary makes programming more easier. It allows the programmer to create a GUI application in under 100 lines of code. Without a library, the productivity is low. Somebody argue, that without a library it's not possible to program in general. This can be make clear in a synthetic benchmark, in which experts programmers should write a hello world app, but they are not allowed to use the built-in standard library of their programming language. Most programmers struggle with this challenge. If the library is not there, the well known language looks very different.