Why GObjects?

  • Very friendly to language bindings and dynamic programming.

    • Introspection is possible (e.g. see gtk-doc)

    • Parameters and signals comes with description strings (which should be filled in). Presenting help and tooltips is therefore simple.

  • Some restraint is required!

    • Not everything should be a GObject. Some performance impact (but don't overrate this problem.

    • As a general rule: use GObjects for externally visible data structures. They are a bit more powerful than straight C structures (more language-binding friendly, for a start).

    • Use GObjects when using signals + callbacks to communicate data and state changes is a good idea.