1. Introduction 1.1. Project/Component Working Name: codina 1.2. Name of Document Author/Supplier: Brian Cameron 1.3. Date of This Document: 11/06/2008 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 O'Dea 1.4.4. The name of your business unit: Software - OPG 1.5. Email Aliases: 1.5.1. Responsible Manager: leo.binchy@sun.com 1.5.2. Responsible Engineer: brian.cameron@sun.com 1.5.3 Marketing Manager: dan.robert@sun.com 1.5.4. Interest List: desktop-discuss@opensolaris.org 2. Project Summary 2.1. Project Description: codeina is an Fleundo application written in Python which simplifies the process for users to discover and install GStreamer multimedia plugins on their system. 4. Technical Description: 4.1. Details: codeina is a client application from the Fluendo company which steps the user through the process of buying and installing GStreamer multimedia codec plugins. It uses an embedded browser in the application to talk to a web server. By default codeina on Solaris only supports connecting to the Fluendo server. Once connected, the user can navigate through web pages to select plugins to download and install. The codeina application can be run in two ways: - As a standalone program. In this case, a full list of available plugins are presented to the user. The user can select a plugin and is stepped through the process of downloading and installing the plugin. - GStreamer supports the GST_INSTALL_PLUGINS_HELPER environment variable. If a user tries to play a media format that is not supported by available installed GStreamer plugins, then it will run the program specified in this environment variable. By ensuring that the user's session has this environment variable set to "/usr/bin/codeina", then the codeina program will be launched. GStreamer itself (in the gst-plugins-base module) can be configured to use a default value when the environment variable is not set via the gst-plugins-base configure --with-install-plugins-helper option. This method would be used to ensure codeina is used when integrating codeina into Solaris. When codeina is launched via these GStreamer mechanisms, codeina checks a list of configured servers to see if any server has a plugin available to play this media type. If not, then codeina just exits and allows the application to inform the user the media type cannot be played. If a plugin is found, then codeina steps through the process of downloading and installing the plugin. If more than one plugin is found, the user can select which plugin they wish to download install. Some plugins may be free. In this case, the user can simply download and install the plugin immediately. Other plugins may be available only for a fee. This is typical with plugins that require a license fee to use (such as WindowsMedia, MP3, MPEG-2, or MPEG-4). In this situation, codeina presents the user with a webstore defined by the server where the user can pay for the plugin (perhaps by credit card or PayPal). Codina uses PyOpenSSL to support HTTPS secure web interactions for navigating websites that require such billing. In addition, codeina provides an autostart feature so that codeina is always run with the user session with the "-u --sleep 5" arguments. This causes codeina to check with the server periodically to see if there are any updates to any plugins previously downloaded via codina. If so, then the user is stepped through the process of downloading and installing the updates. By default, when codeina installs a plugin, it installs it to the $HOME/.gstreamer/plugins directory so that the user immediately is able to use the plugin. The codeina application also provide hooks so that a distro can provide additional plugins from other web resources. This is managed via codeina's "providers" files. By providing a "providers" file, a distro can make available either free plugins or plugins that are for sale. The providers file has hooks so that a distro can specify their own installation plugin which will step the user through a specified webstore purchasing process for billing. Though, this obviously requires that the distro set up the webstore service and write a installation plugin for codeina. codeina keeps track of each platform internally by keeping track of the following variables which are set as follows on Solaris: OS_NAME = "SunOS" ARCH_NAME = "sparc" or "i386" DISTRO_NAME = "solaris" DISTRO_VERSION = "any" These values are used in handshaking between the client and server in order to identify which plugins are available for a given client. If, for example, Sun were to set up a providers file which pointed to a Sun specific server, then the server would need to be configured to identify the Sun client using these parameters. Likewise codeina provides hooks so that a distro can customize how plugins are installed if desired. Although some distros (such as Red Hat and Mandriva Linux) have made us of such integration hooks (such as providers files), the interfaces are not documented. Fluendo plans to make these interfaces more public in the future so that it is easier for distros to integrate with codeina. In the meantime they should be considered Volatile interfaces. 4.2. Interfaces: Exported Interfaces Stability Comments --------------------------------------- ----------- ---------------- SUNWcodeina Uncommitted Package name. SUNWcodeina-root Uncommitted Package name. /usr/bin/codeina Volatile Script for starting codeina /usr/bin/codeina.bin Volatile The codeina application /usr/lib/python/2.4/vendor-packages/codeina Project Python Private implementation of codina /usr/share/applications/codeina.desktop Volatile Desktop file /usr/share/autostart/codeina-update-kde.desktop for when KDE is the desktop being used. /usr/share/codeina Project Private Private directory for icons and logos /etc/codeina/providers Volatile Providers directory /etc/codeina/providers/fluendo.xml Volatile Fluendo providers file /etc/xdg/autostart/codeina-update.desktop $XDG_CONFIG_HOME/share/codeina Volatile User config $HOME/.gstreamer-0.10/plugins Volatile GStreamer user plugin directory Imported Interfaces Stability Comments --------------- --------------- ----------------------- SUNWpython-libs Unstable LSARC 2005/506 Python External PSARC/2005/532 Python Evolving Migration from /usr/sfw to /usr and upgrade to v2.4.x GStreamer Volatile LSARC 2006/202 Python XDG Uncommitted PSARC 2008/104 SUNWgst-python Uncommitted PSARC 2008/105 python-notify Uncommitted PSARC 2008/419 PyYAML Uncommitted PSARC 2008/676 PyOpenSSL Uncommitted PSARC/2008/705 4.3. Doc Impact: Man page is needed. 4.4. Packaging & Delivery: SUNWcodeina, SUNWcodeina-root - packages for codeina. 4.5. Dependencies: None. 4.6. L10N Impact: The Desktop team and the G11N are working together to evaluate and provide I18N/L10N support. 4.7. Security Impact: None. 5. Reference Documents: The codeina website: https://core.fluendo.com/gstreamer/trac/wiki/codeina Other information about codeina: http://fedoraproject.org/wiki/Multimedia/Codeina http://fedoraproject.org/wiki/Releases/FeatureCodecBuddy