## page was renamed from Gnome3PortingGuide ##Content copied from JavierJardon/Gnome3PortGuide = Port your application from GNOME 2 to GNOME 3 = <> GNOME's developer technologies have been dramatically improved for version 3.0, making them faster, easier to use, and delivering enhanced user experiences. If you are responsible for an application which makes use of GNOME's developer technologies, it is recommended that you port to GNOME 3 in order to take advantage of these improvements. The following guide is a checklist of the steps required to port a piece of GNOME 2 software to version 3. == Essential == The following procedures are essential parts of the porting process: * Do not use deprecated libraries: * libglade: use [[https://developer.gnome.org/gtk3/stable/GtkBuilder.html|GtkBuilder]] instead. * [[https://developer.gnome.org/gtk2/stable/gtk-migrating-GtkBuilder.html|Migration guide]] * [[Initiatives/GnomeGoals/RemoveLibGladeUseGtkBuilder|GNOME Goal]] * libgnome, libgnomeui: use GTK+ features directly instead. * [[Attic/LibgnomeMustDie|List of replacements]] * libsexy: use GTK+ features directly instead. * Migration guide for [[https://developer.gnome.org/gtk2/stable/gtk-migrating-entry-icons.html|SexyIconEntry]] and [[https://developer.gnome.org/gtk2/stable/gtk-migrating-label-links.html|SexyUrlLabel]] * [[Initiatives/GnomeGoals/DropLibsexy|GNOME Goal]] * gnome-vfs: use GIO instead. * [[https://developer.gnome.org/gio/stable/migrating.html|migration guide]] * [[Initiatives/GnomeGoals/GioPort|GNOME Goal]] * Bonobo: use GTK+ features and [[https://developer.gnome.org/gio/stable/gdbus-convenience.html|GDBus]] (see below). * Make your GTK+ 2 application GTK+ 3 compliant: * Only use ''toplevel'' Glib / GTK+ headers: * [[Initiatives/GnomeGoals/CleanupGTKIncludes|GNOME Goal]] * Do not use deprecated GLib / GTK+ symbols: * [[https://developer.gnome.org/gtk3/stable/migrating.html|Guides to migrate to the new APIs]] * [[Initiatives/GnomeGoals/RemoveDeprecatedSymbols/Glib|GNOME Goal for GLib]] * [[Initiatives/GnomeGoals/RemoveDeprecatedSymbols/GTK+|GNOME Goal for GTK+]] * Compile your app with -DGSEAL_ENABLE: * [[Initiatives/GnomeGoals/UseGseal|GNOME Goal]] * Use Cairo instead deprecated GDK api: * [[Initiatives/GnomeGoals/GDKtoCairo|GNOME Goal]] * Port your GTK+ 2 application to GTK+ 3: [[https://developer.gnome.org/gtk3/stable/gtk-migrating-2-to-3.html|migration guide]] * Fix your .desktop file: [[Initiatives/GnomeGoals/CorrectDesktopFiles|GNOME Goal]] * Use [[Design/OS/SymbolicIcons|-symbolic icons]] in the cases specified in the [[https://developer.gnome.org/hig/stable/icons-and-artwork.html.en|GNOME HIG]]. More information: * [[http://www.hadess.net/2010/04/symbolic-icons-support-in-gtk.html|Symbolic icon migration guide]] * [[GnomeBug:613717|An example patch]] * Include a high-resolution application icon. Sizes covered should include 16x16, 22x22 (24x24), 32x32, 48x48 and 256x256. * See the [[DraftSpecs/ThemableAppSpecificIcons|installation instructions]] and [[http://tango.freedesktop.org/Tango_Icon_Theme_Guidelines|style guide]]. * [[Initiatives/GnomeGoals/HighResolutionAppIcons|GNOME Goal]] * If your application reads proxy configuration from GConf (such as the keys under /system/proxy), you will need to update your code to look at the new DConf proxy keys. See [[DevGnomeOrg/Gnome3PortingGuide/ProxyConfiguration]]. == Additional steps == While these are not essential, the following steps are advised. They will prevent you from having to do further porting work in the future, and will enable you to take advantage of the full range of the improvements in GNOME 3. * Port your application to [[https://developer.gnome.org/gtk3/stable/GtkApplication.html|GtkApplication]], particularly if you are using [[Attic/LibUnique|libunique]]. * Use [[https://developer.gnome.org/gio/stable/GSettings.html|GSettings]] instead of GConf. * [[https://developer.gnome.org/gio/stable/migrating.html|Migration guide]] * [[Initiatives/GnomeGoals/GSettingsMigration|GNOME Goal]] * Use [[https://developer.gnome.org/gio/stable/gdbus-convenience.html|GDBus]] instead of dbus-glib. * [[https://developer.gnome.org/gio/stable/migrating.html|Migration guide]] * Port your documentation to the new [[http://projectmallard.org/|Mallard format]]. * Add [[Projects/GObjectIntrospection|GObject Introspection]] support to your library. * [[Initiatives/GnomeGoals/AddGObjectIntrospectionSupport|GNOME Goal]] * Use the correct icon names: [[Initiatives/GnomeGoals/CorrectIconNames|GNOME Goal]]. * If you use Python, move to the new introspection-based [[Projects/PyGObject|PyGObject]] bindings. * [[Initiatives/GnomeGoals/PythonIntrospectionPorting|GNOME Goal]] * Use the [[http://standards.freedesktop.org/basedir-spec/latest/ar01s03.html|XDG Base Directory Specification]]. * [[Initiatives/GnomeGoals/XDGConfigFolders|GNOME Goal]] * If your module installs a panel applet, write a [[Projects/GnomeShell|gnome-shell]] extension instead. All the content of this page is under [[http://creativecommons.org/licenses/by/3.0/|Creative Commons Attribution 3.0 License]] {{http://i.creativecommons.org/l/by/3.0/88x31.png}}