MAR
31
2003

George Staikos: A Quick Cost Analysis of Qt vs GTK

Last week, CORBA-lover Michael Meeks released some slides that caused something of a stir amongst some in the KDE community. In his slide, Michael Meeks attempted to make the case for GNOME as the only viable desktop on Unix by directing the heat of his argument at the cost of Trolltech's Qt -- the wonderful cross-platform toolkit on which KDE is based -- for proprietary development. Rising up to the challenge, George Staikos has written a nice article that compares the cost of Qt vs GTK in the real world.

George successfully makes his case independent of the specifics, but there are few things in particular about Michael's slide that bother me. For one, Michael seems to be making a skewed comparison of GNOME to Qt as opposed to comparing GNOME/GTK to KDE/Qt. If comparing KDE to GNOME, then certainly two of the three points in favour of GNOME count for KDE.

Other than the points George makes in Qt's favour (check out the dirt on the new tab widget!), and the fact that KDE more or less maintains a copy of Qt in CVS, KDE has a very open development model, and I would even argue that in many ways KDE development is more open and accommodating to contributors than the GNOME development model which is heavily influenced by the commercial powers behind the GNOME Foundation. Personally, I have also seen a lot of whining about how closely-controlled (by Red Hat) GTK development is. And, of course, the ABI/API stability Michael claims for GNOME certainly applies just as equally to KDE/Qt.

Another thing that puzzles me are the prices Michael quotes for proprietary Qt development. He is talking about proprietary development on Unix, and yet he quotes the prices for Qt on three platforms (Mac/Windows/X11) which is twice the price of Qt for X11 alone. And if he does that, he really ought to take into account the state of GTK on Windows and Mac (ports of which do indeed exist). But these quibbles are sort of besides the point, since indeed Qt does cost something for proprietary development whereas GTK is gratis up front.

So, by all means, read George's article carefully, then tell us what you think about this whole matter. Have you used Qt for free or proprietary development? If so, what have been your experiences?

Comments

Does he even know why Qt was created?

It is made to speed up the development process.
And it does so probably much better thatn Gtk.

Conclusions...


By KDE User at Mon, 2003/03/31 - 6:00am

there are other Open Source licensing choices besides the GPL that are compatible with FreeQt, though George's article doesn't say as much. such choices include the LGPL as well as BSD and MIT style licenses.

as for personal experience, i have found that Qt does make a difference and is well worth the licenses. developers can work faster and worry about fewer things. from Unicode to i18n to collection classes to networking to databases to .... it's all handled in a clean, consistent and reliable manner.

one of my favourite moments was when helping a client decide whether or not to go with Qt for their application and i drew up a fully functioning dialog with a table and navigation buttons that connected to their Oracle database in Qt Designer in under a minute and previewed it live for them. jaws dropped open around the table and they never looked back.

with the KDE layer on top, it's even sweeter. fully functioning applications with rich and consistent interfaces can be brought to life in a matter of hours. on larger projects that means you can concentrate on what the program does that is unique rather than (poorly) reimplementing all the details ...


By Aaron J. Seigo at Mon, 2003/03/31 - 6:00am

Really, then why don't Eclipse and wxWindows target QT/KDE?


By Anonymous at Mon, 2003/03/31 - 6:00am

I can tell you why wxWindows doesn't taget Qt: I said I would try to do it, but then decided it was not worth the effort. The idea of a WxQt was considered nice, and welcomed by the WxWindows community.

About Eclipse, I don't really know, you would have to ask someone at IBM.


By Roberto Alsina at Mon, 2003/03/31 - 6:00am

Thanks for the info. I don't have the URL handy, but I recall recently reading an interview from a wx guy who gave me the impression that a QT target was something of a foggy area, such that it was desirable to be avoided.

I wouldn't mind being mistaken, but I've heard that from a bunch of other sources too. I don't suppose you'd like to comment on that sort of thing?


By Anonymous at Tue, 2003/04/01 - 6:00am

I don't see how I could comment on such a thing unless you had some sort of reference for what you say.

So, no, I wouldn't like to comment about how you (whoever that is) recalls reading an interview with "a guy" that gave you the impression that "a QT target was a foggy area", and got that from "a bunch of other sources, too".

Get serious, then ask.


By Roberto Alsina at Tue, 2003/04/01 - 6:00am

http://www.fosdem.org/index/interviews/interviews_smart

Here, Julian Smart says:

Ah, wxQt - the case of the missing port. It comes up from time to time on the mailing list but no-one has yet been sufficiently motivated to start the port. The fact that it would be a fully-featured C++ toolkit on top of another fully-featured C++ toolkit could indeed be a disadvantage but there's another problem: legality. TrollTech have never clarified whether they would permit a wxQt port, despite a fair number of emails. I can't imagine they'd be wild about it!

There is "a guy" who I think sounds "serious."


By Anonymous at Wed, 2003/04/02 - 6:00am

Trolltech don't have to "permit" anything as long as the licenses are fine.


By anon at Wed, 2003/04/02 - 6:00am

Ok, I now can reply about it ;-)

It is obviously legal, since the licenses are just fine.
What would be more dubious is who exactly can USE the port to develop a program, and that difficulty is mainly caused by the GPL being a mess.

Whether the trolls would be happy or not, I bet on unhappy, but it doesn't matter all that much. I can imagine that they didn't want to encourtage it by saying "it's OK", too.

The reason why I didn't build the port is that it was basically painful. Not that it was specially hard but:

a) At the time there was no full spec on the WxWindows API.
b) WxWindows didn't use the same public headers on all versions, so all ports were subtly incompatible, and starting a new one was hard (which one would it be compatible with?)
c) Basically the goal would have been to wrap Qt into a less convenient API. And I was not going to use it, so why bother?

a) and b) are not so much of a problem nowadays, because WxWindows API is more cleanly defined.

c), however, is as much of a problem as ever. You need a guy that knows Qt well, and knows Wx well, and prefers using Wx. I only fitted one of those criteria,


By Roberto Alsina at Wed, 2003/04/02 - 6:00am

Julian Smart obviously doesn't know how the GPL works!


By meh at Wed, 2003/04/02 - 6:00am

> impression that a QT target was something of a foggy area, such that it was desirable to be avoided.

ROFL.. people who still believe that Qt is under some non-GPL or GPL compatible license.


By meh at Wed, 2003/04/02 - 6:00am

Maybe because the idea of targeting a crossplatform toolkit to another crossplatform toolkit is just strange.


By David Johnson at Tue, 2003/04/01 - 6:00am

Yup, I agree. But I was referring to a legal issue.


By Anonymous at Wed, 2003/04/02 - 6:00am

It's simple if wxQt is closed source, no you can't. If it's Open Source then it's fine. How hard is that to understand?


By anon at Wed, 2003/04/02 - 6:00am

...well maybe i've missed something, but as far as i recall JFK was not in Hamburg but in Berlin when saying the famous words "Ich bin ein Berliner". *g*

http://www.gnome.org/~michael/XimianOOo/img3.html

Hmmm, maybe michal wanted to say something else... "I am a hamburger..."... c'mon, BigMac...


By Franz Keferboeck at Mon, 2003/03/31 - 6:00am

Well I am a Hamburger.. thus I know that in ancient past there has been a famous Company called Star Division (small team, some coders) over here in Hamburg. The people of this company had the stupid idea to compete directly with Microsoft and to come up with an alternative Office Suite. (big laugh..)... Well, see what came out of this?


By thomas at Mon, 2003/03/31 - 6:00am

What JFK actually said was " I am a jelly donut." : ein Berliner = a jelly donut
What he meant to say was " Ich bin Berliner. "


By Ron Gesell at Wed, 2003/04/09 - 5:00am

"Ich bin Berliner" means you are actually from Berlin. Kennedy did not mean to say that, and it would have been ridiculous to have done so, given his thick Bahston accent. He meant to say that he was a citizen of Berlin--an expression of unity. It's like the difference between saying "I am American" and "I am an American." It's a subtle difference, but it was not lost on the crowd. I can assure you that no one in that crowd thought he was claiming to be a jelly donut, any more than you would think I was popular literary magazine if I told you I was a New Yorker.


By rogue at Sun, 2003/11/16 - 6:00am

I was a Gnome users, now I use KDE, because since KDE 3.1 I think it is really bettere than gnome 2.2. However QT Pricing are very HIGH!!! Ex: I'd like to develop a little program for a little society and I like to sell it for 100 $.
The cheapest QT license is 1500$, while GTK is lgpl.
That's all.

Bye
Mic


By Michele Costant... at Mon, 2003/03/31 - 6:00am

There is notting stopping you from writung a GPL program and selling it for $100. You just have to provide the source and nothing stops whoever buys it to freely redistribute, but you can do it.


By Morty at Mon, 2003/03/31 - 6:00am

Thanks for trying to set the record straight, Morty. So few people see that "proprietary software"!="commercial software". You can create commercial software using the free version of Qt and sell it for as much money as you see fit. You just have to release it under the GPL. Under the GPL, you don't even have to provide the source until your customers request it.


By ac at Tue, 2003/04/01 - 6:00am

The problem is that with the GPL, selling it for $100, when someone can take the source, compile it and redistribute the binaries becomes rather hard. I would not like to take the risk that someone won't think of it.

Sorry, but commercial *IS* difficult with the GPL. GPL wants you to make money of services, which is not yet a very viable business model. Only Redhat seems to be making any money of it, and that is because they have huge corporate customers.


By The Problem at Wed, 2003/04/02 - 6:00am

While it's true that generally you can develop commercial applications licensed under the GPL, you can _NOT_ develop commercial QT applications without buying a QT license. Period. Read Trolltech's license, it's dual GPL/QPL.

Their license states very clearly that you can not develop a commercial application using the free toolkit. It does not matter if you release the source, license under the GPL, or whatever, no commercial application develop can be done with the free/GPL'd QT.


By ch at Fri, 2003/04/04 - 6:00am

that's nonsense, read the QPL again


By domi at Fri, 2003/04/04 - 6:00am

Or the GPL, for that matter.


By Roberto Alsina at Fri, 2003/04/04 - 6:00am

This argument is daft.

There is a difference between good debt and bad debt. Qt is good debt, because it can be recovered and will soon be an asset.

If however, you simply can't purchase a license, do the following:

1. Develop the app. and sell 15 copies (or however many is necessary to cover sundry costs, living costs etc.) under GPL (as already mentioned).
2. Buy the Qt license.
3. Release a new version of the app (even rename it if you so please) with a closed license and tell your existing clients that the version they currently possess will no longer be supported or maintained.
4. Offer a no-cost upgrade option to your existing customers with an added bonus that they get one free upgrade (or whatever carrot you want to use).
5. Sorted :)

I have downloaded software that comes bundled with source before. As I have no intention of reinventing someone elses baby, I leave the code alone because the applications work. Do you really think your clients will immediately fork your code and go into direct competition with you?

If you really want to buy QT, this is just one example solution for you.

It really isn't that difficult when you compare it to the future gains of developing with Qt.

Cheers.
3.1rOXtHEcASBAH


By 3.1rOXtHEcASBAH at Mon, 2003/03/31 - 6:00am

I thought you couldn't do that - if you want to use the edition that lets you do proprietary software, you have to use that edition from the start, ie you can't develop for free under the GPL then switch later.

At any rate, last time I checked that was made pretty clear on the TrollTech website. Perhaps it's changed.


By Mike Hearn at Mon, 2003/03/31 - 6:00am

Mike, can you point to the URL where that is stated.

I was not aware of that.

Thank you.

3.1rOXtHEcASBAH


By 3.1rOXtHEcASBAH at Mon, 2003/03/31 - 6:00am

Hmmm, TrollTech redesigned their site, and the rather nice Qt licensing FAQ seems to have disappeared. Here's the version they used to have up:

http://web.archive.org/web/20020212103453/www.trolltech.com/developer/fa...

I was thinking of this one:

Can we use the Free Edition while developing our non-free application and then purchase commercial licenses when we start to sell it?

No. The Free Edition license applies to the development phase - anything developed without Professional or Enterprise Edition licenses must be released as free/open source software.

Hmm, rereading your original post, maybe that's what you meant, or maybe I didn't understand the original FAQ question. I'm not sure whether releasing a new version with a new name would let you develop using the GPLd version or not. Possibly that'd be the case, as the old software would still be there GPLd regardless. "Must be released" seems a tad vague, does it apply in the future? Dunno, IANAL and all that. Perhaps you were right.


By Mike Hearn at Mon, 2003/03/31 - 6:00am

No, no. If you release software as GPL you can't take back the rights. However, you always have the rights to RELICENSE your own software however you want.


By anon at Mon, 2003/03/31 - 6:00am

Sure, I'm aware of that. That doesn't imply you still have permission to link against against Qt if you do so.

The confusing thing about this is that the wording of the FAQ implies that you can't develop your software as GPL then switch it to commercial software later, but clearly you can relicense your own software, and at that point I don't see why you couldn't just buy a Qt license. On the other hand, the FAQ says you can't develop as GPL then buy a commercial license, it has to be commercially licensed from the start.

Ow. My head hurts. IANAL and all that jazz.


By Mike Hearn at Mon, 2003/03/31 - 6:00am

"Can we use the Free Edition while developing our non-free application and then purchase commercial licenses when we start to sell it?

No. The Free Edition license applies to the development phase - anything developed without Professional or Enterprise Edition licenses must be released as free/open source software."

This does not appear to relate to our discussion. Our discussion is about selling GPL software, and at a later stage selling non-GPL software.

Thanx Mike for the link.

To be safe, give your Generation1 software a name that you know will not be used in the longrun, like FooBarTastic2000 (got that from kde-look.org - Aqua icon set :) )

Sell Gen1 software to cover the license.

Buy the Qt licence.

Stop development of Gen1.

Release Gen2, with it's intended identity and with a closed license (no re-licensing involved).

Allow all your customers to upgrade for free.

Can anyone see a problem with this point of view?

Thank you.
3.1rOXtHEcASBAH


By 3.1rOXtHEcASBAH at Mon, 2003/03/31 - 6:00am

Well, I thought the original discussion was about how to get over the hurdle of paying for a Qt license when you are poor and have no money by releasing it as GPL first :)

On the view, no real problem I guess, but it sounds like it's dancing around the actual licensing, playing games with naming and such doesn't seem honourable - following the letter not the spirit of the license. I'm pretty sure TrollTech want paying if you're going to do it commercially some day.

Wow, their new website is pretty confusing, but I found the FAQ:

http://www.trolltech.com/developer/faqs/free.html#q3

I still don't "get" how you can write BSD/MIT software when linking to a GPL lib, but IANAL so I'm sure it's all proper, dual licensing confuses me any day.


By Mike Hearn at Mon, 2003/03/31 - 6:00am

----
I still don't "get" how you can write BSD/MIT software when linking to a GPL lib, but IANAL so I'm sure it's all proper, dual licensing confuses me any day.
----

Ok, here is the 5-cent FSF-style explanation:

First forget about the distinction between application and library. None is mentioned in the GPL, so they don't matter. What matters is the definition of "work" and both are works.

You must keep in mind that writing code is always ok. The GPL doesn't cover writing anything, it is only about distributing and copying. So, you can write whatever you want, but can you distribute it?

You can distribute a work that contains another (like an applicatoin containing a library), if the license for each piece of the work allows the distribution.

The GPL allows such distribution as long as all pieces of the larger work are distributed "under the terms of the GPL". That is not the same as "under the GPL". It means that you must be able to do all the things the GPL lets you do (the GPL doesn't forbid you from doing anything, it only doesn't specifically allow some things).

The BSD license lets you do everything the GPL lets you do, and a lot more.

So, you can distribute your BSD app with the GPLd library.

The good thing about doing that is that, in the future, someone may take the BSD code, and fully liberate it by removing the tainted GPLd code, making the whole app really free


By Roberto Alsina at Tue, 2003/04/01 - 6:00am

And of course, since Qt is also QPL, you can use licenses like the Artistic as well.


By Sad Eagle at Tue, 2003/04/01 - 6:00am

So you think that TT should offer their product to you for free, so you could write closed software for profit with it? Why do you have the right to write for-profit software but TT does not?

Besides, you can sell GPL'ed software just fine. It's free as in speech, not free as in beer.


By Janne at Mon, 2003/03/31 - 6:00am

He never said free (beer).

I agree with him. The licensing for QT is outlandish, when you consider that small software companies/startups would find it attractive since it is very clean but could never afford it.

Altho I realise you can sell GPL software, the distinction is that it is difficult to make the investment in developing software when the resulting sales are undeterminable, since you dont know what customer #1 may do with your source.

It is also difficult to make the commitment to learn and use QT before you own a commercial license. While the idea of QT is great (you can use it to develop both free and non-free programs), the fact is the licensing is several orders of magnitude too rich. $500US for a single developer license I could stomach. Perhaps even if it was $500US per year. But several thousand dollars outlay for a one-man show, when you can use LGPL GTK (with C++ bindings) for $0 outlay and keep your resulting binaries closed until youve made your money, at which time you can relicense to GPL anyway.

Obviously GTK isnt as 'nice' as QT, but at the end of the day it may be preferable over QT when you consider that you may never be able to afford to make and sell closed source software with it as a small entity.


By Simon Scott at Tue, 2003/08/19 - 5:00am

There is not fixed pricing, is has been mentioned often enough that Trolltech welcomes individuals to negotiate the exact pricing. Considering this it pretty foolish to keep stating that the poor developers and poor small software companies/startups would never be able to afford Qt.


By Datschge at Tue, 2003/08/19 - 5:00am

I'm used to seeing GNOME/KDE flames in user comments here on dot.kde, over at footnotes and of course at /. That's just the way things are and there's little to do about it except trying to ignore it. I'm not used to seeing it on article level though. I expected *a lot more* from the dot.kde guys.

Let me start out by saying that i agree with Georges article. License cost is a small fraction of developer cost in a commercial setting. No argument there. I would also like to point out that i have nothing against KDE, it's great software and one of the free software worlds best managed projects.

The article references a posting here on dot.kde (the "further claims" link) as an argument how GTK is controlled by an evil company (red hat).
He's arguments is (when the trolling and actual factual errors is filtered out):

* Some people got pissed when GNOME changed direction.
Changing direction in a large project like gnome always pisses some users off, and pleases some others. Does this mean that changing direction is bad? It is argued that this change in direction was coming "from above" (implying red hat) instead of "from the users". In reality, it came from "the guys doing the actual coding". If you contribute lots of good code to a project you have a lot of say in it's development. This is true for GNOME, KDE and most other large projects.

* There was a controversy two years ago between one developer and the rest of the team.
Happens all the time in large teams. (Can you say mosfet?)

He also claims gconf is registry-like (it's not!). He distorts some statements from gnome developers that "the user should not have to know what a window manager is to use the system effectively" to "the user doesn't know what a window manager is" which is quite a different thing. There's even more lies and errors in that posting, but i don't have the time or the energy to go into furhter detail.

The article poster (this article, not the troll posting referenced by it) uses this (along with some tabwidget anecdote that turned out to be false, se comment in this thread) to argue how GTK is closed and Qt is open.
Excuse me, but for a project to be open (in the "community-developed" sense) it has to fulfill two simple requirements:
* Most discussions about the development of the software takes place on one or several mailing lists.
* It has to be a meritochracy, meaning the people submitting the most code gets to be in on the big descisions, gets to subscribe to evil private mailing lists and so on.

GTK qualifies, so does KDE but Qt clearly doesn't. Maybe Qt-copy does too, but KDE does not depend on that so it's irrelevant. Note that some GNU software doesn't qualify either so "community-developed" does not imply "free software" or the other way around.


By Fredrik at Mon, 2003/03/31 - 6:00am

I wrote a letter to Navindra last night about this very issue.
Navindra claims 2 things
a) The KDE version of this Armegeddon is deleted on sight
b) The GNOME version does not belong here.

Both of these things I agree with, however the policy here seems to be "Delete the KDE troll, but leave the antiGNOME one intact, and in fact even reference it as "other sources of information".

I usually accept the argument that "KDE developers don't flame GNOME, and GNOME developers don't flame KDE, its just assholes flaming both sides", but when the editor of the official KDE news site starts flaming, then there's something to be worried about.


By Iain at Mon, 2003/03/31 - 6:00am

Hey, actually you did write me according to my procmail logs. Annoyingly enough I can't seem to find your message in my mailbox. I hadn't noticed it at all. Argh... I hate losing mail. I'm checking my backups right now (I just found it in msg.XsQC).

You know what? I would have deleted that article had I caught it much sooner. Unfortunately when I found it a ton of people were discussing it -- deleting it at that point just wasn't right and would have trashed all the responses. Why do we now delete the "KDE version" on sight? Because it's been posted over and over and over... That's just abuse. The "KDE version" is actually nothing like GNOME Armageddon, btw. I was wrong about that. The "KDE version" I was thinking about was the one called "KDE Myths" although I'm sure someone can write a KDE Armageddon troll too.

Why did I link it? Actually, you know what? I'm removing the link. It's less illustrative than I first thought it was, last night when I wrote my article.


By Navindra Umanee at Mon, 2003/03/31 - 6:00am

Thank you very much.


By Iain at Mon, 2003/03/31 - 6:00am

I also replied to your mail and snipped the Armageddon post... people have read and replied to it to their heart's content already.


By Navindra Umanee at Mon, 2003/03/31 - 6:00am

KDE depends on kdelibs in which they can pretty much override or extend anything they dont like in Qt. GNOME is attached to GTK and is throwing away gnomelibs... this is causing no end of pain like the never appearing improvements to the fileselector and toolbars.

Whats my point? The C++ architecture lets you build on top of Qt and extend it if you need to. So the closed development of Qt becomes much less of a problem. GNOME says GTK development is open and yet GNOME is more restricted than KDE because they have an unwillingness to maintain gnomelibs.


By anon at Mon, 2003/03/31 - 6:00am

Well GNOME did this as well for a long time (extending GTK objects) but Havoc in particular wants to eliminate that practice, because it leads to unnecessary bloat. There's a reason GNOME2 is so much smaller and faster than GNOME1, and it's in a large part because lots of extensions were removed.

Yes, with object systems the duplication is less because of inheritance (both QObject and GObject support this of course), but it's still noticeable.

The idea is (i think) that the platform becomes entirely neutral and standards based, as opposed to GnomeThis and GnomeThat. An admirable goal, if it's achievable IMO. It'll be a looooong time before that happens though.

Until then moving things into GTK makes sense, there's no point having GtkFoo and GnomeFoo (or QFoo and KFoo) when they're both open source projects.


By Mike Hearn at Mon, 2003/03/31 - 6:00am

> argument how GTK is controlled by an evil company (red hat).

Note that I didn't link the article to show how "Red Hat" specifically influences GNOME but as a source of links that illustrates the influences behind GNOME development process and that control the direction of the project.

> some tabwidget anecdote that turned out to be false

You are right that this particular example of the tab widget isn't spot on but it isn't all negative from binner's post. Of course other patches for Qt have been known to be accepted, but you are correct that Qt is not community-developed.

I think the importance of that is overstated when even Ximian (and Eazel) had to develop their own libraries to supplement GTK/GNOME functionality (libeel and libgal I think... two different libraries developed by two different companies that try to solve many of the same problems).


By Navindra Umanee at Mon, 2003/03/31 - 6:00am

> I think the importance of that is overstated when even Ximian (and Eazel) had to
> develop their own libraries to supplement GTK/GNOME functionality (libeel and
> libgal I think... two different libraries developed by two different companies
> that try to solve many of the same problems).

libgal and libeel didn't solve the "same problems". They were simply utility libraries, collections of useful functions that were originally in Evolution and Nautilus respectively, but were moved into a seperate library for other programs to use.

The problem is that libraries that are part of the main desktop of GNOME (and I would assume KDE as well) need to remain API stable, so you don't want to be adding half implemented or half finished APIs. This is why libeel and libgal existed, so that people could use them, but they understood that the API might change.


By Iain at Mon, 2003/03/31 - 6:00am

This is exactly my point. Eazel or Ximian won't go changing the base GTK libraries willy-nilly, and they don't. Instead they will come up with things like libgal and libeel which is comparable to what KDE does with kdelibs... that is, KDE avoids changing Qt but rather extends it or adds the functionality it needs.


By Navindra Umanee at Mon, 2003/03/31 - 6:00am

Ah, Sorry, I misunderstood your point.
I thought you were indicating that libgal and libeel solved the same programming problems (ie they had similar contents), and that from this you were drawing out the conclusion that it was harder to get stuff into gTK.

My bad, as the americans say


By Iain at Tue, 2003/04/01 - 6:00am

> GTK qualifies, so does KDE but Qt clearly doesn't. Maybe Qt-copy does too, but KDE does not depend on that so it's irrelevant. Note that some GNU software doesn't qualify either so "community-developed" does not imply "free software" or the other way around.

Qt doesn't need to for KDE as much as GTK needs to for GNOME, as KDE apps can pretty much override everything in Qt (easier than the OO in C approach in GTK at least!)


By lit at Mon, 2003/03/31 - 6:00am

Pages