These are just some suggestions, not hard and fast rules. However, following them makes everyone's life easier (IMHO). -- Elliot --------------------------------------------------------- Functions should return 0 upon success, and an error code upon failure Use the glib types whenever appropriate. Use the g_new/g_new0/g_malloc/g_strdup/g_free functions. Use GMemChunk's whenever possible, especially when allocating lots of fixed-size memory blocks (see allocators.h and allocator-defs.h for memory chunk stuff). If you have both a structure and a typedef mapping onto that structure, name the structure typename_struct, e.g. struct MyType_struct { ... }; typedef struct MyType_struct MyType; Macros should be in uppercase as much as is sane, to distinguish them from regular functions. If you can, use the _ to separate parts of a function name (ORBit_typename_foo instead of ORBitTypenameFoo() ). If possible, name functions of the form: namespace_typename_method()