The problem isn't immediately obvious, especially if you're not a Gnome hacker. C is not an object-oriented language by any definition, but that has never stopped Gnome, which is architected in that fashion. C++ - C's higher level cousin, with many object-oriented features - is the core language of Gnome's competitor, KDE, and from the outside they don't look hugely different.
However, if you allow yourself to analyse the situation somewhat, there are some differences. Although Gnome was meant to be an object technology, this has never really caught on. KDE is a different kettle of fish - the Konqueror shell is able to contain many different types of components, and KDE programs freely embed each other and communicate richly. Embedding within Gnome is rare, and communication via the ORBit system not terribly common or easy.
Is the language the reason for this? Certainly, many seem to think so. Mono - the project to implement a free software version of Microsoft's .net system (to simplify greatly ;) - has been quickly developed, but already showing substantial completeness and power (one can argue that it would be easier, as it's a copy, but then a lot of Gnome's APIs etc. are at least influenced by others to a greater or lesser extent; therefore I don't buy that argument). Applications are being put together with surprising speed (surprising even those putting them together for the first time), and it does seem that there is some power in these development tools.
Havoc Pennington's thoughts, though, seem to veer toward the use of Java as the way forward. Partially because there are decent free software implementations and libraries (note, that "Java" in this instance is the language and bytecode, not the platform), partially because it is the toy of our friend (Sun, who have contributed much to Gnome), partially because it is the enemy of our enemy (Microsoft's #1 competitor is Java, arguably), partially for any number of other reasons. Many of them begin to make sense, though.
I have never had a liking for Java. It is slow in my experience. The language is somewhat clunky, and there are no free software implementations (now talking about the platform). However, strip away some of this, and what do we have? GNU Classpath, a good set of libraries. gjc, the GNU java compiler, and both Kaffe and Jikes, free software virtual machines. AWT is a multi-platform toolkit that is usable, and there are excellent development environments (such as Eclipse).
Is now the time to re-evaluate where we stand? Is Mono destined to become another WINE - useful for porting, but never a core piece of technology? And, is the non-free shadow of Java (the platform) enough to make us not want to use Java (the language and bytecode)? Only time will tell, of course, and the developers are the ones with the say, but it is at least an interesting conundrum. C has probably outlived it's usefulness on the desktop - but where from here?
|