[dot] Jakub Stachowski: Zeroconf Support in KDE

Dot Stories stories at kdenews.org
Thu Apr 28 16:12:59 CEST 2005


URL: http://dot.kde.org/1114696139/

From: Jonathan Riddell <>
Dept: un-grand-rendez-vous
Date: Thursday 28/Apr/2005, @15:48

Jakub Stachowski: Zeroconf Support in KDE
=========================================

   Last month's release of KDE 3.4 was the first to feature Zeroconf's
service discovery.  Relevant applications can advertise their services,
such as shared folders or networked games, which can then be browsed up
by the zeroconf:/ ioslave.  KDE Dot News spoke to the man behind KDE's
Zeroconf support Jakub Stachowski to find out more on this exciting
technology.  Read on for the interview and if you have more ideas for
KDE technology interviews please add them to this wiki page
[http://www.kde.me.uk/index.php?page=kde-technology-interviews].

Jakub Stachowski

     Please introduce yourself and how you help KDE.

     I'm Jakub Stachowski, a fourth year Electronics and
Telecommunications student from Czempi&#324; in Poland. My road with KDE
is a typical one - I have used it for several years, then started
writing small applications for private use and finally decided to join
development. My main field of work in KDE is Zeroconf related:
maintaining and improving library and support in various applications. I
also fix bugs and add small features to various KDE applications when I
have some free time and feel like hacking.

     How did Zeroconf within KDE start and how did you get involved?

     It started about a year ago with a wiki page giving some
information about Zeroconf and which KDE applications could benefit from
it. I found this concept promising so I returned to that page quite
often to see if anything was being done yet. Time passed and it remained
in concept stage. I decided to take it on myself because I had some free
time and I wanted to help improving KDE. This project seemed like a good
way to do it. The openness of the KDE developers community was a very
pleasant surprise - no questions asked, just 'here is your cvs account,
have fun'. I got lots of help too, like pointing out errors in design,
fixing bugs and generally good advice.

     What do all the different Zeroconf names mean? There's zeroconf,
dnssd, slp and rendezvous.

     Zeroconf is a name used by IETF for several techniques that should
allow you to setup and use a simple network with no need for any manual
configuration. One of its parts, DNS-SD, is the service discovery
protocol based on standard DNS. Rendezvous is just Apple's name for
Zeroconf. It is trademarked so you will not find it anywhere in KDE code
or documentation. SLP is another service discovery protocol used
primarily by Novell. It has nothing to do with DNS-SD or Zeroconf.

     What can Zeroconf offer for the end user?

     The goal of Zeroconf is making things simpler by removing as much
network configuration as possible. KDE uses one of Zeroconf's parts -
service discovery. How do users benefit from that? Lets say you have
several particularly good songs and you want your friend (using the same
local network) to listen to them. Without a service discovery protocol,
after starting the server, you have to tell them the IP address and
port. With Zeroconf they don't need to worry about that because your
songs will just show up in Konqueror and Amarok's file browser. Another
similar case is network gaming on a LAN - it is much simpler to select a
game from the list than finding and entering a server's address and port
number.

     What is the status of Zeroconf support in KDE 3.4?

     It is a new feature in 3.4 so support is not extensive, but there
are some applications that use it - for example games like lskat,
kbattleship and kwin4 (a connect four game, not realated to our window
manager). The 'Public File Server' kicker applet now announces its
presence on the network so it can be found by, for example, zeroconf:/
ioslave. This is a kind of universal browser for all published services
on the network. Apart from http it also supports ftp, nfs, ssh, vnc and
more. One caveat: it will not show you every ftp server on the LAN, but
only those broadcasted using Zeroconf. For now I think only MacOSX
announces most of its services by default. Another example is remote
desktop - krfb and krdc added support for DNS-SD (in addition to
existing SLP) for discovering shared desktops. There are also external
applications supporting Zeroconf such as Mateedit
[http://www.kde-apps.org/content/show.php?content=19830], a multi-user
text editor that allows concurrent editing of one file by several people
at once. It uses Zeroconf to announce and locate editing sessions. There
is also a daap:/ protocol handler in kdeplayground-multimedia for
browsing iTunes shares. I hope more of them will come eventually.

     How does the support compare to other platforms with Zeroconf such
as MacOS or Gnome?

     Apple began integrating Zeroconf into their system much earlier
than us. They are also original authors of DNS-SD and multicast DNS
specifications. Support in MacOSX is very comprehensive - almost every
network application includes it. Because it is part of the platform lots
of 3rd party developers started to use it to make their applications
easier to use. Gnome also started before KDE - about half a year earlier
in their 2.8 release. It was not surprising that in the beginning
support was very sketchy - basically only Nautilus being able to
discover WebDAV and FTP servers. More unexpected is that it has not
progressed too much since initial implementation - support was added to
one game (Nibbles) and GnomeMeeting. Apparently GNOME developers want to
finish a more Free replacement for Howl daemon called Avahi before
making any serious effort to further enhance Zeroconf support. So KDE is
somewhere in the middle - already further than GNOME but there is still
work to do before it will be on the same level as MacOSX in terms of
Zeroconf support.

     Do you think Windows will ever support the standard?

     To some extent, yes. There are already several implementation for
Windows, including 'official' one made by Apple. It is used for example
by iTunes. But I don't see many Windows applications depending on it -
DNS-SD support is available only as 3rd party add-ons and developer can
never be sure if it will be available. Fact that Microsoft pushes its
own service discovery protocol (uPNP) also does not help.

     What future plans to you have to expand the support?

     The current design is centered around DNS-SD, but there are also
other protocols like SLP or even good old port scanning (used by our
lan:/ ioslave). The plan is to have multiple backend modules and combine
information gathered using all protocols to provide a more complete list
of services to the user. This will also will help solving second big
problem: it is hard to use DNS-SD over internet, because current way
('wide area') requires a DNS server configured to accept dynamic updates
- which is not common. The user has to configure DNS server name,
domain, hostname and key (used for authentication with DNS server) - it
can hardly be called zero-configuration. Instead I want to link service
discovery with instant messaging. It will work in a similar way to
DNS-SD on local network, but with IM connection acting as a
communication medium. When publishing a service the user will select
recipients from a contact list. Service description will be sent using
an out-of-band channel of IM protocol if one exists. If not, then
probably encoded text messages and some kind of filter will be needed.
Then it will be received, processed and added to discovered services
list for applications to use.

     Technically speaking how does Zeroconf work it's magic and what
does a developer have to do to implement it?

     Zeroconf uses old good DNS to perform new tricks. Instead of a
centralised server every host on local network runs its own mini-server
that communicates with others using multicast. In order to resolve a
name a question is sent to all servers on the network. First one that
knows answer responds. Major advantage is that no configuration is
necessary - just connect the computer and it instantly becomes part of
multicast DNS system. Service discovery also uses DNS. Every service is
identified by domain name (for example "My files._ftp._tcp.local.") with
an SRV record pointing to hostname and port number. It can also have TXT
record with additional attributes. But for developers it is more
important to know how to use these services in their of applications.
For publishing: create a PublicService object giving its name, type and
port, then publish it. That is all, exactly two lines of code. Searching
for services is almost as simple - create a ServiceBrowser, connect a
signal that will be emitted when something is found and run the browser.
If you want to have your services shown in Konqueror (or file dialog) a
very simple text file with service description is needed. Several
examples can be found in KDEDIR/share/apps/zeroconf.

     What are the required server components for ZeroConf to work, and
how difficult are they to install and configure?

     The sole requirement is Apple's mDNSResponder package. To prevent
frequent confusion: it is Apple's mDNSresponder, do not use the Debian
package with the name because it actually contains Howl.  KDE is the
first big project to use Apple's mDNSResponder outside MacOS X so it
have not been packaged by most distributions yet and installation from
sources will be necessary in many cases. It is really easy: 'make
os=linux && make os=linux install' and you are done. Remember that
mDNSResponder has to be installed before compilation of kdelibs. If you
have problems, look at the KDE Zeroconf wiki page
[http://wiki.kde.org/tiki-index.php?page=Zeroconf+in+KDE] for solutions
to several of the most frequent issues. You can also use a Konstruct
which automatically compiles and installs KDE with all dependencies.

     KDE uses the mDNSresponder library from Apple, what are the
licencing issues involved with this and what's the advantage over the
(mostly GPL) libhowl?

     mDNSResponder consists of two main components - daemon doing all
hard job (licensed under Apple Public Source Licence 2) and client
library (BSD licence). APSL is considered free software license by FSF
but not, for example, by Debian and Red Hat. It is also not GPL
compatible and because in older releases also client library was also
covered by APSL2, KDE and most open source project could not use it.
Recently it was changed to BSD and now it is exactly the same as Howl's
license. Apple's implementation has several technical advantages over
Howl: better support for IPv6, cleaner and easier to use API and support
for 'wide-area' mode using normal DNS server to work with big networks
or Internet. There is also a third Zeroconf implementation called Avahi,
that has license acceptable even to Debian, but it is too immature to
use it currently.

     Do any distributions come with KDE Zeroconf support already?

     Yes, newest versions of several distributions started supporting
it. First was as usual Gentoo - you need to add 'zeroconf' to USE flags
in order to enable it. Also users of recently released SuSE 9.3 and
ArkLinux 2005.1 can enjoy working Zeroconf out of the box.



More information about the dot-stories mailing list