Notice of removal of GTK+ 2 support

From Inkscape Wiki
Revision as of 12:17, 6 March 2017 by Tavmjong (talk | contribs) (→‎Technical implementation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

Key points

  • 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:
    1. If you want a preview of Inkscape 0.92.x: use the lp:inkscape/0.92.x branch, and continue building against GTK+ 2.
    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!

Technical implementation

  • [done] Branch 0.92 development to lp:inkscape/0.92.x
  • [done] Remove build-system tests for GTK+ 2 in lp:inkscape
  • [done] Enforce hard GTK+ 3 dependency in build-system
  • [done] Delete all GTK+ 2 fallback code blocks