[Gtk-sharp-list] Gtk# Roadmap

Mike Kestner mkestner@ximian.com
Fri, 02 Jul 2004 17:12:51 -0500

There's been some confusion over recent statements I've made both here
and on my blog recently about 1.0 and the future development plans. In
order to clarify some lingering issues, here is the situation as I see
it as of this afternoon.

Gtk# 1.0 is out the door.  Yay!  Gtk# 1.0 is good.  Gtk# 1.0 is not
perfect, but it is a stable release, and it is possible to write
substantial applications with it.  MonoDevelop, the monodoc browser,
iFolder, Blam!, Muine, Gnunit, and numerous other applications are good
examples of what can be done with Gtk# 1.0.  Please use it.  

So what's next for Gtk#?

The 1.x version series of Gtk# will be focused on the Gnome 2.2 library
versions. Since Gtk# 1.0 is not a perfect binding of the 2.2 API, we are
going to have to "break API stability" in some cases in order to make
sure that all of the underlying C API can be accessed from the binding. 
As I have indicated in the past, under no circumstances within the 1.x
series will we intentionally change or remove existing API from 1.0 that
is usable in its current form, just to make it more beautiful.  If you
are using an API call in 1.0 and it does what it's supposed to in 1.0,
it should not change under you in any 1.x release.

What will we change in 1.x releases?

If an API wrapper is broken and *unusable* in its current form in 1.0,
please file a bug report.  We will be fixing such API breakages in 1.x. 
I realize this amounts to an "API instability" but I see no point to
keeping a completely unusable API element stable.  

In addition, if a C API element of a currently bound library is missing
from 1.0, we will be able to add a binding for that element in 1.x. 
Finally, we will allow the addition of convenience overloads for
existing methods in the case that there are well established defaults
for the eliminated parameters in the underlying C API, such as NULL.

All 1.x releases will ship a new set of assemblies versioned as
1.x.0.0.  This allows us to parallel install with 1.0 and leave the
existing assemblies in place in the GAC, allowing all existing
applications to continue to load them.  Installing Gtk# 1.1 will leave
the 1.0 GAC assemblies in place, install a new set of assemblies
versioned into the GAC, and replace the "development" linkages
to point to the newer assemblies so that future compilations
reference the assemblies. 

Currently we are only planning one more release for the 1.x series:

Goals:  100% documentation coverage. 0 known fixable (under the API
stability rules above) defects as exposed by the documentation effort.

Start date: today
1.0.90 Beta Release: 1 Sep 2004
1.0.99 RC Release: 22 Sep 2004
1.1 Release: 1 Oct 2004  

After 1.1, we will branch in the event we need to come back for a
subsequent 1.2 release.  We will then move the cvs trunk to target the
GNOME 2.6 release set and begin the Gtk# 2.0 series, hopefully with an
initial shakedown release by the end of October.

So that's the plan for the next few months.  It is heavy on
documentation and fixing whatever can be fixed in what we have already
bound, before moving on to newer things.  I can't stress enough the
importance of the documentation effort.  Not only does it make the
binding easier to use, but it is exposing improperly bound API which we
can now fix.  We need to document the entire API before 1.1.

If anybody has any concerns with this plan, please bring them up now.
Otherwise, it's full speed ahead.

Mike Kestner <mkestner@ximian.com>