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