XulRunner/Gecko seems to be really interesting for developing GUI-intensive applications (by using widely used technologies such as HTML / CSS / SVG / XUL / Javascript). But the underlaying C++ APIS (XPCOM, NECKO, …) looks so old and complex. Moreover the general lack of documentation/developper tools is really frightening.
On the other hand, QT have a quite nice platform, and is well documented and supported. The UI part is really “traditional” though.
What are your experiences with XULRUNNER, specially compared to other C++ desktop applications frameworks such as QT/GTK/MFC…? What is missing? What is awesome?
Side question: If I wanted to migrate an existing MFC app to a cross platform C++ desktop application framework, would it be wise to use XULRUNNER instead of QT or GTK?
There aren’t actually that many applications built using XulRunner, as far as I’m aware. And I should know, as I was Tech Lead for one of them and we tried to hire experienced people. In hindsight, this doesn’t surprise me. Our decision to use XulRunner was made by a non-developer, against my advice. Many things took twice the time they would have taken in wxWidgets, which we used before. Now I have also used Qt in other projects, and I’d have to say it’s even better than wxWidgets. So I can fairly reliably state that Qt will be more than twice as efficient as XulRunner, and besides you will have a much easier time finding experienced developers.
Sure, Javascript in XulRunner is nice. But Qt also comes with QtScript, which wraps JavaScriptCore. And when it comes to building truly rich UI’s – i.e. more than just a stack of images – then HTML+SVG+CSS+JS just don’t cut it. They were developed to make simple things easy, not to make complex things possible. Just look at the newest feature, video. HTML5’s solution: a tag, and let some C++ code behind the scenes do the real work. Even though video is just a big stack of images shown one at a time.
So, the problem isn’t so much that there are things missing. It’s just that development is slow, and the result is slow.
On the awesome side, the plugin mechanism actually works quite well.
Now, this all applies if you start from scratch. If you already have a lot of MFC/C++ code, stick with C++ and drop only the MFC part. That means Qt or possibly wxWidgets are the obvious winners.