For option 1 - 4, there needs to be a decision between Gtk and Qt. Here's some thought I have, but nothing is set in stone: **Pros for Gtk:** * gobject's object model is inspired by Objective-C, so pretty compatible * Gtk apps look good on GNOME and KDE (KDE can make it look like a native app), it looks OK on Windows * Gtk is written in pure C, so we would not need to make sure that our headers contain no C++ (even transitivly) * There is gobject-introspection that should make it easier to create bindings **Cons for Gtk:** * It looks meh on Mac, but is still fully functional **Pros for Qt:** * It looks good on Windows, KDE, Mac **Cons for Qt:** * It is written in C++ and special care needs to be taken that the GUI framework does not end up with headers that need C++. That means redefining every enum as a C enum and wrapping absolutely every class. It also means often using void pointers and lose type safety. * It uses multiple inheritance which does not work with the Objective-C object model, so this needs to be hacked around. * Qt apps still look alien under GNOME, despite some attempts to make that better. **Open questions for Qt:** * Is there something like gobject-introspection that can make it easier to create bindings? Anything else I forgot?