Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Coherence
    1.2. Name of Document Author/Supplier:
         Author:  Alfred Peng
    1.3  Date of This Document:
        25 March, 2009
4. Technical Description
Copyright 2009 Sun Microsystems

1. Introduction
    1.1. Project/Component Working Name:

        Coherence

    1.2. Name of Document Author/Supplier:

        Alfred Peng

    1.3. Date of This Document:

        03/13/2009

        1.3.1. Date this project was conceived:

            07/12/2007

    1.4. Name of Major Document Customer(s)/Consumer(s):

        1.4.1. The PAC or CPT you expect to review your project:

            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.odea at sun.com

        1.4.4. The name of your business unit:

            New Solaris Group, Desktop

    1.5. Email Aliases:

        1.5.1. Responsible Manager:

            leo.binchy at sun.com

        1.5.2. Responsible Engineer:

            alfred.peng at sun.com

        1.5.3. Marketing Manager:

            glynn.foster at sun.com

        1.5.4. Interest List:

            desktop-discuss at opensolaris.org

4. Technical Description:
    4.1. Details:
        Coherence is a DLNA (Digital Living Network Alliance)/UPnP (Universal
        Plug and Play) Framework written in Python for the Digital Living.

        The goals of UPnP are to allow devices to connect seamlessly and to
        simplify the implementation of networks in the home (data sharing,
        communications, and entertainment) and in corporate environments for
        simplified installation of computer components. With the UPnP framework,
        users can setup their home media center with PCs, wireless devices
        (mobile phones, tablet PCs etc.) and networked appliances (TVs, audio
        players, multimedia players, games consoles etc.)[2].

        Coherence is divided into three main parts: the core, the virtual
        devices, and the device backends[3]. The core of coherence provides an
        implementation of: a SSDP (Simple Service Discovery Protocol) [4]
        server, a MSEARCH (command to find other devices connected to the
        UPnP network) client to find other devices connected to the network,
        server and client for HTTP/SOAP requests, server and client for Event
        Subscription and Notification.

        The virtual devices contain: Media Server to provide media content
        (local storage or online services) and directory information,
        Media Renderer to play back media content provided by the Media Server,
        Control Point to interconnect Media Server and Media Renderer. The
        virtual device implementation registers with the core, declares which
        service interfaces it is using, and attaches callbacks which map the
        service actions to its backend. It's generally a translation map
        between the core and the device backend.

        The device backend is the part to host, render and control the media
        files. The following components could act as the device backend: file
        systems to store the media files, audio/video hardware and desktop GUI
        applications to render the media content and control the playback.

        For users, coherence can be used in conjunction with Rhythmbox, Totem or
        Elisa, and become a controllable DLNA/UPnP Media Renderer. For example,
        coherence is used in Elisa to talk with the Apple Movie trailer Media
        Server for its Movie trailer plugin and YouTube Media Server for its
        YouTube plugin. Coherence can also be configured as a DLNA/UPnP Media
        Server and exports local and remote media files via its backend to
        other UPnP clients.

        Developers get a python framework with an emerging DBus API. This
        framework is designed to automate all UPnP-related tasks as much as
        possible and enable applications to participate in digital living
        networks.

        In short, coherence provides two main features to the system:
        - Interfaces so that programs like elisa, rhythmbox, totem, etc. can
          act as Media Renderer/Control Point and connect to the UPnP servers
          on the internet.
        - Interfaces so that an UPnP Media Server can be set up on the system.

    4.2. Bug/RFE Number(s):

        None.

    4.3. In Scope:

        See above.

    4.4. Out of Scope:

        See above.
    
    4.5. Interfaces:

                               Exported  Interface
        --------------------------------------------------------------------
        Interface Name                     Classification   Comment
        --------------------------------------------------------------------
        SUNWpython-coherence               Uncommitted      Package name
        /usr/bin/coherence                 Volatile         Coherence CLI to
                                                            start the server
        $HOME/.coherence                   Private          Config file
        /usr/lib/python2.4/vendor-packages/Coherence*.egg-info
                                           Uncommitted      Python egg files
        /usr/lib/python2.4/vendor-packages/coherence
                                           Uncommitted      Python API
        /usr/lib/python2.6/vendor-packages/Coherence*.egg-info
                                           Uncommitted      Python egg files
        /usr/lib/python2.6/vendor-packages/coherence
                                           Uncommitted      Python API


                               Imported  Interface
        --------------------------------------------------------------------
        Interface          Classification   Comment
        --------------------------------------------------------------------
        Python             External         PSARC/2005/532 Python
                           Evolving         Migration from /usr/sfw to /usr
                                            and upgrade to v2.4.x 
        Python 2.6         Uncommitted      PSARC/2009/043
        Python Twisted     Uncommitted      PSARC/2008/121
        Python Setuptools  Uncommitted      PSARC/2008/084

    4.6. Doc Impact:

        coherence.1
    
    4.7. Admin/Config Impact:

        Coherence looks for the configuration file named .coherence in $HOME by
        default during server startup. Alternatively with the option
        -c|--configfile the location of the configuration file can be passed.
        In the configuration file, the following parameters can be specified:
        log level, log file, interface definition for systems with more than
        one physical interface, serverport tells coherence the port to listen
        on and the plugins that will be activated.

        The configuration options can be also passed to coherence through
        commandline during startup. If no configuration is specified, the
        default value will be used for coherence server.
    
    4.8. HA Impact:

        None.
    
    4.9. I18N/L10N Impact:

        The JDS team and the G11N team are working together to evaluate and
        provide I18N/L10N support.
    
    4.10. Packaging & Delivery:

        Adds new package, SUNWpython-coherence.
    
    4.11. Security Impact:

        Coherence implements the functions to download https page to a
        string/file by importing the Python Twisted ssl module via
        twisted.internet.

        The security concern for UPnP is the lack of device authentication,
        especially for Internet gateway devices[5]. Coherence doesn't provide
        an Internet gateway device implementation now. It's designed to work
        in the home network. The media files won't be propagate to the Internet
        through multicast. When installed on a gateway, the media files are
        reachable from the outside via http.

    4.12. Dependencies:

        The following versions of the imported interfaces are required:

        Python 2.4.x
        Python 2.6
        Python Twisted
        Python Setuptools

5. Reference Documents:

    [1] Coherence homepage:
    http://coherence.beebits.net/

    [2] The DLNA/UPnP devices supported by Coherence:
    http://coherence.beebits.net/wiki/SupportedDevices

    [3] Coherence architectural overview:
    http://coherence.beebits.net/wiki/ArchitecturalOverview

    [4] SSDP:
    http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol

    [5] UPnP security concern:
    
http://en.wikipedia.org/wiki/Universal_Plug_and_Play#Lack_of_Default_Authentication

    [6] Related ARC cases:
        PSARC/2005/532: Python migration from /usr/sfw to /usr
                        and upgrade to v2.4.x
        PSARC/2008/121: Python Twisted
        PSARC/2008/084: Python Setuptools
        PSARC/2009/043: Python 2.6

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                Desktop
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to