Notice of removal of GTK+ 2 support

From Inkscape Wiki
Jump to: navigation, search

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