[9/19/2011] If a consensus emerges, this page will evolve into a page describing solutions rather than problems. For the moment, I am hoping to build consensus on the problem, so that I can make sure that I am addressing the right issues.

This page is prompted by my attempts, as a new user, to start building cross-platform applications using GTK+. While I'm interested in advancing the toolkit per se, my initial goal was to be a "consumer" of the various GTK libraries. I wanted to focus on the needs and requirements of my application, rather than the needs and requirements of GTK+. Here is what I found:

  • While the current stable version of GTK+ is version 3.x, there are no Windows or OS X installers for those development libraries and tools.
  • Build on OS X is broken, partly because OS X Lion has just released, but also because the build process attempts to build dependencies from the respective repositories instead of the released versions.
  • Various utilities, notably Glade, aren't available in easily installable form.
  • Attempting to build from scratch fails on OS X because of the build process used, and on Win7 because the 64-bit mingw environment isn't easy to install.

Most of this is not a fault in GTK. A lot of the problem lies in the fact that GTK is itself built on multiple platforms, and there doesn't appear to be a set of consistent tools and libraries across platforms. It is tempting to say "we should always move forward to the latest version of component X for the sake of the latest bug fixes and security enhancements", but in a cross-platform toolkit it is important to move forward on all platforms at the same time. If we don't, then the application developer is forced to maintain platform-specific patch sets. Not because there were platform-dependent issues, but because the portability layer succumbed to version drift.

Speaking as an application developer, here is what I think I want:

  • A consistent set of library versions against which to build. That is: I want the same library version to be present on each of my target platforms.
  • A consistent set of tool versions that are used to perform the build of GTK/GTKMM and the installable libraries.

  • A version-consistent set of installers for (a) distributables, and (b) SDKs (developer versions). These should be fabricated on the assumption that the application developer is not a GTK developer. A single developer may play both roles, but quality assurance and software process for applications demands a level of consistency that is quite different from the needs of an active GTK+ developer.

Given that I have access to all of the desktop platforms of interest, I would be willing to try to pull together this type of consistent cross-platform environment. Before I do, I'd like reaction on whether this effort seems useful and relevant. Perhaps your needs lie in a completely different direction, and I'm the only one who is wrestling with these issues.

If others agree that these issues are real, then here is what I propose to do:

  • Identify a useful set of libraries for which we would like to have cross-platform versions. libxml is probably at the top of my list.

  • Identify a common set of tool versions to be used for cross-platform build of those libraries.
  • Create a set of [installable] binary development environments that incorporate these.
  • Establish a consistently versioned set of GTK/GTKMM libraries that exist across multiple platforms.

What I want to know for now is: if this existed, would it be useful? If so, then the next step would be to enumerate the libraries of interest for the target environment.

I personally have access to build environments for Win7, OS X Lion, and multiple editions of Linux. I have no experience with the various embedded targets, and that is an area where I think this would need help.

Realistically, my goals here go beyond the scope of GTK+. That said, I think that something like this is necessary in order to make GTK+ useful.

But before we go any further, reactions?

Attic/ProductionCrossPlatform (last edited 2013-11-23 01:04:37 by WilliamJonMcCann)