Almost all Gnome applications should support a common set of features. This checklist summarizes the most important ones. Always remember: Gnome is a direct response to the problem of application heterogeneity in the X environment, and one of the most important goals of any Gnome application should be look-and-feel consistent with other Gnome applications, starting with the source code seen by programmers and ending with the spiffy GUI you present to users.
Create a standards-compliant source tree. Use the Gnome autoconf macros, or the gnome-config script, to reliably locate the Gnome libraries and header files.
Include a README describing the package.
Include the standard INSTALL file describing how to compile and install the package; change the standard file to reflect anything specific to your application.
Include a copyright, in a file called COPYING.
Internationalize your application with GNU gettext and the standard C library functions.
Include the intl directory with your application, so users can build the application without having gettext. Include intl in your header file search path.
Define the G_LOG_DOMAIN preprocessor symbol to identify the origin of glib error messages.
Define the GNOMELOCALEDIR preprocessor symbol so Gnome can find translation files.
Install a .desktop file so your application will appear on the Gnome desktop's menus.
Install help files along with topic.dat files so the Gnome help browser can locate them.
Be sure the make distcheck target works; this is will catch many common makefile errors.
Set up a popt argument parser; at a minimum, you will probably want to support a --geometry option.
All configuration should be possible via the GUI; the easiest way to achieve this is with the Gnome configuration library.
Your application should support session management; at a minimum, it should save and restore the currently open documents.
If appropriate, use the GnomeApp for your main document windows; this widget gives Gnome applications a consistent look-and-feel.
Call gtk_window_set_wmclass() to set the class hint on your windows, so users can customize how window managers treat them.
Use GnomeUIInfo to create menus and toolbars; when appropriate, use the Gnome macros for standard menu items.
Add a status bar to display hints for the menu items, and any other status your application has to report.
Use GnomeDialog and its subclasses for your dialogs.
Add online help, including tooltips and documentation for display in the help browser.
Keep a ChangeLog detailing changes to your source code. This will help other people understand the evolution of the application, and help you understand why you made certain changes years later.