Domain: linuxpower.org
Stories and comments across the archive that link to linuxpower.org.
Comments · 23
-
Slashdotted already!Interview by Christian Fredrik Kalager Schaller
If you have followed GNU/Linux for the last few years you know that GNOME has long been a stronghold of C, Perl and Python GUI programming. With Ximian's work on Mono, C# seems also to be a language that will see wide use in GNOME. Sun's involvement should also make Java applications integrate strongly with GNOME. But what about C++? Even in the GNU/Linux and Unix world this language has received many advocates and developers. I sat down with Murray Cumming, lead developer on the gtkmm and gnomemm C++ bindings for GTK+ and GNOME to get some information on the status of C++ development in GNOME.
Christian: What is your background and what puts food on your table in real life?
Murray: I'm a freelance developer, though that's difficult in the current market. I do C++ development on Unix, on all kinds of projects, such as protocol implementations, compilers, interpreters, data converters, management systems, and GUIs to make sense of all these. I've lived in Munich, Germany, for the past 3 years, but I'm officially a Brit. I love Munich's healthy outdoors lifestyle and easy-going socialising. I try to put the Lederhosen out of my mind.
Over the past ten years I worked my way up through paper-shuffling, data-entry, typography/design, tech-support, database consultancy, and Windows development. I didn't learn programming at a college, and I still stubbornly believe that it made me a better developer. You have to really care about something to teach yourself in your spare time.
I didn't use any Unix-like systems until Linux was widely available. People forget that before Linux you had to go to University to use Unix. Some companies had big Unix boxes, and the staff who used them generally earned huge sums because they knew how to move files around. Naturally they didn't let anyone else near them.
I've grown to love the control that Unix gives you but I've done hardcore GUI development on MacOS and Windows, so I know there's more to life. Unlike lots of GNOME developers, I know that the Mac is a worthy influence but that Windows gives us nothing to chase.
Christian: How did you get involved in developing gtkmm and gnomemm?
Murray: I was originally just a user, more attracted to the up-to-date gtkmm than the awkward (and then non-free) QT. I did the carthorse work necessary to get gnomemm 1.2 usable and stable, and that's how I learned about the general issues involved.
Then I decided to make a big effort to get gtkmm2 going, when it didn't look like anyone else was going to do it. Karl had the beginnings of gtkmm2, but it didn't build and he was reluctant to show it to the world, fearing that people would expect a certain amount of work from him. He didn't have time to do much more on it, but I did persuade him to put it on the gnome cvs. I worked on it gradually, sending progress reports to the list in case anyone was interested, and so that other people could learn too. After about 4 months I understood what it was doing, and it was able to run simple example code. As soon as I reached that stage lots of people started helping out.
Christian: What are the main design ideas of gtkmm and gnomemm?
Murray: We aim to provide the interface that a skilled C++ coder would expect, based on his experience of the language and the standard C++ Library. We try to use the standard language features wherever possible, just as any sensible C++ coder should. There would be nothing unusual about this if it weren't for bizarre C++ libraries such as QT and MFC. Is sanity really a design decision?
It's not really a design decision, but we are particularly proud that C++ allows us to simplify the underlying C interfaces. For instance, GtkTreeView has a great deal of flexibility, but gtkmm doesn't expect you to worry about that functionality unless you actually want to use it.
Christian: Okay, as you told me you made an effort to get gtkmm going, what where your aims when starting out with it?
Murray: I had 2 aims for gtkmm2:
1) Refactor it until both the interface and the implementation were ridiculously clear. I did not want any lingering doubt about the code just because people couldn't understand it. I believe that even a dull-witted person, with enough time, and enough notepaper, can make sense of anything. If he's not dull-witted then he'll make it easier for the next person.
2) Get more developers involved. This becomes easier after 1) when people can understand the code enough to improve it, but it's also necessary to:
- Present a clear vision so people know what's happening. To this end, I make a point of pre-announcing all major changes, discussing them, and announcing my interpretation of the consensus before proceeding. Everybody now understands that that's how we work, and that's why we've been successful. We only have to point to the list archives to justify our decisions in detail.
- Nurture people to get them started. We do this on the mailing list and in the #c++ IRC channel on irc.gimp.net.
- Let people know that their contributions are valued.
I know from commercial software development that money alone doesn't motivate people. In both proprietary and open-source projects, a team can only succeed if its members feel valued and involved in something worthwhile. That requires constant attention, but it pays off eventually.
Christian: That sounds good, so what is the current status of the C++ bindings for GNOME 2?
Murray: We are approaching API stability for gtkmm2, I think. Our code generator warns us about any functions that we've forgotten to wrap, and we are keeping track of API coverage manually too. We are spending most of our time now perfecting and simplifying the complex TreeView and TextView interfaces, and I see the end in sight there too. Lots of people are using gtkmm2 now and the response is overwhelmingly positive.
gnomemm 2 is progressing more slowly, mostly because it's more difficult for people to install all the latest GNOME 2 libraries. While it's still in development. Gnomemm 2 is much more integrated than gnomemm 1.2 - you can even download and install it as one tarball to get wrappers for libgnomeui, libglade, and gconf, among others.
I recently shared the gtkmm maintainership with Daniel Elstner because he's been doing so much good work on fundamental stuff. With two committed maintainers, and several regular developers, the future should be secure.
Also, we just announced support for the Forte C++ compiler that Sun will use for GNOME 2 on Solaris. And we are on the threshold of supporting Windows. Both of these platforms should be of great interest to commercial in-house developers.
Christian: Do looking ahead, what are the future directions of gtkmm and gnomemm?
Murray: For the future, we need to work on more Rapid Application Development stuff. The idea should be to add convenience without adding complication or straying from existing standards.
I'm working on some libglade additions that should make it easier to link custom code with separately-designed user interfaces. libglademm's syntax is already simpler and more helpful than libglade.
When GNOME's Anjuta2 is released, and when I can easily install KDevelop for KDE3, we need to add helper features for gtkmm.
We need to add things such as:
- Application-creation wizards so people can get started quickly.
- An "Add a signal handler for this widget to this class" feature
- An "Add a member variable for this Glade widget to this container class" feature.
- A widget creation wizard.
- A Bonobo control creation wizard.
- Add a class, deriving from this widget class.
- Add a method to this class.
- Override this method in this class.
Christian: OrbitCpp is being integrated to ship as part of the core ORBit2 package. What will this mean for C++ developers working on GNOME apps?
Murray: The Bonobo bindings are progressing well, but until ORBit2's C++ support is merged in, just after GNOME 2, we must supply bonobomm separately. I'm particularly proud of the Bonobo bindings - the lack of API clarity in Bonobo has long irritated me and this is an opportunity to show that it's not really that difficult. I've explained the issues in more detail elsewhere. C++ is the natural language for CORBA, which is inherently object-orientated - CORBA in C was always a freakish idea so it's no wonder that it's difficult.
So this means more people can use Bonobo. And the API clarity should mean that the Bonobo interfaces receive more scrutiny, because people will understand them well enough to criticize them.
We're really lucky that Michael Meeks decided to support our efforts by merging the C++ mapping into ORBit2 itself. It gives it a mainstream future.
Christian: The release of GNOME 2 is approaching fast now, how does the GNOME 2 platform look from the view of someone producing language bindings for the GNOME platform? Will there be any significant design changes introduced into the bindings due to the changed in the GNOME 2 platform?
Murray: Language bindings should now be much easier. The GTK+ and GNOME authors are more aware of the needs of language bindings and the various bindings are cooperating more, particularly with the
.defs interface-definition files. For instance, we use James Henstridge's .defs generation scripts for pygtk.The transition to GNOME 2 has allowed us to make previously forbidden interface changes to the underlying libraries. We developed gtkmm2 while GTK+ 2 was being developed. With gtkmm 1.2, we just complained about problems in GTK+ 1.2, but this time we fixed the problems in GTK+ as we found them.
gtkmm2 (for GNOME 2) is significantly different than gtkmm 1.2 (for GNOME 1.x). Some of these changes are due to changes in GTK+, but most are just lessons that we learned from gtkmm 1.2. GNOME 2 rationalizes its interfaces a lot by deprecating its more crufty stuff, and we make our interfaces even clearer by omitting those deprecated parts completely.
Christian: What are you favourite applications that has been developed using the gtkmm and gnomemm bindings?
Murray: I use Gabber every day as an instant messenger client - I love how it Just Works. I'm trying to persuade Julian to start the gnomemm2 port, even if I have to code it myself.
Cactus's Guikachu is also pretty impressive - it has made me want to do some Palm development.
There's a bunch of specialist apps out there, though not so many have been ported to gtkmm2 yet. I think that a lot of our users are doing in-house stuff. C++ is much more popular than C for that kind of thing.
I have high hopes for my own Glom app. It's meant to be a very easy-to-use database application that embodies my years of database design experience. But I've been too busy working on gtkmm2/gnomemm2 to port it properly. In the meantime, I released a small file utility, PrefixSuffix, which is a pretty good gtkmm2 example.
Christian: What are your thoughts on the future of the C++ language? Will it continue to be one of the major computer languages or is it set to be replaced by languages such as Java and C#?
Murray: In my opinion, Java and C# are much closer to interpreted languages in their design. By this I mean that much more is decided at runtime than at compile-time. I'm bored by discussions of executable speed, but I do feel that compile-time checking verifies designs and speeds development. Java and C# offer object-orientated improvements over scripting languages such as Perl and Visual Basic, but I see no competitor to C++'s feature set. I expect it to maintain its current high level of popularity.
Christian: About two years ago there was a lot of noise around gtkmm and gnomemm, with Havoc Pennington having started the Inti project, and with the leaving of Guillaume Laurent from gtkmm development, after which Guillaume was quite vocal in why he felt that gtkmm wasn't what thought is should be, in fact he called it a 'throw-away prototype' for a GTK+ C++ wrapper. Two years is a lot of time in the software world so I'm wondering what your thoughts are on the issues debated on back then, and how you see today's versions of gtkmm and gnomemm responding to any real issues raised back then.
Murray: I wasn't involved in those discussions, but I was annoyed at the schism. I like to think that I would have found an acceptable consensus. Most gtkmm users and developers strongly disagreed with Inti's design decisions so we carried on hoping that we would prevail. We did, and Inti didn't, and it's all history now. Inti died because it never involved a community of hackers, whereas I like to think that people preferred to work on gtkmm's design and felt more welcome in the gtkmm community.
RedHat's whole Inti framework never made much sense to people. Havoc is such a pragmatic developer that I still don't believe it was really his brainchild.
But Inti did create confusion among users, and even prompted one of the gtkmm maintainers to give up. My guess is that Guillaume never really got a handle on the gtkmm codebase and took the opportunity to jump clear of something that daunted him. When I was building gtkmm2 I sometimes felt the same but I chose instead to radically refactor it until it was manageable. I believe Guillaume felt certain anyway that, with RedHat's backing, Inti would succeed and gtkmm would fade away.
Guillaume uses QT now. He has stated that it was more important for him to have a full working toolkit than a perfect API. gtkmm2 will go stable soon - then we will have both in one toolkit.
Christian: What are the main differences of coding with gtkmm and gnomemm compared to coding with QT and KDE?
Murray: I addressed this in my GUADEC talk (1) and (2).
Basically, QT isn't developed publicly so it makes a number of mistakes without the benefit of any real criticism. Chief among these is its modification of the C++ language and the use of its own non-standard string class. It isn't necessary, as we've proved. These are just two ways that we've kept more up-to-date with the state-of-the-art in C++. It's then easier to use gtkmm in combination with other C++ APIs. I believe that you'll love gtkmm if you love C++, and that gtkmm is a better role-model if you're learning C++.
People sometimes complain about a lack of gtkmm documentation compared to QT, but that hasn't been true for a long time(*).
And perhaps most importantly, if you find a problem with gtkmm you can submit a patch or discuss it with the developers.
Christian: What is the advantage of using the bindings when creating GNOME and GTK+ applications in C++ compared to just accessing the C widgets?
Murray: Again, the GUADEC talk mentioned this (1) and (2).
gtkmm applications tends to be more organized than GTK+ programs. That's mostly because it's laughably easy for us to derive new widgets just to organise our code. In comparison, the structure of GTK+ code tends to be defined by the path that data happens to take through the code, rather than the layout of the source code itself.
Christian: What would you say to a developer who is trying to decide whether to write his application in C or whether to use gtkmm and gnomemm and C++?
Murray: I believe it's easier to develop software with C++, even if you're not very experienced, because the structure is there in the code, not just in your head. If you're as good as the GTK+/GNOME developers then maybe you can deal with the underlying C interfaces, but, in my experience, most coders want an easier life.
I'd recommend that people compare the C and C++ versions of the examples before deciding.
Christian: You made a presentation at GUADEC 3 this year. What is your impression of the GNOME community, is it becoming more language agnostic or is there still a strong favouring of C among the hackers you talked too?
Murray: I think people accept now that there will always be active language bindings for GNOME, and many of the core hackers now routinely use more than one programming language. There is still some general Unix-style dislike of C++, but interest has grown as people have seen that gtkmm is very much alive and useful.
Christian: For anyone wanting to learn how to create applications using gtkmm and gnomemm, where should they start looking? Are there any applications out there that you think a newbie would find a easy starting point to look at before starting creating their own applications?
Murray: Assuming that you're already a C++ coder, you should be able to get started easily by looking at the examples and the 'Programming with gtkmm' book. In fact, we have a particularly good documentation overview page with quick links into the manual and the reference documentation: http://www.gtkmm.org/gtkmm2/
We have converted all of the GTK+ examples and demos and added some of our own. I believe it's easier for a C++ coder to understand the gtkmm examples than it is for a C coder to understand the GTK+ examples.
I strongly suggest that you start with gtkmm2 rather than the stable gtkmm 1.2, because we have obliterated several confusing things.
People should also join the gtkmm-main mailing list and the #c++ channel on irc.gnome.org. We are a helpful bunch.
Christian: Okay, thanks for taking the time to talk with me Murray.
Murray: No problem, it was a pleasure.
-
Re:Did they consider KDE?
My bet is that their decision to use Gnome has more to do with the geographical location of its core developers than the code itself.
...and you base this on WHAT?
Oh, just a hunch, right?
Sure, it probably has nothing to do with the fact that Sun's developers are more familiar with C (GNOME) than they are with C++ (KDE).
From that link: This came down to a comparison of QT to GTK+. We favoured GTK+ mainly because it was C based. We have more experience with C, it is more portable, we wouldn't be exposing C++ interfaces that might cause problems with different compilers and we would still get a nice object framework to work with which is well suited to GUI development.
You said... you really have to ask whether Sun gave KDE fair consideration in making their decision
No you don't. All you have to do is a little bit of reading. Again, read above referenced article, which was posted some time ago.
If you keep making "bets" on shit you know absolutely nothing about, you're gonna lose. -
Re:GNOME, a thought
-
LinuxPower.OrgI nominate LinuxPower.Org. Christian Schaller has got to be one of the best reporters ever. I have never seen someone so honest, objective, logical and insightful. He is truly the best of the best.
My favorite was his article last year about "KDE is dead, GNOME has won". This article truly showcases Christian's talent and intelligence.
-
Re:X replacementAccording to this interview at powerlinux.org the Berlin aims to be more than just an X replacement, it forces the Model View Controller paradigm onto the application, which makes it harder for many applications to be ported to Berlin. This I think will hold Berlin from replacing X (we all know how hackers don't like being forced a paradigm upon
:).As for the framebuffer-GTK, this is really neat but will only fill a niche I think. You see, the framebuffer means that it will not be possible to use the special functions found on todays cards without building special support for all cards. A new windowing environment with its own drivers would have to be build upon it to support that.
Also, X is not that bloated as people think and can be stripped down a lot. Remember that X is being used on Linux handhelds, and it's not like the developers didn't have a choice. Further it must be noted that X recently had a lot of sweet additions like Mesa3D, anti-alliasing and soon a RandR extension according to another post.
-
Er - there is already a C++ implementation
-
Other Resources
See the news from tripwire's new site TripWire.org which has the skinny from Tripwire directly. LinuxPower has an article. As does IGN over here.
T here is also a great article here regarding file system monitoring - and alternatives (additional OpenSource) to TripWire. Not quite as relevant now that TripWire is OpenSource but still a good read.
-
FlightgearFlightgear (www.flightgear.org) runs nicely under XF4.0. I work with the main author (actually, I drink and play video games while he works, but I digress...). We had it running on some new P3 850 MHz machines with GeForce2 cards. One was running Debian and the other was running Win95.
Flightgear is also running on one of the old flight simulators here at work. Someone else has Flightgear running on a motion chair that was at Linux World Expo (link here - it's the third image down).
-
Hmmm...
-
Re:Games and Linux
in windows, I install the game xyz, setup says 'XYZ needs Directmurx 7.1, setup?'. ok dammit i install dirextx 7.1. Later I try old game abc which ran fine with directx 7.0, even if it came with directx 6.0, but now its broken...
Or even worse, some App I really need but which should have nothing in mind at all with directX or the like, (quicken, quickbooks, ...) freaks out on this...
in X11, I login with kdm/xdm/gdm/whatever, click on my 'games'-folder in kgoodstuff, choose from q3a, heretic2, soldier of fortune, Heavy gear2 or Civilization2, which all work fine without any hassle with drivers... and YES I am running a NVidia GeForce DDR on XFree 4.0!
and don't brag me on performance, 250fps on ssystem in 640x480 or 75 fps in q3a in 1600x1200, highest quality, is enough for me :)
have fun, good bye, and a friendly RTFM to all those all over the world who have problems with their geforce under linux...
btw there is a good readme on using the geforce with those games, found here -
CorelDraw is not GIMPThese CorelDraw-vs-GIMP comparisons are starting to annoy me. Repeat after me:
CorelDraw is a vector drawing program.
The Gimp is a bitmap drawing program.
The Gimp cannot edit vector graphics; CorelDraw cannot edit bitmap graphics. The two products simply do not compete.
The Gimp's real competition is Corel's Photo-Paint, which, interestingly enough, will be available for free once released, or at least so says the article. Evidently Corel feels that the Gimp is good enough a free competitor to make selling Photo-Paint alone useless! However, while CorelDraw is definitely the king of vector drawing programs and one of the missing key apps still holding back Linux (no, xfig really does not cut it!), Photo-Paint is far less popular than Adobe's PhotoShop. PhotoShop is one of the few reasons I still boot into WinNT, and I don't see this changing unless Adobe ports a recent version or Gimp 2.0 makes good on its claims.
Cheers,
-j. -
Re:What's X like?
Gnome doesn't use Enlightenment anymore, but rather Sawfish which is supposed to fit in better with how E does things... There's an interesting article What's New in Gnome 1.2 on LinuxPower
-
Re:What's X like?
Gnome doesn't use Enlightenment anymore, but rather Sawfish which is supposed to fit in better with how E does things... There's an interesting article What's New in Gnome 1.2 on LinuxPower
-
Gnome feature
I see in the screenshots specifically in this one that there is a feature that i have long awaited in gnome or at least long awaited to see (for all i know it was in there since the
.1 days) The ability to show the icons of the app in the 'taskbar'
Call it what you like, but i find this feature useful in that when you have 20 windows open on 4 desktops an icon is much easier to locate than the three letters left in the button.
Is this feature easy to turn on by default? or is there tons of config file hacking to enable it. I would do this, but i am a full time programmer and i have no time to play with configuration details, i just need to get my work done.
Another question is there any other wm other than kwm that supports the upper left corner app icon (like win9x).
I do like using kde, but i wanted to try something different, but i did not want to waste my time dling and playing w/ libraries etc to find out the things i want/need arent there.
cristiana -
Re:Mozilla at Last?--no themes
You won't get the theme support. the mozilla project doesn't currently have any plans to make them work either. check out http://www.linuxpower.org/display.php? id=168 for an explanation from Christopher Blizzard. that link was posted on slashdot too. So, while you will have a solid browser, you won't have theme support
-
People
This is not a shlashdot interview. You don't need to ask questions. This story is just a link to an interview at http://www.linuxpower.org/display.php?id =168. Unfortunetly, the server is being slashdoted right now
:(
[ c h a d o k e r e ] -
Re:Where?I concur - there is nothing to indicate that this is for real.
I was able to confirm that Heavy Gear II is in the works (from an interview at linuxpower.org) but other than that, there is no official word on the Loki site.
For what it's worth, I hope it is, but I'm not rejoicing yet.
:)Dana
-
WhoopsWow, I happen to know a number of people in the digital audio space, but this was not expected. I can tell you guys that there will be another absolutely jaw-dropping announcement in under a month, so brace yourself, because the industry is in for a ride.
The $400M seemed to be for both companies, no? I'm guessing that the vast majority of that went to Spinner.com, seeing as that A) Spinner was already traded and is a pretty considerably sized company and B) notice how Nullsoft is moving but nobody else is?
It's important to realize here that this does not mean that MP3s are going to become open. Everybody already knows about Icecast and FreeAmp, and AOL acquiring Nullsoft has (duh) nothing to do with the MP3 format as a whole. This is not about formats, it's about AOL acquiring media properties to be able to best serve its customers with a really neat, compelling multimedia experience. Go look at Wired Planet -- this is what I see AOL pulling off, but with a huge amount of music content.
I understand the anti-AOL sentiment. I, too, was there in the first part of this decade and felt the Internet shift when morons from Joe4422@AOL.COM started posting to sci.physics. But this may be part of an image shift, too. AOL isn't just a crappy service provider any more. They own a very hefty chunk of the world's software Intellectual Property now, including some very neat companies they picked up with their acquisition of Netscape. Give them some credit. They're a different company now, or are at least trying to be. And hey, I'd sure like to get bought out for a few million, vest, and then leave -- wouldn't you?
David E. Weekly (dew, Think) -
mirror at fragglerock.linuxpower.org
Here's a fast mirror I have up at fragglerock.linuxpower.org/pub/starwa rs
-
mirror will be up at fragglerock.linuxpower.org
I'll have a ftp mirror up at fragglerock.linuxpower.org/pub as soon as possible.
-
Even better, use icecast!There is a even better alternative. A shoutcast compatible mp3 streaming server with, among other things, far superior support tools for content management etc. than shoutcast has. Unfortunatly not (yet) a free RT mp3 encoder for Linux (same goes for shoutcast though).
http://icecast.linuxpower.org/
And it has the magic combination of three specific letters in its license...
-
One word:
ICECAST. A streaming mp3 sounds as good as a
.ra file at 50% greater kbps..
.. and it's free so I can stream
Mercury Bath, my friend's band, at no cost but bandwidth.. I'm running 128kbps/44.1stereo right now but IIRC I can push pretty much any valid mp3 combo, it's just a matter of me setting up a few more channels and resampling the trax..
btw: mpg123 and x11amp both take URLs for streaming MP3 on the command line..
Check out that ICECAST link above for a current broadcast list.. -
Interview with Loki
I guess they they haven't gotten to posting it yet, but we have an interview with Loki on linuxpower.org here