Monday, August 02, 2004

making a port

I was browsing around the other day and ran across the infinitely cool Dashboard application for Gnome. This application basically throws up a window that displays contextually relevant information to the user. For instance, if the user was chatting with a friend on an instant messenger, the friends contact info, along with recent IM conversations and e-mails would be displayed in the window. Written in C# it is, in my humble opinion, quite a testament to the robustness of the Mono platform. After marvelling at how incredibly cool the app is, I realized that there was not a Windows version. A quick glance at the source code revealed to me that it would actually be relatively easy to port a large majority of the code over to Windows. And so, after two or three days of hacking away at it, I've finally produced a relatively simple Windows port of the application. Perhaps one day, I'll actually find somewhere to host it.

The core engine is not all that impressive in terms of complexity, but it does allow for a fairly robust feature set. The application is driven by three items, a frontend, a backend, and a renderer. The frontend is the bit that monitors the source applications and sends messages (clues) to the engine. Once the engine receives one or more clues, it queries each of the loaded backends for the given keywords. The backends are the pieces that scour their respective data sources for matches to the clues. If any are found, the results are sent back to the engine to be rendered using a renderer specified by the back end. That's it! So far, I've managed to port most features of the engine, as well as a Google searching backend, a Mozilla bookmarks backend, and a simple frontend that sends clues from the commandline. There's still lots of frontends and backends to be written, and I imagine that they are going to give me quite the crash course on programming plugins for various Windows apps, but I look forward to the challenge! And I'm probably attacking the most difficult plugin target first: Miranda!

No comments: