KDE was once again the top choice in desktops, beating GNOME for the second survey in a row, although usage of KDE and GNOME are both increasing.

KDevelop and Qt Designer are also a huge hit with developers, with Eclipse being the only development tool that was preferred above them (well, possibly netbeans too, depending on how you look at the data).

But, as I explore in next week's Computerworld column, I was disappointed to see that free beer trumps free speech among developers. I won't go into details, because I shouldn't scoop my own column, but suffice it to say that it all boils down to the same reason Sun chose GNOME, why the available SWT is based on GTK rather than Qt (yes, I know there's an unavailable Qt-SWT), and so on.

Java Server, Java Enterprise, Java Desktop... Of course Sun wants to have a coherent branding strategy. Does that mean they will be pushing GNOME as a development platform? Unlikely, they already have their own. Does it mean they'll be pushing GNOME as their enterprise desktop of choice? Absolutely. Are these goals in opposition? Not as much as you'd think, and they can actually be fairly cooperative goals.

The C/C++ argument was absolutely sensible for Sun. It may not make sense to you, but it did for them. Integrating GTK+ and KDE is pretty much a fool's errand, because no one's going to ship frankensteinian hacks such as those anyway. It's a fun experiment for random hackers, but all that we've seen so far are essentially unshippable.

Another big issue was that the C++ ABI still isn't stable across compilers or even different versions of the same compiler. All of Sun's standard libraries are built with their compiler, but since the cost is rather high many users use GCC.

This is all fine and well with C since the C ABI has been fixed for many moons, but mixing C++ libraries from different compilers causes major problems.

Yes. Completely bogus. I just made those up while I was high on special brownies!

Yesh. This information came out in 2000, back when GNOME was pre-2.0, and Eazel was still in business. Please read the relevent press-releases from the period. The LGPL was never mentioned at the time.

And the comment that "GNOME is just acting as a shell" is *completely* off-base. Its well known that the "Java" in "Java Desktop System" is nearly absent. The underlying desktop is GNOME, nearly all the programs are GNOME programs, and the integration efforts (Java GTK+ theme, OpenOffice GTK+ framework) are being done to integrate into GNOME.

Saying that "Sun developers more familiar with C" is complete bullshit when you consider that not only is Sun the inventor of Java but that GTK C is an aesthetically highly-offensive usage of C that completely obliterates the "C++ is more complex" argument.

Sun developers are no dumbasses and if they can learn GTK C, they can learn Qt C++ and be several times more effective. The reason is just complete bullshit.

> Its well known that the "Java" in "Java Desktop System"

You don't get it. Sun named it Java Desktop System for a reason. To distance themselves from the GNOME platform and promote the Java platform. Yes, it's well-known to *you*. This is not the point. The point is that Java is the supported and recommended platform for 3rd party developers. NOT GNOME. Sun themselves only used GNOME because they were unable to deploy a real Java Desktop System.

> Saying that "Sun developers more familiar with C" is complete bullshit when you consider that not only is Sun the inventor of Java but that GTK C is an aesthetically highly-offensive usage of C that completely obliterates the "C++ is more complex" argument.

It's not about the argument; but that's what Sun's reasoning was; however flawed it was.

> Sun the inventor of Java but that GTK C is an aesthetically highly-offensive usage of C that completely obliterates the "C++ is more complex" argument.

A) The people working in the Java group are not the same people, with the same type of skills, that are working in the OS group. Those people were used to working on CDE. Its a very reasonable to expect GNOME, because of its C basis, to be an easier transition for them.

B) KDE wouldn't compile on Sun compilers until recently. Since GCC doesn't share the same ABI, Sun's Forte C++ development tools couldn't be used to develop KDE applications either.

C) Sun might have named it Java Desktop System, but that's just marketing. They are not trying to distance themselves from GNOME. Just look at Sun's JDS page:http://wwws.sun.com/software/javadesktopsystem/index.html
GNOME is mentioned numerous times, usually with top-billing. GNOME-based applications and GNOME-integrated applications are mentioned far more often than Java ones. The only references to "Java" in the main "features and benefits" page is one near the bottom about the "Java media Player." Then look at Sun's GNOME page:http://wwws.sun.com/software/star/gnome/faq/generalfaq.html#4q0
And look at how much Sun play's up GNOME accessibility support, use of CORBA, etc.

I think you're just plain paranoid, going on about their "dirty little secret."

A) If Sun's developers can learn GTK C but can't cope with Qt C++, they should be fired for being worthless dumbasses. Any developer worth his salt should be able to pick up a new language.

B) Please, don't make me laugh. So KDE didn't compile on Sun's compilers? FIX IT. Chances are this is a near trivial issue compared to everything else. For one, I'm sure Qt already compiled under Sun Forte and for two, Sun's non-dumbass developers could have easily jumped in and help deal with whatever issue prevented compilation.

I really think you don't have an understanding of the scope of these so-called issues you bring up in A and B. Any developer worth his salt should be able to deal with them, especially with the backing of a company as serious as Sun.

C) Exactly proves my point. "It's also the only environment with fully integrated Java technology, making this "out-of-the-box" desktop ready to run thousands of Java technology-based applications with a consistent look and feel."

"Java technology plays a very important role in the Java Desktop System - the Java Virtual Machine is integrated, the Mozilla browser is Java-aware, Java is the preferred development environment, etc. To reinforce this, we have selected the name Sun Java Desktop System."

Notice: Java is THE PREFERRED DEVELOPMENT ENVIRONMENT. Look, it has nothing to do with C being "easy" anymore.

They are using GNOME as a shell but promoting the Java platform instead to 3rd parties. This is not paranoia, this is common sense.

Usually, the training time associated with a language shift is about 6 months until the productivity is recovered. After all, you have to learn a whole new standard library, a whole new set of APIs, and so on.

If you switch 100 programmers, that's 50 programmer-years worth how much? 50*35K on cheapy programmers (at Sun they are more expensive). That's just sallaries, for a company you have to double that at least. So, let's say 3.5 million dollars.

And that's for switching 100 guys from C to C++. Sun probably switched many more.

6 months is absurd. I don't believe that for a minute. For a start the main reason for switching languages is to realise a productivity gain. Using a better language than C, you would regain your C-level productivity very quickly. But the main problem I have with your assertion is that people would *not* have to relearn a whole new standard library or new set of APIs:

1) Once you understand the concepts, switching to another language or library that does the same thing is fast.

2) No one holds a whole API in their head, let alone a whole standard library. During projects and between projects you are always learning and relearning the APIs and libraries that you need at the time for that project.

3) A lot of libraries are the available from multiple languages. You might not even have to switch libraries.

Well, I am not the kind that tells people what they should believe in. Please don't believe it at all, if it makes you happier.

I have, however, switched main development languages three times in my life, and 6 months is the time it takes to get confident, and, assuming the language is actually better, reach what I could do before.

Sure, I can start coding in a new procedural or OO language in an afternoon. But productively? Months.

1) Sure. Except the concepts are not the same, unless you switch between two very similar languages. Suppose you switch from C++ to Java, which *are* similar.

Now, you are designing a class hierarchy for your app. On C++ you may use multiple inheritance, now you cant. Now you use interfaces. The design process is completely different.

And the implementation, if you want to write "real Java" instead of "c++like java" is going to be very different as well.

2) I do. So forget it. I have about 50% of the Qt API in my head (there are pieces I don't ever use, of course, those I have to lookup). I have the C string functions, the C++ STL. And I am not that much of a programmer. So, "noone" is wrong. Maybe *you* don't, though ;-)

3) Sure. But often when you switch, you switch whole. And the languages nowadays (except C) have a base library as part of it. After all, if you gonna use the same API, you are lessening the impact of the new language's power.

Which guy? I'd like hear about what you've done and why you choose to do it like that. As the other poster pointed out, there are plenty of experienced people out there writing C in Python for example. Years of experience are often not a good guide.

I would argue that "years experience" and skill are not actually that closely related. If want to get better at programming you really need to work at it and be conscious of what you are doing, what works, what doesn't, and most all, read up about better programming/techniques.

Reguardding APIs. When I meet a new API I usually read through it all, get a grasp of how it is structured and what is available. But when I'm at the keyboard I usually need to look up most methods except for the most common ones which end up in the grey matter. Actually that is what I like about Python the most. It is much easier to remember.

Only if you come from C... I'm fairly sure that I'm still coding Java in C++, and trust me, it does hurt... And I've done Pascal in Visual Basic, Sinclair Basic in Pascal, Pascal in SNOBOL, Visual Basic in Python, Python in Java and Python in Jython (but that's not so bad).

"6 months is absurd. I don't believe that for a minute. For a start the main reason for switching languages is to realise a productivity gain. Using a better language than C, you would regain your C-level productivity very quickly. But the main problem I have with your assertion is that people would *not* have to relearn a whole new standard library or new set of APIs:"

I have heard that arguement many times and I have to call it bull. I have seen people that "know" dozens of languages and they write c in all of them. They just learned the syntax of the new language and wrote it the same way they used to. They did not really learn the new language at all. I see that in python fairly often where people write python in a c style and then bitch that it is so slow. Every language works differently and has different capabilities and it takes months to really learn a lanugage and years to master it. I have worked on other peoples python code a fair number of times and often I can get it to run 100x faster then their version and my code ends up being shorter and simpler.

Also I disagree with point 2. I hold a large ammount of the python standard library and most of the zope api and other libraries that I use. I think it is needed in order to be able to do a good job. If you are not really familiar with a language's features then you tend to reimplement them in your own code which is a waste of your time, your companies time, and it is often far slower and more buggy.

Sorry but the license issue for Sun has been blown up my many people, and is total and utter rubbish. It was probably something that came up when Ximian did some deals with Sun.

Looking at the technologies Sun uses, mostly C and the fact that Gnome is based on CORBA, something that fits well with Java, it was a logical choice for Sun. A lot of people in Sun think they made the wrong choice, some that they made the right choice.

The license issue is rubbish because big companies like Sun license software from each other all the time, and with KDE they could still develop totally free software for free. You might as well ask why IBM licensed Java from Sun. Sun totally controlling Java and demanding huge licensing fees was obviously a big concern for IBM.

Sun seems to always choose a product that they can dominate. I think Sun really felt that
they could dictate the direction of GNOME and Gtk+ better than they could KDE and Qt because they could fork GTK and GNOME easier. They do like C better and they bought into the GNOME is better designed message from the GNOME choir. Of course, NeWS and other technologies from Sun were "better" but the failed. Sun seems to always back losing horses IMHO.

I think one of the advantages of the Open Source software is that it shifts the power to the customer side. That in my opinion was one of the reasons why UNIX vendors had to jump onto Linux bandwagon - to gettheir hands on what was already their customers' choice. Same thing holds for other open source projects like KDE. If it suits my needs and is supported, I have the freedom to install it on top on my Sun Solaris or whatever platform it happens to be. From the customer perspective what I can see is that there are less critical bugs in KDE and they are fixed much quicker than the ones in GNOME. Count in usability, and that is my sales pitch. The point I am trying to make is that looks, usability, functionality and superior support speed up adoption rate, and that in turn forces big companies to adopt the good thing, or they risk loosing the game. I think it useful to have both users and developers survey results available to the public. Comparison between the two will help to steer the process into the right direction.