[Gtk-sharp-list] The state of GTK#

Sense Hofstede qense at ubuntu.com
Sun Mar 7 09:25:59 EST 2010


The past few weeks I've been working on getting the Mono bindings of
libappindicator[1] to work correctly. I managed to get everything work
correctly apart from making the virtual members accessible an
overridable in C#. The thing is that libappindicator provides two
(virtual) methods that provide a fall back mechanism. You can
implement your own by overriding those functions. However, I couldn't
get this to work because virtual methods aren't supported by GAPI2
which is included in GTK# 2.12.9. If everything goes well it might be
included in the GTK# 3.0 release in September. That is too late for
Lucid, obviously and therefore the libappindicator library won't have
all functionality in C# that is available in C, Python and in the near
future in Vala as well.

September 2010 is a quite far away from November 2004, which was when
VirtualMember.cs was uploaded to SVN for the first time. The long
waiting period between the introduction seems to be typical for GTK#.
Maybe you remember the session during the Ubuntu Developer Summit for
Ubuntu 9.10 Karmic. It was proposed to make Banshee the default media
player of Ubuntu and it was seriously considered[2]. Banshee is a
powerful media player and then there was a reasonable amount of
developers convinced that it was better than Rhythmbox. As you can
read on the wiki page[3] "Karmic will switch to banshee if the issues
which have been listed during the discussion are fixed before the
feature freeze, [...]".

You could say that it was GTK# that costed Banshee the position as
default media player in Ubuntu: GTK# still won't included GIO# in the
next release -- it was a requirement back then -- but most importantly
the a11y support wasn't available with the GTK# of that time. Although
it was mostly written, it wasn't released and if I read the Banshee
./configure output correctly it only will be in GTK# 2.12.10. The
other issues on the list were fixed by the Banshee developers.

It is a shame that so many features are available, needed, but not
shipped. F-Spot started to included GIO# in their source because it
still isn't provided by GTK#. Banshee has taken a few things away from
the GTK# library as well. This is not how shared libraries should
work, the whole idea behind a shared library is that the library is
provided separately from the application, not spread across different

It would be good for GTK# and the image of Mono applications on the
GNOME desktop if GTK# wouldn't be maintained as conservatively as it
is now. Maybe it should become a part of the GNOME project and move to
gnome.org, I don't know. What I do know that it is getting
increasingly harder for Mono applications to maintain their position
on the desktop. It could be that everything is fixed with the GTK# 3.0
release, but in time there will be a GTK# 4.0 release as well. Will
GTK# development for the 3.x tree die out then as well? I hope not,
because applications like Banshee, Gbrainy and Tomboy surely add
something to the desktop and they would be missed.

[1] https://launchpad.net/indicator-application
[2] https://blueprints.launchpad.net/ubuntu/+spec/desktop-karmic-default-media-player-choice
[3] https://wiki.ubuntu.com/DesktopTeam/Specs/Karmic/DefaultMediaPlayerChoice

Sense Hofstede
[ˈsɛn.sə ˈɦɔf.steːdə]

More information about the Gtk-sharp-list mailing list