diff --git a/docs/reference/gtk/Makefile.am b/docs/reference/gtk/Makefile.am
index a9ca65d370..3e3df0d2b6 100644
--- a/docs/reference/gtk/Makefile.am
+++ b/docs/reference/gtk/Makefile.am
@@ -126,6 +126,7 @@ content_files = \
directfb.sgml \
drawing-model.xml \
glossary.xml \
+ migrating-2to3.xml \
migrating-checklist.sgml \
migrating-ClientSideWindows.sgml \
migrating-GtkAboutDialog.sgml \
@@ -157,6 +158,7 @@ content_files = \
expand_content_files = \
drawing-model.xml \
glossary.xml \
+ migrating-2to3.xml \
migrating-checklist.sgml \
migrating-ClientSideWindows.sgml \
migrating-GtkAction.sgml \
diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml
index 24595fa4f9..bb2b630dc2 100644
--- a/docs/reference/gtk/gtk-docs.sgml
+++ b/docs/reference/gtk/gtk-docs.sgml
@@ -400,6 +400,7 @@ that is, GUI components such as #GtkButton or #GtkTextView.
+
diff --git a/docs/reference/gtk/migrating-2to3.xml b/docs/reference/gtk/migrating-2to3.xml
new file mode 100644
index 0000000000..7ef2b3c277
--- /dev/null
+++ b/docs/reference/gtk/migrating-2to3.xml
@@ -0,0 +1,69 @@
+
+
+
+ Migrating from 2.x to 3.x
+
+
+ Only single includes
+
+ Make sure your program only include the toplevel headers:
+
+ make CFLAGS+="-DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES"
+
+
+
+
+
+ Do not use deprecated symbols
+
+ Make sure your program doesn't use any deprecated functions:
+
+ make CFLAGS+="-DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
+
+
+
+
+
+ Use accessor funcions instead direc access
+
+ GTK+ 3 removed many implementation details and struct members from
+ its public headers. To ensure that your application will not have problems
+ with this, you can define the preprocessor symbol GSEAL_ENABLE. This will
+ make the compiler catch all uses of direct access to struct fields so that
+ you can go through them one by one and replace them with a call to an
+ accessor function instead.
+
+ make CFLAGS+="-DGSEAL_ENABLE"
+
+
+
+
+
+ GTK+ Modules
+
+ Some GNOME modules install GTK+ modules. Since GTK+ 3 will be
+ parallel-installable with GTK+ 2.x, the two have separate locations for
+ their loadable modules. The location for GTK+ 2.x is $libdir/gtk-2.0
+ (and its subdirectories), for GTK+ 3, the location is $libdir/gtk-3.0
+ (and its subdirectories).
+
+
+ For some kinds of modules, namely im modules and pixbuf loaders,
+ GTK+ keeps a cache file with extra information about the modules.
+ These cache files are located in $sysconfdir/gtk-2.0 for GTK+ 2.x.
+ For GTK+ 3, they have been moved to $libdir/gtk-3.0/3.0.0/.
+ The commands that create these cache files have been renamed with a -3
+ suffix to make them parallel-installable.
+
+
+ Note that GTK+ modules often link against libgtk, libgdk-pixbuf, etc.
+ If that is the case for your module, you have to be careful to link the
+ GTK+ 2.x version of your module against the 2.x version of the libraries,
+ and the GTK+ 3 version against hte 3.x versions. Loading a module linked
+ against libgtk 2.x into an application using GTK+ 3 will lead to
+ unhappiness and must be avoided.
+
+
+