05 Feb 2004
Thu, 05 Feb 2004
Aggravator - Mono, Glade, GTK#, RSS News Feed Aggregator
The remaining major itch in my linux desktop foray was the lack of a reasonable X Windows RSS aggregator. Oh sure, there are a few out there, straw and the one that Sam Ruby did in wxPython, but they don't quite come together in the same way as SharpReader on Windows, for instance. I finally scratched that itch over the weekend and built one in C# using Mono, GTK#, Glade Sharp, and GtkHtml. I used MonoLogue and RSS.NET as a basis for the plumbing and put together my own 2-paned interface on top of it. Why 2 panes? Well, 3 pane is overdone, and GtkTreeView combines list and tree view functionality such that the extra list view in the traditional 3 pane model is superfluous. I also use a widescreen 1280x800 display on my laptop so my screen real estate is somewhat wider and shorter than the average desktop. Anyhow, here it is:
I'm thinking of releasing the source, not sure whether to write an article around it, or give it to the mono hackers for inclusion into the mono samples. Please send thoughts on the subject to david AT watson DOT cc.
My experience with Mono this time around was generally positive. They've made tremendous progress, particularly in the area of web services. Notably, asp.net [webmethod] declarations work and generate most of the service description page including the client side proxy. The generated client side proxies also work.
I was pleased to find that I could define my UI declaratively using XML in glade. Unfortunately, there is still a lot of tacit knowledge necessary to keep from hurting yourself with glade-2. In particular, I found that if I did something requiring gnome in glade-2, then my program started throwing a lot of exceptions, which I believe are related to gnome not being initialized properly, but it was not clear how to initialize gnome properly in this context, ie. I had called app init which I thought was adequate.
In addition, my program would lock and stop responding randomly, while throwing no exceptions save for an invalid pointer free(). This was discouraging as it's very difficult to debug. I didn't have the debugger built and to the best of my knowledge it's not being installed with the RPMs.
When I tried to deploy my application on windows, I discovered that there is no gtkhtml installed by the windows binaries so the program won't run. I didn't take the time to figure out how to build it and I'm not sure why it's not included by default, which brings me to my next point.
Conistent with java, the biggest problem that coders face building this type of program is that there's not a feature-complete embeddable browser component, along the lines of the IE COM control on windows. I understand there is some debate about whether gtkhtml or gtkhtml2 is the defacto html view code. Regardless, the user experience with gtkhtml is suboptimal, in particular, images don't seem to work and CSS appears to be broken. This remains a huge limiting factor in producing feature complete applications that display HTML across multiple platforms.
The other major limiting factor is the lack of a compelling IDE that's remotely close to the level of integration that you get with visual studio. Using a large number of tools across many windows is just annoying as hell and generally low productivity when trying to produce GUI applications. The mono hackers have a port of sharpdevelop called monodevelop but it's only in subversion and cvs requiring a login, not anon-cvs. Sigh. The eclipse C# plugin just doesn't cut it.
Posted at: 00:21 | permalink