Notice of removal of GTK+ 2 support
Inkscape trunk (lp:inkscape) will soon stop supporting GTK+ 2 builds. This page details what package maintainers and developers need to know about the transition.
- The current stable release of Inkscape (0.92) release should be compiled using GTK+ 2.
- The stable release (0.92) may be compiled (experimentally) using GTK+ 3 but this is not recommended for distribution.
- Inkscape 0.92 release is developed in the lp:inkscape/0.92.x branch on Launchpad.
- Inkscape trunk requires GTK+ 3.
Why can't we continue supporting both GTK+ 2 and GTK+ 3?
There is consensus among the active Inkscape developers that we have reached a point where it is no longer practical to support two versions of GTK+. Some key reasons for this decision are:
- It is effectively impossible to provide good rendering performance under both GTK+ 2 and 3 (see Bug #1571192). As such, we need to choose one version of GTK+ and optimise our code accordingly.
- GTK+ 3 introduced many incompatible API changes, and we currently have around 800 (and growing!) conditional build blocks in the Inkscape codebase. This is extremely difficult to maintain.
- By simplifying the code (i.e., removing GTK+ 2 fallbacks), the barrier for new developers to join the project will be much lower.
- Taking full advantage of new GTK+ 3 features would be effectively impossible without dropping support for GTK+ 2.
- The user experience is different for GTK+ 2 and GTK+ 3 builds, making it hard to provide support.
- The sizing and layout of widgets is different in GTK+ 3, making it difficult to provide a satisfactory design for the UI in both versions.
What does this mean for package maintainers?
- For the Inkscape 0.92 release, no major changes will be needed to downstream packaging.
- For subsequent releases, you must update build dependencies to versions 3.x of GTK+, GDK+, GTKmm, and GDKmm. You must also provide the GNOME Docking Library (GDL) as a new build dependency.
- If you provide a “nightly” preview release of Inkscape trunk, you have two choices:
- If you want a preview of Inkscape 0.92.x: use the lp:inkscape/0.92.x branch, and continue building against GTK+ 2.
- If you want a preview of the “bleeding edge” Inkscape 0.93: continue using the lp:inkscape branch, and update your build dependencies to GTK+ 3.
What does this mean for Inkscape developers?
- All subsequent development in lp:inkscape will require GTK+ 3 development libraries.
- Please see the GTK+ 3 migration page for details.
- Back-porting UI bug fixes from trunk to Inkscape 0.92 has become more difficult. Please try to make fixes as portable as possible!
- [done] Branch 0.92 development to lp:inkscape/0.92.x
- Remove build-system tests for GTK+ 2 in lp:inkscape
- Enforce hard GTK+ 3 dependency in build-system
- Delete all GTK+ 2 fallback code blocks