Avahi is another implementation for Apple’s Bonjour protocol, that this time seems to be cleanroomed using glib, dbus and having bindings for Python and Qt. Avahi is also a GPL product, that makes it more appealing for GNU lovers (I usually prefer looking at the technical side of matters, instead of licensing). One of the strong points of Avahi is that has libraries to be compatible with howl and mdnsresponder, the two other implementations that are often used to enable software to use Bonjour.
Why this is a strong point? Because it allows to run a single responder instead of having to choose between mDNSResponder and mDNSResponderPosix.
To make use of this feature, tho, the programs linking to howl or mdnsresponder needs to be changed to depend on avahi and to link to that instead of the original libraries; the change is not exactly trivial.
Today, after a quick mail exchange with Sven, I added to mt-daapd the support for using avahi instead of howl, by adding an extra avahi flag conditioned to howl flag. It seems to work fine from the base view, while I can’t add two mt-daapd sessions to avahi for some reason. I’ve wrote mt-daap’s upstream hoping for it be a known mt-daap problem instead of an avahi one that might be more difficult to handle.
For now, I don’t have anything else that uses howl on my system, so I’ve just removed it, I know there are a few programs using mdnsresponder, and kdelibs is the first one, but I want to wait a bit before trying to try getting that working.
I also have to try the patch that Giandomenico provided on vlc-devel for avahi 0.6 support in VLC 0.8.4, so that I can add an avahi useflag to that, too.