|
|
Subscribe / Log in / New account

GNOME v. KDE, December 2005 edition

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 17:47 UTC (Tue) by alspnost (guest, #2763)
Parent article: GNOME v. KDE, December 2005 edition

It seems unusual for Linus to get involved in a debate like this, but I'm with him, as is often the case. JMHO, but Gnome leaves me deeply unmoved, and I'm mystified by its overwhelming support by corporate types. I sort of appreciate what Gnome is trying to do, but it has ended up rather primitive and ugly.

The classic KDE criticisms are valid, too, but overall, it's a technically-elegant, attractive and usable desktop that showcases the state of the Linux desktop art. I'm very pleased that Ubuntu has raised Kubuntu to first-class citizen status, because Ubuntu's Gnome-centricity was one of its few black marks in my personal book.


to post comments

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 17:56 UTC (Tue) by erwbgy (subscriber, #4104) [Link] (35 responses)

GNOME uses GTK as its toolkit, which is LGPL. KDE uses Qt as its toolkit, which is GPL. This means that corporate developers can write proprietary applications using GTK, while they would need to pay Trolltech for a license to write a similar proprietary application using QT. Hence the popularity of GNOME with "corporate types".

I don't like GNOME much myself, but I know a few non-idiots who do. Choice is good as long as they interoperate, which is getting better all the time.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 18:25 UTC (Tue) by cventers (guest, #31465) [Link] (21 responses)

You're right about the library licensing issue, and this caused me to
almost choose GNOME a little ways back (yes, even after Qt went GPL).

Today, though, I've spent over a year using KDE full time at home and
work, and I've watched the rapid progress this desktop has been making
with keen eyes.

And now, I think that KDE using Qt (even given the Trolltech
dual-license) is *brilliant*. Qt is simply best-in-class in terms of a
cross-platform networked desktop toolkit. It's quite fast (and getting
better), very flexible, very easy to use, well documented, well supported
and well maintained. KDE can leverage on this massively successful
toolkit to deliver a massively successful desktop.

Every dollar Trolltech spends on engineering benefits KDE as much as it
does Trolltech, and hence Trolltech's commercial success will benefit
KDE. KDE's commercial success will in turn benefit Trolltech, and indeed,
Trolltech has started hiring KDE developers to work full time on KDE.

As for the licensing issue being the basis of GNOME's popularity with
"corporate types", I think this is pure speculation, and quite possibly
wrong. Trolltech doesn't charge royalties on their licensing - they
charge per-developer, at a low enough rate to be rather insignificant to
any company that employs full-time developers. (Think about it - a
developer costs between 50 and 100+ thousand a year, plus money spent on
benefits / support services / etc, and you're adding, what do they charge
- $1500 a year?). I have some of my own speculation about why the
"corporate types" choose GNOME over KDE, but this is neither the time nor
the place, I think.

From my programmer's perspective: I've used both Qt and GTK, and while I
think the unstable C++ ABI is a nightmare kind of problem to deal with,
I'd still pick Qt any day of the week because it's far more mature,
capable and easy to use. The collective GNOME APIs are, well, muddy. Very
muddy.

And you're right about choice. We share that sentiment.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 18:49 UTC (Tue) by Lockjaw (guest, #4611) [Link] (3 responses)

When working at a small company I chose GTK (not GNOME) over Qt in part because of the licensing issues (the other parts being C++ and Glade). At a large company, I could see that $1500/year isn't so much, except then you have to ask permission to get the $1500, go through purchasing, etc. I wouldn't underestimate the advantage of not having to ask permission.

As far as GNOME goes - I stopped using it when metacity became the window manager and I saw all those "crack smoking" replies to requests for reasonable features. It sounds like not much has changed on that front.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 19:14 UTC (Tue) by cventers (guest, #31465) [Link] (2 responses)

Fair enough - GTK can be swallowed easily by an individual developer
without the authority of management. But for some project (or series of
projects) in, say, Linux desktop applications at even a tiny companty to
be at all successful, your revenue will probably have to exceed
$1500/year quite a bit. So what's $1500/a head/a year to you, especially
when it includes support? Not saying blow your money... not saying you
made the wrong decision. Just saying Qt isn't particularly expensive.

If you look at Trolltech's commercial customers, they include companies
like Adobe. I'm seriously hoping that their Qt license purchases go to
making portable Photoshop, etc. Because frankly, for large projects like
Photoshop, especially, Qt is more "commercial grade". And it's backed by
a company with money to lose in lawsuits, which companies like for
reasons of assurance. And they sell support. If Adobe were to port its
suite to Linux, it still wouldn't be open source, but it would be very
good news for the Linux desktop.

Forge ahead, Trolltech. Forge ahead full speed.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:15 UTC (Tue) by mepr (guest, #4819) [Link]

You have put your finger on maybe the most relevant reason why a corporate, closed project would choose gtk over qt, the issue of releasing software packages for public use. Using QT means every time the c++ libraries go through another abi incompatability, the packages relying on that abi have to be rebuilt and rereleased. So you have redhat, ubuntu, suse, debian as probably the 4 most popular linux desktop packages, and none of them guarantee abi compatibility amongst themselves at any time. I upgraded my ubuntu install to breezy, and now flash is half broke, where by half broke I mean any given flash app has a 50/50 chance of working. And macromedia is one of the more supportive companies, as far as client, desktop, consumer software.

Welcome to library dependency hell.

GNOME v. KDE, December 2005 edition

Posted Dec 16, 2005 1:10 UTC (Fri) by thedevil (guest, #32913) [Link]

cventers wrote:
If you look at Trolltech's commercial customers, they include companies
like Adobe.

Interestingly enough, though, Acrobat Reader 7.x is gtk. And in terms of
ui it seems to me better than any of the free PDF readers.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 21:26 UTC (Tue) by dhess (guest, #7827) [Link] (16 responses)

From my programmer's perspective: I've used both Qt and GTK, and while I think the unstable C++ ABI is a nightmare kind of problem to deal with, I'd still pick Qt any day of the week because it's far more mature, capable and easy to use. The collective GNOME APIs are, well, muddy. Very muddy.

One problem with Qt is that, instead of leveraging the C++ STL, it comes with its own STL-equivalent classes (QList, etc.). What a waste of effort! I could understand this choice 5 years ago when many popular C++ compilers still lacked ISO-compliant STL implementations, but now it's just a weight around the neck of Qt.

And don't even get me started on Qt's "moc" nonsense.

I agree with you that GTK+ has a bunch of terrible API, but that's what you get when you go too far with the "OO in C" model. How C programmers can tolerate functions with names like gtk_file_chooser_button_new_with_backend is beyond me.

On the other hand, gtkmm is a really nice C++ wrapper around the GTK+ APIs, and there's gnomemm for the GNOME side, too. Unlike Qt, they make extensive use of the STL, and they support the signal/slot model without the need for a pre-processing step ala moc.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 22:40 UTC (Tue) by halla (subscriber, #14185) [Link] (12 responses)

Er... You know what? All that nonsense that you decry so forcibly was
started more than five years ago. Of course C++ standard string class
still isn't suitable for real-world use, and the moc is actually
incredibly handy. It's almost as if you wouldn't have to write your own
preprocessor to write the repetitive stuff for you.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:28 UTC (Tue) by nix (subscriber, #2304) [Link] (6 responses)

Of course C++ standard string class still isn't suitable for real-world use
This turns out not to be the case.

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 9:28 UTC (Wed) by cloose (guest, #5066) [Link] (4 responses)

Oh, yeah. The Unicode support is so great in std::string, right??

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 20:19 UTC (Wed) by nix (subscriber, #2304) [Link] (3 responses)

std::string does not dictate representation. That's what traits classes are for. Traits classes for UTF-8, UCS-16, and so on would not be very difficult to write.

This has been true for longer than Qt has existed, I believe: certainly it was true for years before the standardization process was complete.

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 21:32 UTC (Wed) by cloose (guest, #5066) [Link] (2 responses)

std::string does not dictate representation. That's what traits classes are for. Traits classes for UTF-8, UCS-16, and so on would not be very difficult to write.

No, you also need codecvt<> facets to convert between different representations (UCS-4, UTF-8, etc). And that's were it gets ugly.

AFAIK even "the C++ standard loving" gtkmm created there own string class for UTF-8 (see Glib::ustring).

So I would say a) it's not as easy as you make sound and b) as a app developer i have better things to do and just use QString. ;)

GNOME v. KDE, December 2005 edition

Posted Dec 15, 2005 10:04 UTC (Thu) by nix (subscriber, #2304) [Link] (1 responses)

<blockquote>
No, you also need codecvt<> facets to convert between different representations (UCS-4, UTF-8, etc). And that's were it gets ugly.
</blockquote>
Actually it's about ten lines of calling iconv. I've done it. It's not hard.

GNOME v. KDE, December 2005 edition

Posted Dec 22, 2005 8:20 UTC (Thu) by oever (guest, #987) [Link]

Actually it's about ten lines of calling iconv. I've done it. It's not hard.

That sounds interesting. I've been looking for a way to handle different encodings nicely with just the STL. Could you give me a pointer to an example?

GNOME v. KDE, December 2005 edition

Posted Dec 26, 2005 23:54 UTC (Mon) by Baylink (guest, #755) [Link]

Is that the same as "bullshit"?

:-)

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:39 UTC (Tue) by smitty_one_each (subscriber, #28989) [Link] (1 responses)

I think the best defense of Qt is that its roots predate the C++98 standard. Nevertheless, it's still non-standard, and loses appeal thereby.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:46 UTC (Tue) by dhess (guest, #7827) [Link]

I think the best defense of Qt is that its roots predate the C++98 standard. Nevertheless, it's still non-standard, and loses appeal thereby.
Right, like I said, it made sense before reasonable STL implementations were available, but now it's just a pain.

I was hoping that Qt 4 would deprecate some of the redundant classes, but that doesn't appear to be the case.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:43 UTC (Tue) by dhess (guest, #7827) [Link] (2 responses)

Of course C++ standard string class still isn't suitable for real-world use
Oh, come on, that's ridiculous.
and the moc is actually incredibly handy. It's almost as if you wouldn't have to write your own preprocessor to write the repetitive stuff for you.
A handy tool is great, except when I'm forced to use it. Then it's not so handy anymore; I'd call it a nuisance.

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 9:41 UTC (Wed) by cloose (guest, #5066) [Link] (1 responses)

Oh, come on, that's ridiculous.

Then please tell me where does std::string support Unicode? Where are the often needed features like toInt(), toFloat(), replace(), trimmed(), rightJustified(). Sure I can write all those functions myself, but I have better things to do.

A handy tool is great, except when I'm forced to use it. Then it's not so handy anymore; I'd call it a nuisance.

moc provides Qt Meta-Object System. This is much more than just signal/slots. It's also dynamic properties and introspection. Those things are very useful for scripting engines or GUI builders. Please see http://doc.trolltech.com/4.1/metaobjects.html.

Regarding STL:

There is nothing that prevents you from using STL instead of QTL in your Qt applications. Also you can even use the STL algorithm with the QTL containers.

But a few things make QTL containers easier to use. Please see http://doc.trolltech.com/4.1/containers.html for reference.

Bye, Christian

GNOME v. KDE, December 2005 edition

Posted Dec 16, 2005 22:26 UTC (Fri) by dhess (guest, #7827) [Link]

Then please tell me where does std::string support Unicode?
Believe it or not, there are many, many C++ apps which do not need to be internationalized. I work on a very large (10m+ lines of code) in-house C++ application for a medium-sized, privately-held U.S. corporation, and all that Unicode strings would do for our application is a) slow it down and b) increase its memory footprint.

Even for internationalized applications, std::string may be sufficient for storing, e.g., UTF-8 encodings, depending on what your application is doing with strings. nix alludes to this in his comment above. All you have to do is Google Groups for "unicode std::string", and you'll find several threads with postings from some very good C++ programmers debating the merits of using std::string for storing international strings. The consensus seems to be that as long as you're not trying to process the strings (e.g., find a substring), std::string may suffice. And depending on the implementation of your STL, std::wstring may be good enough for UCS-4 encodings with "real" string semantics.

By the way, in my original comment criticizing Qt's "QTL," I didn't mention QString as one of the offending classes. I think it's clear that for a toolkit like Qt or GTK+, you need a portable, convenient class for dealing with Unicode strings until the C++ ISO committee cleans up the internationalization mess. (Though I would prefer a strictly UTF-8 class, can't we all just switch to this particular encoding?) So I never actually complained about QString. I was objecting to boudewijn's comment that, "C++ standard string class still isn't suitable for real-world use," which is complete nonsense. Maybe it's unsuitable for a GUI toolkit -- *maybe*, I would still prefer a toolkit that's templated on string types so that I can choose the appropriate representation for my application, e.g., I don't need multi-byte strings and don't want to pay the cost of one -- but certainly not unsuitable across the board.

Where are the often needed features like toInt(), toFloat(), replace(), trimmed(), rightJustified()
For toInt and toFloat, please see boost::lexical_cast. Its approach is much better than adding methods to your string class, because a) it's extensible to any type I can dream of, not just the ones that the Qt designers felt were important and b) I can override the conversion if needed (e.g., say I want my toFloat() to accept "+inf", or maybe I want to throw when I encounter that). QString's to* methods are non-virtual, so I'm SOL if I don't like their implementation.

I don't know what the other methods do, Boost may have similar functionality, but in any case, lack of these methods hardly makes std::string unsuitable for "real-world use." Millions of real-world applications do just fine without them.

moc provides Qt Meta-Object System. This is much more than just signal/slots. It's also dynamic properties and introspection. Those things are very useful for scripting engines or GUI builders. Please see http://doc.trolltech.com/4.1/metaobjects.html.
You're not reading what I'm saying! I don't care if moc does my dishes and takes out the garbage. I object to the requirement that I use it for my Qt application, not its convenience! gtkmm requires no such thing and I can always use moc (or any other code generation system) with a gtkmm app for all the other "good things" it does, if I choose to do so. These things should be orthogonal, not intimately tied together as they are in Qt.
Regarding STL: There is nothing that prevents you from using STL instead of QTL in your Qt applications. Also you can even use the STL algorithm with the QTL containers. But a few things make QTL containers easier to use. Please see http://doc.trolltech.com/4.1/containers.html for reference.
As far as I can tell, what you say doesn't apply to the Qt widget classes, since they're not templated. For example, if I want a list of selected items in a QListWidget, I get back a QList of QListWidgetItem *. So I don't see how I can avoid using QTL in Qt. Please correct me if I'm wrong, I would love to hear about it because this is one of my main objections to using Qt.

p.s. ... which reminds me of one more thing I don't like about Qt. Passing around raw pointers is really inexcusable in modern C++ design. Passing around containers of raw pointers (ala QListWidget::selectedItems()) is even worse! Please give me reference-counted pointers, preferably boost::shared_ptr, though templating on pointer type is even better. gtkmm is slightly better than Qt in this regard, but still inconsistent (some methods return raw pointers and others do not, though maybe there's a rhyme to their reason).

GNOME v. KDE, December 2005 edition

Posted Dec 16, 2005 1:20 UTC (Fri) by thedevil (guest, #32913) [Link] (2 responses)

dhess wrote:
On the other hand, gtkmm is a really nice C++ wrapper around the GTK+ APIs, and there's gnomemm for the GNOME side, too. Unlike Qt, they make extensive use of the STL, and they support the signal/slot model without the need for a pre-processing step ala moc.

If you keep the runtime typing inherent in the signal/slot mechanism,
I don't see what the advantage of C++ is. If you read any of Stroustrup's
books you know that the whole point was to marry OO and static typing.

And signals/slots aren't even the worst instance of this in Gtk; that
distinction belongs to the horrible string-named properties. That's
back to Smalltalk, folks. When shall we ever learn?

There's a reason why pretty much any Gtk app, if run manually from
an xterm, will spew an ungodly amount of warnings.

GNOME v. KDE, December 2005 edition

Posted Dec 16, 2005 22:32 UTC (Fri) by dhess (guest, #7827) [Link] (1 responses)

I'm sorry, I'm having trouble understanding your comment. Are you talking about gtkmm, or GTK+? I was talking about gtkmm. It sounds like you're complaining about GTK+, which, as I said in my original comment, I don't like, either, so I think we see eye-to-eye on that one, at least.

GNOME v. KDE, December 2005 edition

Posted Dec 17, 2005 4:05 UTC (Sat) by thedevil (guest, #32913) [Link]

Sorry, I forgot that in a flamewar one's supposed to pick a side :-)

If I should summarize the sentiment behind my post (and that's the
important part, right?) it's approximately this: Gtk design is so wrong
that not even a C++ wrapper can save it.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 18:57 UTC (Tue) by hazelsct (guest, #3659) [Link] (3 responses)

Bzzzt! Wrong answer. Qt license costs are trivial compared to developer time, except perhaps in India or China.

The real issue is the annual -- and always "final" -- change of the C++ ABI which breaks every binary app linked to C++ libs. In contrast, one can write against the GNOME 2.0 ABI and be guaranteed nearly five years of stability. As long as this keeps up, corporate developers will continue to stay away from KDE, Qt, and all other projects whose infrastructure libs are written in C++.

Linux, the GNU toolchain, X, GTK, GNOME, all one big happy C family!

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 20:37 UTC (Tue) by nix (subscriber, #2304) [Link] (2 responses)

Parts of X, specifically Mesa, are written in C++.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:38 UTC (Tue) by airlied (subscriber, #9104) [Link] (1 responses)

libGLU is the only major C++ component in Mesa and it provides only a C ABI... so doesn't have any of these issues...

I think some shader code recently added might be in C++ but again no ABI...

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 7:23 UTC (Wed) by nix (subscriber, #2304) [Link]

Hm, true. I hadn't noticed that none of the C++ness gets exported. The ABI problems will still be present with respect to libstdc++ itself, unless libGLU is linked with -Bgroup, which is a) unsupported and b) doesn't seem to be the case. (A good thing too: linking libstdc++ to *anything* with -Bgroup gives me the willies.)

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 22:18 UTC (Tue) by jmorris42 (guest, #2203) [Link] (8 responses)

> GNOME uses GTK as its toolkit, which is LGPL. KDE uses Qt as its
> toolkit, which is GPL.

The license issue is important, but equally important is the language divide. GTK is C, Qt is C++. C can be wrapped in OO clothing well enough that it seems to be able to make everyone happy, language wise. Imagine a C++ horror like Qt running on a palmtop. Say the new Nokia gadget with only 64M of ram.

Note that GNOME seems to have found a way to negate this underlying advantage however.... needing 7.5M of resident set for a battery status applet is simply obscene.

Seriously, I'd like to see a KDE like desktop environment built on GTK2. The combination would be solid, scalable and free of license problems. Of course it would still be the wrong solution to my problem.

KDE is obsessed with recreating the popular but defective look and feel of Windows and gushing about Qt so much they were willing to ignore the fact it was proprietary software for most of KDE's life. GNOME appears obsessed with creating an environment as sterile and boring as a Mac while trying to import all of the defective plumbing found in Windows (binary registries, C#, .Net, etc.)

Both of which have a place in the evangelistic mission and all that, but what about once they get here? What are we offering? Have we lost our confidence in The Unix Way? Do we still believe we have a better philosophy of how things Should Be?

I want a graphical environment for UNIX that doesn't feels like it is a port. Something that is simple, elegant well designed and feels like it belongs in UNIX.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 22:49 UTC (Tue) by halla (subscriber, #14185) [Link] (1 responses)

That endless repetition of the old, hoary chestnut of "c is easy to wrap,
c++ is not" is so bloody annoying by now. It is NOT TRUE. AT ALL. Look at
the tremendous usability and functionality of PyQt. The Ruby bindings,
the Java bindings, the C# bindings, the C bindings, the Objective C
bindings, the Perl bindings, the Javascript bindings -- they have all
been usable and functional. PyQt, the Ruby, Java, C# and Javascript
bindings are alive and kicking. The ONLY reason the rest of them is no
longer maintained is that no-one wanted to use them. They were not
needed. C++ is, after all, and certainly in conjunction with Qt, a
satisfactory high-level programming language for people interested in
results, not in purity-posturing.

So, one more time: Qt bindings exist, are complete, are usable, are used
a lot.

(And as an aside, about palmtops and so on: ever heard of QTopia?)

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 23:31 UTC (Tue) by nix (subscriber, #2304) [Link]

It doesn't need to look like Windows either. Mine looks totally different thanks to the Dark Blue colour scheme and Keramik widget style. (I think the colour change does most to change the look of it.)

GNOME v. KDE, December 2005 edition

Posted Dec 14, 2005 1:54 UTC (Wed) by daniel (guest, #3181) [Link]

Imagine a C++ horror like Qt running on a palmtop. Say the new Nokia gadget with only 64M of ram.

Perhaps you have not heard of qtopia.

KDE and GTK2 are the best

Posted Dec 14, 2005 6:14 UTC (Wed) by astrand (guest, #4908) [Link]

>Seriously, I'd like to see a KDE like desktop environment built on GTK2. The >combination would be solid, scalable and free of license problems.

Agree! GTK2 is the best toolkit[*], but KDE is the best desktop environment.

[*]: There are some really bad parts, like the file chooser, but that can easily be fixed.

GNOME v. KDE, December 2005 edition

Posted Dec 15, 2005 23:29 UTC (Thu) by pynm0001 (guest, #18379) [Link] (3 responses)

> C can be wrapped in OO clothing well enough that it seems to be able to
> make everyone happy, language wise.

No it can't. :)

My first GUI programming experience was using the C-based Win32 API (no
MFC or anything, just the pure C calls).

When I transited to Linux, I wanted to be able to take that experience
over, so I started to learn GTK+. I simply couldn't grok it. The OO
layer they use there is wrapped behind lots of things the programmer has
to do, such as naming conventions, remembering to declare things in your
struct that counts as a subclass in the right order, and using (and
defining) macros EVERYWHERE in order to break C's typing system so that
you can simulate OO.

It sucked. So, I took the jump and started to learn Qt. I was vaguely
aware of C++ and how it worked from trying (and failing) to learn
Microsoft's MFC and Borland's Object Windows Library (OWL).

Luckily the Qt API and programmer documentation were simply excellent.
It was hard at first but once I got C++ down Qt itself was pretty easy.

Or to make a long story short, not everyone is content with the
monstrosity that is OO in C. ;)

> Imagine a C++ horror like Qt running on a palmtop.

Others have already mentioned Qtopia, but I wanted to point out why it is
that C++ software on portables can actually work. C++ isn't actually a
"bloated" language. Indeed, many of the frustrating things about it stem
from the requirements its designers impose on it that the code doesn't
pay for features it doesn't actually use.

In fact, well-designed C++ code can usually outperform equivalent C code
because the C++ language provides more information for the optimizer.
One program with C++ is the vast number of symbols generated, but most
are not actually required, and there is ongoing work in place to make
linking and loading C++ libraries suck less on Linux (Ever notice that it
doesn't suck on Windows? ;)

> KDE is obsessed with recreating the popular but defective look and feel
> of Windows

No we aren't. The default KDE combines elements from most major DEs.
I'll agree it looks most like Windows but there is nothing stopping you
from using e.g. Mac OS-style menus or the UNIX-traditional
focus-follows-mouse. You can even change the standard key bindings (and
KPersonalizer does this for you on the first startup).

I thing I want to know is why it is a crime if a GUI system allows their
user to emulate the feel of Windows... I know if I spent 10 years
learning keyboard shortcuts I wouldn't want to have to re-learn different
ones to switch.

> and gushing about Qt so much they were willing to ignore the fact it
> was proprietary software for most of KDE's life.

No it wasn't. KDE was started in 1996, making it almost 10 years old. Qt
has been Open Source since 1998, and was dual-licensed with GPL since
Sept. 2000. So it was only proprietary for 2 out of 9 years of KDE's
existence.

As far as The Unix Way, I feel that's what we're striving for with KDE.
Think of Konqueror as the shell and KParts as the I/O pipes. ;)

But let me tell you, this kind of stuff is hard. :(

Regards,
- Michael Pyne

GNOME v. KDE, December 2005 edition

Posted Dec 16, 2005 22:42 UTC (Fri) by dhess (guest, #7827) [Link] (2 responses)

One program with C++ is the vast number of symbols generated, but most are not actually required, and there is ongoing work in place to make linking and loading C++ libraries suck less on Linux
Are you talking about gcc 4.0's support for symbol exports? Or is there more to it? In the case of my employer's large C++ app, gcc 4.0's symbol exporting doesn't help us much because we throw exceptions, and as far as I can tell, that means we need to export any symbols across which exceptions can be thrown (which is practically... well, everything). So if there's some other efforts going on in this area that are unrelated to gcc, I'd love to hear about it.

(Ever notice that it doesn't suck on Windows? ;)
Are you talking about the fact that you don't have C++ DLL ABI issues on Windows? I thought that had more to do with the fact that every modern Windows app ships with all of the DLLs that it links against and effectively does the equivalent of GNU's LD_LIBRARY_PATH trick for each application, than any magic in Windows's runtime linker or MSVC++. In other words, Windows doesn't have any "system" C++ libraries, as far as I'm aware.

But maybe you're talking about something else.

GNOME v. KDE, December 2005 edition

Posted Dec 18, 2005 2:25 UTC (Sun) by pynm0001 (guest, #18379) [Link] (1 responses)

> Are you talking about gcc 4.0's support for symbol exports?

That's a part of it. The feature is called visibility. I regret to say
that it is still only 90% baked, as it's hard to use visibility correctly
in certain times when using C++ libraries that don't support it. For
example, using it with Qt 3 brings issues of its own for KDE 3.5. And
the STL implementation in gcc 4.0.x is buggy when using the pooled
allocator and visibility.

However, for the most part it is a great advancement, and when code is
updated to use it properly can substantially reduce the symbol count of a
C++ program or library, which greatly reduces linking time.

Another benefit of visibility is that it seems to make more optimizations
potentially possible. I forget the exact explanation though.

You can read about visibility here:
http://www.nedprod.com/programs/gccvisibility.html

> In the case of my employer's large C++ app, gcc 4.0's symbol exporting
> doesn't help us much because we throw exceptions, and as far as I can
> tell, that means we need to export any symbols across which exceptions
> can be thrown

AFAICT that isn't the case. You do need to export with default
visibility the definition of the class which you are throwing. I'd need
to ask around before saying that what you describe is definitely untrue
but I've never heard anything like that.

One other thing I want to describe is the prelink tool, which as it may
imply, will perform much of the work of the dynamic linker, and cache the
result, which will result in much less work loading the binary later.
It's useful all-around, but especially useful for C++ binaries.

This is what I was talking about with Windows, where for some reason
their C++ ABI seems to not suffer as much loading times as the ELF/Linux
ABI. But then again, I've heard of some useful C++ constructs which we
actually use in KDE that break with the Win32 mechanism.

Regards,
- Michael Pyne

GNOME v. KDE, December 2005 edition

Posted Dec 19, 2005 10:16 UTC (Mon) by dhess (guest, #7827) [Link]

AFAICT that isn't the case. You do need to export with default visibility the definition of the class which you are throwing. I'd need to ask around before saying that what you describe is definitely untrue but I've never heard anything like that.
Yes, you're right. I went back and re-read the wiki entry on visibility, and you only need to export the exception class. Thanks for clarifying.

GNOME v. KDE, December 2005 edition

Posted Dec 13, 2005 20:35 UTC (Tue) by nix (subscriber, #2304) [Link]

It seems unusual for Linus to get involved in a debate like this
Oh, no: he's mildly famous for popping up on mailing lists and emitting well-reasoned posts baked in high-temperature flame. He was doing it before the Linux kernel even existed.

His posts to the GCC list over the years have been memorable for a high heat to light ratio...

I entirely agree with your characterizations of KDE and GNOME; I avoided moving from GNOME 1 for as long as possible, then finally when it was too rotted to use I ate my dislike for moc and jumped to KDE, entirely because the permanently-active parts of GNOME 2, like the panel, couldn't come close to acting as I wished, or as they had acted in GNOME 1. I've never looked back.

GNOME v. KDE, December 2005 edition

Posted Dec 26, 2005 22:20 UTC (Mon) by Arker (guest, #14205) [Link]

'The classic KDE criticism' so far as I know is licensing. That issue was solved long ago. Currently the licensing for KDE is more free than for GNOME, in fact.

Gnome doesn't just leave me unmoved - it moved me all right. It moved me to the point I will never again use GTK for anything that I can possibly accomplish without it. I was, by the way, a very early Gnome adopter, until they decided they didn't want users like me anymore and started throwing every insult and injury they could come up with my way.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds