GLib Version Requirement

GLib is GStreamer's main dependency.

We want to make use of new GLib API over time (and benefit from bug fixes of course), but we also don't want to make life unnecessarily difficult for developers, users and system integrators who want to deploy a newer version of GStreamer than the one that is shipped with their distro/system by requiring a bleeding edge version of GLib. So a balance has to be struck.

Keeping things predictable is likely to be valuable for system integrators and anyone else deploying GStreamer or GStreamer-based applications, and keeping things moving forward slowly but certainly without requiring endless discussions whenever someone wants to bump the requirement is likely to benefit developers.

To this effect, the proposed (and, dare I say, generally accepted amongst developers) solution was something along these lines:

The Policy

  • whenever we release core/base, we look into bumping the GLib requirement for core/base (ie. right after the core/base release, not for the release itself)
  • we then look at all (stable) GLib 2.N.1 releases that are older than ~12 months, and pick the highest N. That's our new GLIB_REQ then.
  • plugin modules should follow the GLib requirement of their core/base requirement (highest wins) or make plugins which require a newer version optional
    This will roughly result in a schedule like this:

Estimated GLib requirement of core/base versions

1.0

  • 1.0.0, to be released around 23-Sep-2012: GLib 2.32
  • 1.0.x, same as 1.0.0
  • 1.2.0, to be released around Feb/March-2013: GLib 2.32
  • 1.2.x, same as 1.2.0
  • 1.4.0, to be released Q2-Q3 2013: 2.34
  • 1.4.x, same as 1.4.0

0.10

(this is based on the original proposal to check after each release; Mike suggested to only check after every second release, but that doesn't really seem to change that much in practice)

  • 0.10.23, released around 20-Apr-2009: GLib 2.14
  • check glib req in Apr 2009 => 2.16
  • 0.10.24, released around 04-Aug-2009: GLib 2.16
  • check glib req in Aug 2009 => 2.16
  • 0.10.25, released around 02-Oct-2009: GLib 2.16
  • check glib req in October 2009 => 2.18
  • 0.10.26, released around 10-Feb-2010: GLib 2.18
  • check glib req in February 2010 => 2.18
  • 0.10.27, released around 05-Mar-2010: GLib 2.18
  • check glib req in March 2010 => 2.18
  • 0.10.28, released around 09-Mar-2010: GLib 2.18
  • check glib req in March 2010 => 2.18
  • 0.10.29, released around 28-Apr-2010: GLib 2.18
  • check glib req in April 2010 => 2.20
  • 0.10.30, released around 16-Jul-2010: GLib 2.20
  • check glib req in July 2010 => 2.20
  • 0.10.31, released around 30-Nov-2010: GLib 2.20
  • check glib req in November 2010 => 2.22
  • 0.10.32, released around 21-Jan-2011: GLib 2.22
  • check glib req in January 2011 => 2.22
  • 0.10.33, released around 10-May-2011: Glib 2.22
  • 0.10.34, released around 13-May-2011: Glib 2.22
  • check glib req in May 2011 => 2.24
  • 0.10.35, released around 15-Jun-2011: GLib 2.24
  • 0.10.36, released around 20-Feb-2012: Glib 2.24

GLib major versions release dates (for reference)

(glib source directory on ftp.gnome.org)

  • 2.12.1: 22-Jul-2006
  • 2.14.1: 16-Sep-2007
  • 2.16.1: 11-Mar-2008
  • 2.18.1: 18-Sep-2008
  • 2.20.1: 10-Apr-2009
  • 2.22.1: 30-Sep-2009
  • 2.24.1: 03-May-2010
  • 2.26.1: 14-Nov-2010
  • 2.28.1: 18-Feb-2011
  • 2.30.1: 14-Oct-2011
  • 2.32.1: 14-Apr-2012
  • 2.34.1: 16-Oct-2012
  • 2.36.1: tbd. (ca. April 2013)

See Also