The argument for Qt-nghost3
Over the past 2 years developing nghost, I've learned a lot about a number of different things. One thing I've noticed is how technical issues can really effect your end goal.
As many of you know, nGhost2 runs big. It consumes a lot of memory because it stores all graphics in system memory instead of using your video memory. This is a technical limitation of using SDL's software rendering for the underlying graphics. Also, because it's in software rendering land, eye-candy effects are not possible, or would run terribly slow, even on new hardware.
To add to that, nGhost2 development is slow. We've basically created our own framework for building nGhost (hence libnghost). We've done many things like thread and process management, database, and GUI from scratch. Every time we want to add a new feature, many times we have to write the underlying infrastructure code to support the feature. This adds to the development time, and discourages new developers (they have to learn yet another system).
This has led me to take a look at well established toolkits and frameworks. First we looked at clutter. Clutter allows for beautiful eyecandy and effects. It's OpenGL accelerated, low footprint, and has gstreamer bindings for media playback. However, it lacks nice things like thread and process management, dbus controls, and we'd still have to write our own GUI elements for things like listboxes, input boxes, etc. It's also written in C, so in order to use it with code we've already written, specifically our database engine, we'd have to wrap many things in c++ code. Not fun at all.
Compare that with a toolkit like Qt. Qt has the ability to use an OpenGL canvas and embed Qt widgets inside. Qt has thread and process management features. Qt is c++. Qt has nice DBus bindings, phonon media backend, xml parsers, etc.
I believe that we can achieve the same eyecandy goodness as clutter and gain accelerate development by using Qt in nGhost3. It likely would run faster and use less memory than nGhost2. It would save us time not having to develop much infrastructure code. Features could be developed fast, and I believe it would interest more developers to use and develop nGhost because it's much easier to develop Qt than to learn yet another system in clutter+ng3 tools.
I'd like to hear what the community thinks of the idea. I want to start development on this soon. So feedback is key.
If we do use Qt for ng3, some may wonder: "Since Qt is cross platform, will nGhost be cross-platform as well?" The answer to this I will answer now:
In ng3 we want to extensively use niceties like DBus, inotify, etc which don't exist in the windows/mac-osx worlds. There are ways to disable these, if they were developed as plugins to make cross-platformness possible. However, unless there is a huge demand from the community for nGhost on platformX, we will develop ng3 only for Linux. If you feel differently, make your voice heard now.