Overview: Zeroconf (aka Rendezvous, Bonjour) is an open-standard IETF protocol design for user-transparent network resource (e.g., printer) discovery over DNS multicast. It is extensively implemented in Macintosh OS X, is slightly patent-encumbered, and has (a/o 2006) multiple beta-level implementations in Linux and other open-source OSes.
The comparable protocol in Microsoft's proprietary protocol stack would be uPNP.
Date: Wed, 7 Dec 2005 12:29:24 -0800
From: Rick Moen <firstname.lastname@example.org>
Subject: Re: New print queue appears
Quoting Joe Little (email@example.com):
> Yes, RHEL4 and like distros, including new Fedora
> support Rendevous/Bonjour/Zeroconf networking via multicast DNS. This
> is something that Stanford's own Stuart Cheshire spearheaded, and
> got Apple to adopt first, along with Microsoft. Linux is join the
> party, as long as you have a recent vintage of Red Hat or SUSE. I
> believe Ubuntu may also have it. My cursory understanding is that
> CUPS broadcasting is using this.
Any *ix that has KDE 3.4 or later thereby gains base-level Zeroconf/DNS-SD functionality, via a "zeroconf:/" ioslave: http://dot.kde.org/1114696139/
It's not difficult to get that level of functionality from smaller codebases, too (packages: zeroconf, mDNSResponder, howl-utils, libhowl-dev libhowl0, mt-daapd, nss-mdns, avahi-daemon, avahi-utils, GNOME panel service-discovery-applet, zcip, Gobby collaborative editor, MateEdit collaborative editor), e.g., on Debian-unstable:
Note that Apple's APSL2/BSD-licensed "mDNSResponder" mDNS package should not be confused with Debian's package of the same name, which provides Howl/libhowl instead of Apple's code. And there is also a third implementation from Novell, "mDnsResponder.Net", written in C# for Mono/.NET: http://forge.novell.com/modules/xfmod/project/?mdnsresponder
Article detailing use of Gobby, describing its architecture, an optional server component called "Sobby", and Emacs integration using ebby.el: http://www.linux.com/article.pl?sid=06/06/27/1837234
US patent # 6,101,499, owned by Microsoft Corporation, is said to encumber some of the link-local addresses used in multicast DNS (mDNS), one of two network-level protocols used in Zeroconf (the other being "DNS-SD" = service discovery -- not to be confused with resource-discovery protocol SLP = Service Location Protocol, RFC 2608, which is not Zeroconf-related and is used primarily by Novell). That firm is said to have committed to granting "royalty-free licenses provided there's reciprocity".
Specific codebases with Zeroconf relevance:
Howl / libhowl: Howl is a cross-platform implementation of the Zeroconf zero configuration networking standard. It includes daemons and a client-side SDK for registering, browsing, and resolving network services, and assigning link local IP addresses without a DHCP server. On Windows 2000/XP, it includes a sidebar in Internet Explorer that allows users to browse Zeroconf-enabled Web and FTP servers. APSL (primarily). By Scott Herscher.
Avahi: Avahi is a framework for Multicast DNS Service Discovery (mDNS/DNS-SD a.k.a. Zeroconf) on Linux. It allows programs to publish and discover services running on a local network with no specific configuration. For example, you can plug into a network and instantly find printers to print to, files to look at, and people to talk to. LGPL. By Mezcalero.
mdnsd: mdnsd is a very lightweight, simple, portable, and easy to integrate open-source implementation of Multicast DNS (part of Zeroconf, also called Rendezvous by Apple) for developers. It supports both acting as a Query and a Responder, allowing any software to participate fully on the .local network just by including a few files and calling a few functions. Old BSD licence. By Jeremie.
mod_dnsd: mod_dnssd adds DNS-SD Zeroconf support to Apache 2.0 using Avahi. APL 2.0. By Mezcalero.
nss-mdns: nss-mdns is a plugin for the GNU Name Service Switch (NSS) functionality of the GNU C Library (glibc) that provides host name resolution via Multicast DNS (a.k.a. Zeroconf, a.k.a. Apple Rendezvous, a.k.a Apple Bonjour). This effectively allows name resolution by common Unix/Linux programs in the ad-hoc mDNS domain .local. LGPL. By Mezcalero.
MCastDiscovery: MCastDiscovery is a Java library used to advertise and discover services on a network. It's an alternative to Zeroconf/Rendezvous/Bonjour/mDNS/DNS-SD, and does not require a running daemon. It makes it easy to discover services in a lightweight no-install application, such as one running in Java WebStart. It is not compatible with software like Zeroconf. LGPL. By Eric Fitchett.
Dox Discovery Servlet: Dox Discovery is an attempt to bring elegance and simplicity to finding and using networked services. It uses Rendezvous/Zeroconf technology to auto-discover networked Web services, and generates either an RSS site feed or a pretty Web page. Java. LGPL. By Dox.
Multicast DNS Service Discovery for Python: This project is a full implementation of the Zeroconf Multicast DNS Service Discovery protocols for Python 2.2. LGPL. By psm42.
Rendezvous Proxy: RendezvousProxy is an application that allows you to proxy Rendezvous/mDNS/Zeroconf service announcements across subnets. This is ideal for users of Apple's iTunes, who wish to connect to their home shared music from alternate locations (e.g., from the office). Alternatively, it can be used to create Rendezvous/mDNS/Zeroconf service announcements for services that do not have this functionality, e.g., a user could announce a Rendezvous service for a corporate Web server, which would automatically appear in the Rendezvous bookmarks in the Safari Web browser. Java (as written: for the Mac OS X Cocoa development environment, but possibly portable). GPL. By subuni.
Zerospan: Zerospan is a peer-to-peer VPN application that can "bridge" any two computers via Zeroconf (aka Rendezvous or Bonjour). This allows you to share iTunes, iChat, file sharing, SSH, and more. It is based on the Kenosis P2P RPC system. Python (as written: for Mac OS X, but possibly portable. GPL. By Eric Ries.
Chungles: Chungles is a file-sharing program that uses Zeroconf (via the JmDNS libraries) for computer detection. It allows files to be shared easily between platforms with simple drag'n'drop. Java/SWT. No licence stated: probably intended to be open source, but the ambiguity should be fixed, since the default operation of copyright law would leave this as proprietary software. By rammerhammer.
KFTPGrabber: KFTPGrabber is a graphical FTP client for KDE. Its features include TLS support, FXP transfers, OTP passwords, Zeroconf support, and more. C++. GPL. By Kostco.
zcip: zcip is an implementation of the ad-hoc link-local IP autoconfiguration algorithm described in the IETF Draft "Dynamic Configuration of IPv4 link-local addresses", available at: http://files.zeroconf.org/draft-ietf-zeroconf-ipv4-linklocal.txt. Basically, it is a way of getting an IP address without manual assignment or DHCP. BSD. By Brad Hards and Zhendong Yu.
tmdns: tiny multicast DNS
gmdns GNOME module for multicast DNS / service discovery.
kdnssd a kioslave and kded module that provides Zeroconf support, part of kdelibs.
Gobby: collaborative real-time editor available on Windows and Unix-like platforms including Mac OS X / X11. Client-server with multi-document support, document sync, TLS crypto, IPv6, IRC-like chat, syntax colour-highlighting for user-specific use and for most programming languages, Unicode-based. Optional server component Sobby can format saved sessions for the Web (e.g., to provide logs of meetings with a collaboratively prepared transcript). Requires GTK+, net6 library, and "obby" C++ basic-functions library. GPL. By the 0x539 developer group.
Rhythmbox: Shares music over LANs using Digital Audio Access Protocol (DAAP), a Zeroconf service used by (e.g.) Apple iTunes.
Banshee: Shares music over LANs using Digital Audio Access Protocol (DAAP), a Zeroconf service used by (e.g.) Apple iTunes.
Epiphany: The GNOME Web browser can find Zeroconf-shared bookmarks published by (e.g.) the program avahi-bookmarks.
Ekiga (previously GnomeMeeting): allows you to discover other Ekiga users on your local network through the Ekiga address book and call them directly.
GShare allows users to setup a shared folder on their local computer, browsable via network:/// URLs in Nautilus.
Konqueror and other Zeroconf-enabled KDE apps support zeroconf:/ and daap:/ URLs. See: http://wiki.kde.org/tiki-index.php?page=Zeroconf+in+KDE#id949965
MateEdit: MateEdit is a multi-user editor which allows concurrent editing of files. It currently features change highlighting, different text colours for each user and a communication window. MateEdit can be used for idea exchanges, programming, role playing and any other task where people share their thoughts and collaborate. GPL. By Andreas Ramm.