HTML rendering is hard

wxWidgets is a nice, easy-to-use cross platform toolkit for writing desktop applications. It exists for many different languages including Ruby and Python.

It includes an HTML renderer.

On Windows this uses the IE renderer.
On OSX it uses the webkit renderer.
On Linux it uses, er, some code that this guy wrote, y’know? It doesn’t support CSS.

This means that my desktop aggregator does not work very well on Linux, which is currently my primary use case.

It’s possible to use wxMozilla but that was seemingly abandoned in 2005.

It’s possible to use wxWebkit but the instructions for that start with “check the source of webkit out of svn” and ends with “the Python bindings don’t work yet”.

GTK is an easy-to-use toolkit for writing desktop applications. It is nominally cross-platform (but I wouldn’t want to push the matter). It can use WebKitGtk.

I appear to be at a frustrating fork in the road.

NewsGator + Venus?

I recently broke the graphics drivers on my Windows Vista installation, so re-partitioned and now run Ubuntu full-time at home.

On Windows I use FeedDemon as my full-time aggregator. It has a degree of speed and polish unmatched by any other web or desktop aggregator.

This means that all my feeds are automatically synced with newsgator.com – a web-based aggregator which is not fast and not particularly polished. Although it might be polished, I don’t know, it’s so slow that I tend to just give up (sync with Google Reader is coming).

FeedDemon has significantly raised the bar for any aggregator I use. Web-based tools no longer cut it, in particular when I have hundreds of feeds and, at times, thousands of unread items.

On Ubuntu the options for a native aggregator are Straw or Liferea. Both are currently undergoing rewrites. Liferea seems like the better option for me, and it has a plugin system which is appealing, but there’s no sync with any online tools.

NewsGator have an HTTP-basd API (PDF reference and sample code which requires a minor tweak to run) which is quite straightforward. It gives back data which can be consumed by the Universal Feed Parser. Venus uses the Universal Feed Parser in planet/spider.py after fetching data to create the cache which powers it.

This time last year I wrote a very very basic wxWidgets tool for browsing the Venus cache. A modification to planet/spider.py to use the NewsGator API would seem like an easy way forward, whilst gaining all the power of the Venus filters, plugins and existing XSLTs.

I might just have to try that.