Way of the Monkey
November 2006
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Donate!
Projects
Tango Portfolio
Cool People
Anna Dirks
Andreas Nilsson
Andy Fitzsimmon
Frédéric Bellaiche
Hylke Bons
Jakub Steiner
Josef Vybiral
Olivier Charavel
Ryan Collier
Sebastian Kraft
Simon Pascal Klein
Steven Garrity
Tuomas Kuosmanen
Vinicius Depizzol
Recent Music
GTK+ Web Frameworks Tue, 07 Nov 2006 11:01:57 -0500

What does GNOME really need in terms of an HTML component? My first question for that would be to ask what one means by HTML component. Does that mean strictly displaying HTML? Does that include CSS? Javascript? Flash? Support for other scripting languages? Does it also need to handle XML/XSLT natively? What about networking? Do we leave that up to the application, or do we build in all the URI handling, and support for different transports, such as HTTP, FTP, SMB, SSH, and others? Some things to note about existing APIS are:

  • GtkHTML (3.x): Supports HTML fairly well, but doesn't handle CSS, JS, or networking. Does provide editing.
  • GtkHTML2: Supports HTML and CSS ok. Has the ability to support JS and other things fairly easily. It's been (very) slowly getting better. The API is a horrible mess of spaghetti though. Large API/ABI breakage is needed to take this project to any real heights.
  • GtkMozEmbed/xulrunner: Easy to embed any mozilla/xul app within your app. Hard to maintain compatibility between releases. Provides networking and a lot of things. Written in C++ so not ideal for the platform.
  • GtkWebCore: Very unstable. Nokia seems to have dropped the ball on this. Also written in C++, so not ideal for the platform.
  • KHTML: C++ and KDE. Definitely not an ideal dependency for the platform, as it would require pulling in much of the KDE libraries.

So, where does that leave us? Evolution uses GtkHTML 3.x, so moving it to a different widget/framework is likely to only add overhead, given the current state of things. Liferea, Web (Chris Lord's little embedded web browser), and Sylpheed-claws all use GtkHTML2. Epiphany, Yelp, Democracy, Galeon, and others use GtkMozEmbed/xulrunner. I don't think any apps use GtkWebCore, and KHTML is of course used by a bunch of KDE apps. GtkHTML2 could definitely satisfy our needs here, but it needs a lot of love. Some things it definitely needs are:

  • Re-architecting to not expose every piece of API it has, publically.
  • Printing support, which should be more feasible now with GTK+ 2.10.
  • Stable, documented API and ABI. This goes along with the first point above. We need to do a lot of API/ABI breakage to clean things up unfortunately.
  • Better integration by re-using other libraries, such as libcroco.
  • Internal handling of all the network stuff, so we can have a WebKit.

These are just a few things I thought of off the top of my head. There are plenty more I'm sure. But, with the right people helping out, we could easily turn it into a native GTK+ web framework.

If you're interested in making this happen, please feel free to send me a mail, or ping me on IRC or IM.




Ninja Monkey icon based on face-monkey icon from The Tango Project