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