GTK+ 3 thoughts
作者: Matthias Clasen
日期: 2007-07-24

邮件内容如下:

During GUADEC, a lot of discussion has happened around the possibility of a GTK+ 3, and we (the core GTK+ maintainers) thought it would be a good idea to summarize our take on the ideas and on possible ways forward.

Current GTK+ is a dead end in terms of developing important new features. We can keep fixing bugs (there is an endless supply of more or less important bugs in bugzilla), and we can keep adding new features until the API documentation grows to the size of a phone book, but this is not going to turn GTK+ into a new and better toolkit.

There are number of well-known "problem" areas, where the current GTK+ is increasingly perceived as lacking, e.g

  • animation
  • scalable UI
  • canvas as foundation
  • extended size negotiation, width-for-height, etc
  • better theming api (css ?)
  • less redraws (for e.g. e-paper) All of these very much affect the core of GTK+, and are not easy to "bolt on" the current GTK+.

Most of us doubt that a GTK+ 3 that breaks API and/or ABI in small ways for cleanup and maintainability but preserves compatibility with existing GTK+ in almost all ways is a worthwhile project. A GTK+ 3 that is worthwhile doing would offer developers new and better ways to write applications, and offer users different and interesting user interfaces. The current GTK+ was largely designed and implemented 10 years ago; for GTK+ 3, we should step back and think about how people might use and design applications 10 years from now, taking inspiration from devices like the iPhone.

How do we get there ? It would clearly be inacceptable for us to just stop what we are doing now, and spend a few years developing a completely new toolkit from scratch. A large number of users rely on the continued maintenance of the stable GTK+ 2.x, and we are committed to continue this, with GTK+ 2.12 due in a roughly a month, and GTK+ 2.14 around next years Guadec.

What about compatibility ? Thousands of GTK+ applications are not going to be ported to a new toolkit overnight (if ever), so it would clearly be good if the transition could be gradual. We hope that it will be possible to have "bi-embeddability", ie allow using the "new stuff" like a canvas widget in a traditional GTK+ application, and allow using ordinary GTK+ widgets inside a "new style" application. This, in fact, means that 'GTK3' would not really be libgtk at all, but rather a new library in the GTK+ stack that takes over the widget toolkit role from libgtk.

We believe that the best approach towards a new GTK+ is an experimental one. People have already started doing experiments around some of the topics listed above, with projects like clutter, pigment, HippoCanvas, and others. We would like to encourage more experiments like these, and we are toying with the idea to have an "exhibition" or "bake-off" at the next Guadec, where could discuss and evaluate the outcome of these experiments.

There are no hard rules for these experiments, but it might be good to reuse the existing infrastructure around GTK+, such as Pango and cairo, and tackle some of the problems that we've listed above. Ideally with concrete application designs in mind that are hard or impossible to realize in current GTK+.