Programming Languages Popularity In GnomeFiles.org November 7th, 2007

GnomeFiles lists apps (in source & binary) created for the GNOME X11 environment and the GTK+ multi-platform toolkit. All bindings, wrappers & their apps are welcome. I got that definition from Gnomefiles website. I am a software developer. It is normal for me to curios the programming languages popularity in GnomeFiles. A long time ago, I sent email to Eugenia, the admin of GnomeFiles. I asked why not put programming language attribute in project page. With that attribute, people can know what language binding is the most popular. She answered that it is not relevant to put programming language attribute for GnomeFiles website. The GnomeFiles website is for end users not developers. At that time she told me the most popular language binding is Python to answer my curiosity.

Time passed by. I decided to find out the programming languages popularity in GnomeFiles as opportunity to practice Common Lisp. My way to find out the programming languages popularity in GnomeFiles as you can see has many flaws. I use 1333 applications rather than full numbers, 1898 applications. I am too lazy to hunt down all applications. To find out what programming language the application uses, I extract the requirement part of application web page. The requirement usually tells us about programming language they use. For example, if the requirement tells us that it depends on gtkmm library, it means it uses C++. But there are applications using C++ as programming language but not use any binding. It uses pure GTK+ toolkit. My query will put these applications as C programming language applications. There are other flaws too. But I can tolerate with these all flaws.

So here is the popularity of programming languages in GnomeFiles:
python: 21.6%
c++: 5.6%
perl: 3.68%
java: 2.1%
c#: 6.5%
ada: 0.15%
clisp: 0.22%
d: 0%
eiffel: 0.075%
erlang: 0%
euphoria: 0.15%
felix: 0%
fortran: 0%
gauche: 0%
guile: 0.22%
javascript: 0.15%
haskell: 0%
lua: 0.075%
caml: 0.45%
octave: 0%
ruby: 0.9%
pascal: 0.75%
pike: 0%
php: 0.68%
scheme: 0.075%
s-lang: 0%
smalltalk: 0%
tcl: 0.22%
tom: 0.15%
xbase: 0%
other / c: 56.26%

This is the pie chart so you can “get” the big picture:

As you can see, more than 50% people developing software with GTK+ toolkit use pure C. No need for language bindings. It is understandable because language bindings are always steps behind with pure GTK+ toolkit. The pure GTK+ toolkit is the most official way to develop application. The documentation is the most complete. There are books dedicated for programming GTK+ with pure C but not with any other language bindings.

The most popular binding is Python or PyGTK (21.6%). It is still the same situation since I sent email to Eugenia. It is understandable too. We can use GTK+ to develop proprietary software. But GTK+ has tight correlation with opensource. So let’s see our alternatives. From the GTK+ language bindings page, we can see there are four language bindings which follow the GNOME Platform Bindings schedule and guarantee API stability and time-based releases. This thing guarantees the popularity of the languages. They are Perl, Python, Java, and C++.

Perl maybe the most popular programming language in network, server, or web development area. But we are talking about desktop here. Perl is not popular option for developing desktop softwares. Yes, I am aware GTK+ is not about desktop programming only but most apps in GnomeFiles are desktop softwares.

Few years ago, Java is still not that opensource. I am aware of the opensource alternatives back at that time, like Kaffe, or GNU Java. But most of people only want to use Sun Java. Most of GTK+ softwares are opensource. Most of people developing opensource softwares using GTK+ toolkit prefer opensource programming languages. Because of this Java is not the most popular option for developing softwares using GTK+ toolkit, especially java-gnome. SWT helps quite much. But Swing hurts much Java in GTK+ world.

Okay, let’s go to C++. C++ is more popular than pure C for developing desktop softwares. No doubt about that. But in GTK+ world, C has advantage lead. It is different in KDE world which based on Qt toolkit. C++ is very popular there. At the first time, in GTK+ world, there was no language binding. People must use C. Then language bindings began to be created. But language bindings need time to be mature. People don’t want to use not-yet-mature language bindings. At the time where language bindings (including C++) have been mature, there are already many people developing GTK+ using C. GTK+ is close related to Unix world although it is cross platform. C is popular in Unix world. C is embraced in GTK+ rather than C++. Beside that people skilled with C++ most likely attracted to Qt toolkit rather than GTK+. Qt toolkit offers more advantages rather than GTK+ (including pure GTK+, wxGTK, gtkmm).

That leaves us with Python. That’s why Python is the most popular language binding in GTK+ world.

As you can see from statistics, language bindings outside the “official” GTK+ language bindings (C++, Java, Python, Perl) are not popular. They are all under 1% with ONE EXCEPTION. C# or Mono or GTK#. It is the second most popular language binding behind PyGTK or Python. It beats Java, C++, and Perl. It is understandable as well. The marketing is well done. The founder of Gnome (Gnome built by GTK+ toolkit), Miguel de Icaza embrace it. More than that, he is the man behind Mono. He is Mono project contributor. One of the most important contributor! It is opensource from the beginning although the relation of the language with Microsoft scares some people.

So what is the most popular language binding beside C# outside the “official” GTK+ language bindings? It’s my favorite programming language. It’s Ruby! I suspect the popularity Ruby on web development pushes the popularity Ruby on desktop programming.

GnomeFiles has 1898 apps registered. I use 1333 apps in this investigation. If I use the full number, 1898 apps and my search or query algorithm is improved or to be extremely, I check the application web page one by one, I doubt the percentage will be much different.

Leave a Reply