From sac-owner Thu Jul 27 08:02:33 2006
Received: from sunmail4.Singapore.Sun.COM (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.6+Sun/8.13.6) with ESMTP id k6RF2Wc5016031
	for <one-pager@sac.eng.Sun.COM>; Thu, 27 Jul 2006 08:02:32 -0700 (PDT)
Received: from sunmail4.Singapore.Sun.COM (localhost [127.0.0.1])
	by sunmail4.Singapore.Sun.COM (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id k6RF2VSA007698
	for <one-pager-not-2b-used-directly@sunmail4.Singapore.Sun.COM>; Thu, 27 Jul 2006 23:02:31 +0800 (SGT)
Received: (from noaccess@localhost)
	by sunmail4.Singapore.Sun.COM (8.13.4+Sun/8.13.3/Submit) id k6RF2VHc007694
	for one-pager-not-2b-used-directly; Thu, 27 Jul 2006 23:02:31 +0800 (SGT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.Singapore.Sun.COM (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id k6RF2Ec7007489
	for <@sunmail1brm.central.sun.com:one-pager@sun.com>; Thu, 27 Jul 2006 23:02:30 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0J3200601HS4DS00@brm-avmta-1.central.sun.com> for one-pager@sun.com
 (ORCPT one-pager@sun.com); Thu, 27 Jul 2006 09:02:28 -0600 (MDT)
Received: from nis-uk.uk.sun.com ([129.156.85.41])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0J32005TKHS3FD00@brm-avmta-1.central.sun.com> for
 one-pager@sun.com (ORCPT one-pager@sun.com); Thu,
 27 Jul 2006 09:02:28 -0600 (MDT)
Received: from phys-gadget-2 (phys-gadget-2 [129.156.85.172])
	by nis-uk.uk.sun.com (8.13.6+Sun/8.13.6/ENSMAIL,v2.2)
 with ESMTP id k6RF2REV010254	for <one-pager@sun.com>; Thu,
 27 Jul 2006 16:02:27 +0100 (BST)
Received: from conversion-daemon.gadget-mail1.uk.sun.com by
 gadget-mail1.uk.sun.com
 (iPlanet Messaging Server 5.2 HotFix 1.24 (built Dec 19 2003))
 id <0J3200H01HN1K8@gadget-mail1.uk.sun.com>
 (original mail from padraig.obriain@sun.com) for one-pager@sun.com; Thu,
 27 Jul 2006 16:02:27 +0100 (BST)
Received: from [129.156.234.22] (anymachine.Ireland.Sun.COM [129.156.234.22])
 by gadget-mail1.uk.sun.com
 (iPlanet Messaging Server 5.2 HotFix 1.24 (built Dec 19 2003))
 with ESMTPA id <0J3200MECHS210@gadget-mail1.uk.sun.com> for one-pager@sun.com;
 Thu, 27 Jul 2006 16:02:26 +0100 (BST)
Date: Thu, 27 Jul 2006 15:58:42 +0100
From: "Padraig O'Briain" <padraig.obriain@Sun.Com>
Subject: [/]Avahi and libdaemon
To: one-pager@Sun.Com
Message-id: <44C8D4A2.6020608@sun.com>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_ok41DZwTJ/BCjrBK8k52RQ)"
X-PMX-Version: 5.2.0.264296
User-Agent: Mail/News 1.5.0.2 (X11/20060502)
Status: RO
Content-Length: 13005

This is a multi-part message in MIME format.

--Boundary_(ID_ok41DZwTJ/BCjrBK8k52RQ)
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT



--Boundary_(ID_ok41DZwTJ/BCjrBK8k52RQ)
Content-type: text/plain; name=avahi_1pager.txt
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=avahi_1pager.txt

1. Introduction
   1.1. Project/Component Working Name:
        Avahi and libdaemon

   1.2. Name of Document Author/Supplier:
        Padraig O'Briain

   1.3. Date of This Document:
        26th July 2006

   1.4. Name of Major Document Customer(s)/Consumer(s):
        1.4.1. The PAC or CPT you expect to review your project:
                 
               Desktop CTeam
               Solaris PAC
        1.4.2. The ARC(s) you expect to review your project:

               LSARC

        1.4.3. The Director/VP who is "Sponsoring" this project:

               Robert O'Dea <robert.odea@sun.com>
               Stephen Harpster <stephen.harpster@sun.com>
               Glenn Weinverg <glenn.weinberg@sun.com>
              
        1.4.4. The name of your business unit:

               JDS Desktop Engineering, Open Source Software, OPG

   1.5. Email Aliases:
        1.5.1. Responsible Manager: 

               Leo Binchy <leo.binchy@sun.com>

        1.5.2. Responsible Engineer: 

               Padraig O'Briain <padraig.briain@sun.com>

        1.5.3. Marketing Manager:

                Max Herrmann <nax.hermann@sun.com>

        1.5.4. Interest List: 

                desktop-cteam@sun.com
                nwam-bonjour@sun.com
                bonjour-iteam@sun.com

2. Project Summary
   2.1. Project Description:

        The Multicast DNS (mDNS) and Service Discovery project
        introduces DNS server-less link-local IP address resolution
        for ad-hoc networks and discovery of devices and services.
        See PSARC/2005/262. That project is based on Apple's implementation,
        a.k.a Bonjour. 

        An alternative implementation is avahi, see www.avahi.org.

        Some GNOME components provide support for service registration
        and discovery using avahi.

        This project delivers the avahi client API. Instead of delivering
        the avahi daemon, which on linux and freebsd implements a mDNS
        stack, we will change the avahi daemon to make calls to the
        Bonjour API so that it will use the Bonjour server.
     
        libdaemon is a lightweight C library that eases the writing of
        UNIX daemons and is used by the avahi daemon.
        
   2.2. Risks and Assumptions:

        It is assumed that the avahi functionality can be implemented
        using the Bonjour API, or that, at least, the avahi functionality 
        used by GNOME applications can be implemented using the Bonjour
        API.


3. Business Summary
   3.1. Problem Area:

        To be competitive in the desktop market, it is necessary to offer a
        modern desktop that is a reasonable alternative to the Microsoft
        desktop and competitive with current Linux offerings.  Furthermore,
        it is necessary to ensure that recent improvements to the GNOME
        desktop are integrated with Solaris OS. Avahi is an emerging 
        technology which is being used by GNOME applications to register
        and browse for services.

        It is currently being used by the following GNOME applications:

        ekiga (a.k.a gnomemeeting)
        gnome-vfs
        vino
        gnome-games

   3.2. Market/Requester:

        GNOME meets the desktop needs of Sun customers who have invested in
        the Solaris OS, and prefer the stability and maturity of that platform.
        Moreover, the GNOME desktop provides an alternative for customers
        migrating away from Microsoft, or a comparable offering to those
        migrating away from Linux. Avahi is a core part of that strategy
        providing architecture to achieve the 'Just Works' interaction that
        is necessary for long term success of the desktop.

   3.3. Business Justification:

        Avahi is already a dependency of the GNOME stack, so it will
        be increasingly difficult to avoid not shipping it in the future.
        Many distributions already include avahi as part of their desktop 
        offerings.


   3.4. Competitive Analysis:

        Refer to LSARC 2006/202 GNOME 2.14, Project Vermillion for details of
        competitive analysis.

        Many distributions already include avahi as part of their desktop 
        offerings.

        From a developer standpoint, it is important to provide new emerging
        technologies as part of our core developer offering on Solaris. 


   3.5. Opportunity Window/Exposure:

        Avahi is a requirement for the GNOME Desktop, and the project
        team expects it to be integrated as soon as possible into the
        Nevada release schedule.


   3.6. How will you know when you are done?:

        This project is part of on-going work to continually provide an
        easy to use modern desktop for Solaris OS. The project will be
        considered 'complete' when stopper/P1/P2 bugs are resolved.
        However, as such this is an evolving open source project, and
        the project team will track its progress and integrate newer
        versions as necessary.


4. Technical Description:
   4.1. Details:

        Avahi consists of several parts:

        libavahi-common: a library containing some functions used by avahi 
        clients and the avahi-daemon itself.

        libavahi-core: A library implement service registration and
        discovery.

        libavahi-client: A minimal wrapper around the DBUS API to simplify 
        its usage. It hides the DBUS internals completely.

        libavahi-glib: An adaptor for connecting avahi-client or avahi-core 
        to a GLIB main loop.

        avahi-daemon: The avahi daemon makes use of libavahi-core to
        provide service registration and discovery to clients using the
        DBUS interface which is an IPC wrapper around the functions
        provided by avahi-core.

        avahi-browse, avahi-discover, avahi-publish, avahi-resolve: Some
        command line utilities which use libavahi-client.

        See http://www.avahi.org/wiki/ArchitecturalOverview, which lists
        some other parts of avahi which we do not deliver.

        We make significant changes to avahi-daemon and libavahi-core.

        Instead of implementing a mDNS/DNS-SD stack libavahi-core makes 
        calls to the DNS Service Discovery API provided by Bonjour to
        register and discover services.

        As avahi-daemon no longer provides service registration and
        discovery itself those portions related to being a mDNS server
        are omitted.
        

        libdaemon is a lightweight C library that eases the writing of 
        UNIX daemons. It consists of the following parts:

        * A wrapper around fork() which does the correct daemonization 
        procedure of a process
        * A wrapper around syslog() for simpler and compatible log output 
        to Syslog or STDERR
        * An API for writing PID files
        * An API for serializing UNIX signals into a pipe for usage with 
        select() or poll()
        * An API for running subprocesses with STDOUT and STDERR redirected 
        to syslog.

        
   4.2. Bug/RFE Number(s):
        N/A.

   4.3. In Scope:

        The project team will integrate and support versions of Avahi 
        continually throughout its life within the Solaris OS. The project 
        team will mark the interfaces of Avahi as appropriate [detailed below]
        and work with other project teams to provide contracts of use, until 
        such a stage where the technology can be considered as 'Stable' 
        according to the interface taxonomy rules.

   4.4. Out of Scope:
        
        Sun does not expect to be involved in the development and direction
        of avahi or libdaemon. Where possible, we will ship 'as is', with the
        changes to call Bonjour.

        Any developer changes will be pushed upstream where appropriate.

   4.5. Interfaces:

        Exported Interfaces 

        /usr/lib/libdaemon.so           External        libdaemon C library
        /usr/lib/pkgconfig/libdaemon.pc                 pkgconfig file for 
                                        External        libdaemon
        /usr/include/libdaemon/*.h      External        libdaemon API
        SUNWlibdaemon                   Stable          Package name for libdaemon
        
        /etc/dbus-1/system.d/avahi-dbus.conf            Configuration file for
                                        External        avahi DBUS messages.

        /usr/include/avahi-client/*.h                   avahi APIs.
        /usr/include/avahi-common/*.h
        /usr/include/avahi-core/*.h
        /usr/include/avahi-glib/*.h     External

        /usr/lib/pkgconfig/avahi-client.pc              pkgconfig files for
        /usr/lib/pkgconfig/avahi-core.pc                avahi-core, avahi-client
        /usr/lib/pkgconfig/avahi-glib.pc                and avahi-glib bindings.
                                        External        

        /usr/lib/python2.4/vendor-packages/avahi/*.pya  avahi python bindings
      
        /usr/lib/libavahi-client.so                     avahi libraries
        /usr/lib/libavahi-common.so
        /usr/lib/libavahi-core.so
        /usr/lib/libavahi-glib.so       External

        /usr/bin/avahi-browse           External        Command line utilities
        /usr/bin/avahi-browse-domains                   which use avahi client.
        /usr/bin/avahi-publish
        /usr/bin/avahi-publish-address
        /usr/bin/avahi-publish-service
        /usr/bin/avahi-resolve 
        /usr/bin/avahi-resolve-host-name 

        /usr/sbin/avahi-daemon          External        Avahi server daemon.
        
        /var/run/avahi-daemon/pid       Project Private PID file for avahi.

        svc:/system/avahi:default       External        Avahi SMF service to
                                                        start avahi-daemon.
        SUNWdbus                        Stable          Package name for avahi.


        Imported Interfaces -

        libxml                          Standard        PSARC 2001/175
        Glib                            Stable          LSARC 2006/202
        pkg-config                      External        LSARC 2002/747
        Python                          External        PSARC 2005/532
        DBUS                            External

   4.6. Doc Impact:

        Documentation will be provided as is standard with the Solaris OS - 
        both in terms of developer references, man pages, and command line help.

   4.7. Admin/Config Impact:

   4.8. HA Impact:
        None.

   4.9. I18N/L10N Impact:
        None.

   4.10. Packaging & Delivery:

        This project is built, packaged and delivered as part of the current JDS
        desktop consolidation.

   4.11. Security Impact:

        The process avahi-daemon will run as user daemon.

        No other known security impact.

   4.12. Dependencies:
 
        LSARC 2006/202 - GNOME 2.14, Project Vermillion.
        LSARC 2002/747 - GNOME 2.0 pkg-config
        PSARC 2001/175 - libxml
                       - DBUS

5. Reference Documents:

        Avahi Community Website
        http://www.avahi.org

        Exisitng ARC cases
        LSARC 2006/202 - GNOME 2.14, Project Vermillion.
        PSARC 2005/262 - Multicast DNS and Service Discovery

6. Resources and Schedule:
   6.1. Projected Availability:

   6.2. Cost of Effort:

        This project will be shipped with minimal engineering effort. Every
        effort will be made to coordinate with the existing upstream
        open source community, and patches will be provided as appropriate.

        This project will be built, packaged, delivered and tested as part
        of the current JDS desktop consolidation, and resources have already
        been factoresd for this.


   6.3. Cost of Capital Resources:

       N/A.

    6.4. Product Approval Committee requested information:
         6.4.1. Consolidation or Component Name:

         JDS Desktop Consolidation.

         6.4.3. Type of CPT Review and Approval expected:

         Fasttrack.

         6.4.4. Project Boundary Conditions:

         N/A.

         6.4.5. Is this a necessary project for OEM agreements:

         None
 
         6.4.6. Notes:

         None

         6.4.7. Target RTI Date/Release:

         6.4.8. Target Code Design Review Date:

         Code and associated Solaris producet packages are already available.

         6.4.9. Update approval addition:

         No.

    6.5. ARC review type:

         Fasttrack.

7. Prototype Availability:
    7.1. Prototype Availability:

    7.2. Prototype Cost:
         N/A



--Boundary_(ID_ok41DZwTJ/BCjrBK8k52RQ)--

