By Forrest Cook
June 15, 2009
On June 11, 2009 Rob Savoye spoke to the
Boulder Linux Users Group about the
Cygnal rich media server
project.
Cygnal is part of the
Gnash SWF movie player project
and development is being funded by
Open Media Now (OMN).
Open Media Now
projects
include Gnash, Cygnal and
Ming,
an SWF output library and PHP module.
OMN is particularly focused on performing legal, clean-room reverse
engineering of proprietary protocols.
Supporters of the project include the
Electronic Frontier Foundation,
the Software Freedom Law Center, the
Free Software Foundation,
and notable individuals such as John Gilmore, Bob Young, and Mark
Shuttleworth, along with a community of developers.
Rob discussed the underlying concept of rich media, also known as
interactive media. Unlike basic streaming media,
rich media is interactive, involving the bidirectional transport of
complex objects.
Typical uses include video conferencing, electronic whiteboards, and
other types of groupware.
Cygnal is loosely aimed at being a replacement for Adobe's commercial
Flash Media Server, with enhancements.
The motivation behind Cygnal was to create a 100% free video
conferencing server.
Cygnal development was started because there were no really good
free software rich media server projects available.
Compared to the commercial offering, the project aims to be more
secure, lack a central point of control, and have a greater respect
for user privacy.
Cygnal supports a variety of patent-free and proprietary CODECs
and protocols including HTTP, Adobe's proprietary
Real Time Messaging Protocol (RTMP),
RTMPT, and
ActionScript
protocols as well as the free
Ogg Vorbis audio and Ogg Theora video protocols
from the Xiph.org project.
Cygnal also aims to support PHP and Python inside of a server
sandbox environment.
Some of the Cygnal features that Rob highlighted include
built-in clustering and load balancing and support for
Oggz chopping
so that one could, for example, edit video on a distant server
by remote control from a cell phone.
For a complete feature list, consult the
Cygnal web site.
Rob pointed out inefficiencies with streaming video servers,
such as YouTube, that a rich media server can greatly improve upon.
If you want to move around a video randomly, or
play just the last few seconds, with YouTube it is necessary to load
the entire video first. The bidirectional capability of a rich media
server would allow a finer level of control over which data is sent over
the network.
Cygnal supports statistics gathering for tuning and optimizing
its behavior.
It is possible to connect to the server's system console via tcp, and
the plan is to be able to remotely dump statistics while the server
is operating. Rob emphasized that there was a fine line between
gathering statistics and invading privacy, so the project would
aim to protect privacy first.
A large amount of work has been done on the legal clean-room
reverse engineering of the RTMP protocol and the ActionScript class
library. RTMP has a lot of advanced capabilities including
the transfer of ActionScript objects, the ability to drop frames
when network congestion is detected, and the ability to seek within
a video stream. All of this functionality makes decoding the
protocol a fairly difficult job. RTMP is not publicly documented,
so reverse engineering is the only way to gain access to its inner
workings.
A number of special techniques and limitations were used in the
reverse engineering process in order to keep everything legal.
It is critical that people doing the reverse engineering don't
install any Adobe software so as to avoid agreeing to the EULA.
The EULA forces the user to agree not to redistribute
any software relating to decoding Adobe's proprietary protocols.
It is legal to have a third party install the commercial software
and agree to the EULA, then have a developer sniff network packets and sift
through the voluminous hex dumps.
Adobe has already shown their legal teeth, they recently sent a
DMCA letter to SourceForge concerning the rtmpdump utility
(documented on FlashComGuru).
Rob described the reverse engineering process as sneaky, brutal,
and fun.
At the heart of Cygnal is the network engine. It must support multiple
threads for incoming connections. As soon as the maximum number of threads
has been reached, the engine multiplexes the i/o operations through
the existing threads. This is currently an area of experimentation
and flux within the project; time and experience will eventually reveal
the most efficient approach to achieving good operation.
Rob emphasized the network engine's use of zero-copy techniques;
messages are put into a queue and pointers are passed around, resulting
in very good performance. Interestingly, Rob mentioned that the
PowerTop
utility was one of the more useful tools that he used for optimizing
the code.
Rob pointed out a few weaknesses in the Linux kernel and libraries
that required new implementations of existing software.
He pointed out that the Linux Asynchronous I/O library uses three threads per
connection and was a source of much inefficiency.
Also, using
jemalloc [pdf] (A Scalable Concurrent malloc Implementation for FreeBSD) instead of malloc can
improve the server's speed by up to 15% on multi-core machines.
The Cygnal project is in need of a wide variety of help
including performing language translations, testing and feedback,
bug reporting, documentation, build farm maintenance, and donations
of cash (and beer). Volunteers are encouraged to help out, or, at
least, to send Rob some free beer.
Comments (1 posted)
System Applications
Database Software
Version 5.0.83 of MySQL Community Server has been announced.
"
MySQL Community Server 5.0.83, a new version of the popular Open Source
Database Management System, has been released. This and future releases
in the MySQL Community Server 5.0 series share version numbers with
their MySQL Enterprise Server counterparts."
Full Story (comments: none)
Release Candidate 1 of the PostgreSQL 8.4 DBMS has been
announced.
"
Final release of PostgreSQL 8.4 comes much closer today with our first Release Candidate. Now, we count on all of the PostgreSQL users and developers worldwide to test this Release Candidate to make sure that it is stable, reliable, secure and high-performance enough to be called an official PostgreSQL release. Please download 8.4 RC1 today and test it with your applications."
Comments (none posted)
The June 14, 2009 edition of the PostgreSQL Weekly News
is online with the latest PostgreSQL DBMS articles and resources.
Full Story (comments: none)
Version 0.9 of py-postgresql has been announced.
"
I'm pleased to announce the release of py-postgresql 0.9.0 and 0.8.2.
py-postgresql is a Python programmer's client (driver) for PostgreSQL
and general toolkit for working with PostgreSQL in Python."
Full Story (comments: none)
Release 3.6.15 of the SQLite DBMS has been
announced,
it includes a number of new features and some bug fixes.
Comments (none posted)
Device Drivers
Some progress has been made on the
CWiid project, a collection of Linux tools written in C for interfacing to the Nintendo Wiimote.
"
As promised, the Motion Plus is out, and I'm actively working on CWiid again. Many outstanding tickets have been fixed and/or replied to, and I hope to continue resolving outstanding tickets as I add Motion Plus support."
Comments (1 posted)
Interoperability
Stable version 3.3.5 and
Maintenance Release version 3.2.12 of Samba have been announced.
For V3.2.12:
"
This is the latest bug fix release for Samba 3.2 and is the version recommended for all production Samba servers running this release series."
Comments (none posted)
Printing
Version 1.4rc1 of CUPS, the Common Unix Printing System, has been
announced.
"
As per the CUPS Configuration Management Plan, we now start our two week "soak" of each release candidate. Once we are happy with the quality, we'll do the first stable release, 1.4.0. If you experience problems with the release candidate, please post your issues to the cups.general forum or mailing list. Confirmed bug reports should be posted to the Bugs & Features page.
CUPS 1.4 adds over 67 new features and changes to CUPS 1.3.x, including greatly improved Bonjour/DNS-SD and Kerberos support, SNMP-based page accounting and monitoring, security and logging improvements to the scheduler, integration of the CUPS driver development kit components, and IPP/2.1 support."
Comments (none posted)
Telecom
Google has
announced a new Android Scripting Environment.
"
The Android Scripting Environment (ASE) brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device. These scripts have access to many of the APIs available to full-fledged Android applications, but with a greatly simplified interface that makes it easy to:
* Handle intents
* Start activities
* Make phone calls
* Send text messages
* Scan bar codes
* Poll location and sensor data
* Use text-to-speech (TTS)
* And more".
(Thanks to Francisco Borges).
Comments (13 posted)
Web Site Development
The
Bobo project has been launched.
"
Bobo is a light-weight framework for creating WSGI web applications.
It's goal is to be easy to use and remember. You don't have to be a
genius.
It addresses 2 problems:
- Mapping URLs to objects
- Calling objects to generate HTTP responses
".
Full Story (comments: none)
Version 1.64.0 of web2py has been announced.
"
new features:
- full Jython support, including xzJDBC for sqlite and postgresql.
install jython and run: jython web2py.py -h
- models are 2.5x faster
- better LDAP support
- custom forms".
Full Story (comments: none)
Desktop Applications
Audio Applications
Version 2.0 of lv2fil has been announced.
"
Four-band parametric equaliser LV2 plugin. DSP code by Fons Adriaensen."
Full Story (comments: none)
Data Visualization
Version 1.4rc2 of
RRDtool,
a data visualization application for time-series data, has been announced.
"
RRDtool 1.4rc[2] opens the last phase of the road to the 1.4 release."
Comments (none posted)
Desktop Environments
The following new GNOME software has been announced this week:
- Anjuta and gdl 2.27.3 (new features, bug fixes and code cleanup)
- Brasero 2.27.3 (bug fixes and translation work)
- Cheese 2.27.3 (new features, bug fixes and translation work)
- Deskbar-Applet 2.27.3 (translation work)
- Empathy 2.27.3 (bug fixes and translation work)
- Ethos 0.2.0 (initial release)
- Evince 2.27.3 (new features, bug fixes and translation work)
- Eye of GNOME 2.27.3 (bug fixes and translation work)
- File Roller 2.27.1 (new features, bug fixes and translation work)
- gbrainy 1.11 (new features, bug fixes and translation work)
- GCalctool 5.27.3 (bug fixes and translation work)
- Glade 3.6.5 (bug fixes and build improvements)
- GLib 2.21.2 (new features, bug fixes and translation work)
- gnome-applets 2.27.3 (bug fixes, documentation and translation work)
- gnome-bluetooth 2.27.6 (new features and bug fixes)
- Gnome Games 2.27.3 (new features, bug fixes and translation work)
- GNOME Media 2.27.3 (bug fixes and translation work)
- gnome-settings-daemon 2.27.3 (bug fixes and translation work)
- GNOME Utilities 2.27.2 (new feature and libgnome dependency removal)
- GOK 2.27.3 (bug fixes and translation work)
- GTK+ 2.17.2 (new features, bug fixes and translation work)
- Java ATK Wrapper 0.27.2 (bug fixes)
- krb5-auth-dialog 0.11 (new features, bug fixes, documentation and translation work)
- libchamplain 0.3.3 (new features and bug fixes)
- libvtemm 0.20.3 (API improvements)
- mousetweaks 2.27.3 (bug fixes and translation work)
- Orca 2.27.3 (new features, bug fixes and translation work)
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
The following new KDE software has been announced this week:
You can find more new KDE software releases at
kde-apps.org.
Comments (none posted)
Version 0.2 of samurai-x has been announced.
"
We are happy to release version 0.2 of samurai-x. samurai-x is a
window manager written in pure python using ctypes, xcb and cairo.
A lot has happened since version 0.1 including:
* a new plugin system - the core samurai-x is now very small
with all other functionality added via plugins
* a new xcb binding - ooxcb - for more information
see http://docs.samurai-x.org/ooxcb/.
* lots of plugins! we now have plugins for most common
features found in other window managers"
Full Story (comments: none)
The following new Xorg software has been announced this week:
More information can be found on the
X.Org Foundation wiki.
Comments (none posted)
Desktop Publishing
Version 0.05 of pdfrecycle has been announced, it includes some new
functionality.
"
pdfrecycle creates a PDF file by composing pages from other PDF
files. It can add PDF bookmarks and metadata, scale, rotate and crop
pages and put multiple logical pages onto each physical sheet."
Full Story (comments: none)
Graphics
release 1.8.8 of the cairo graphics library has been announced.
"
The cairo community is pleased to announce the 1.8.8 release of the
cairo graphics library. This is the fourth update to cairo's stable
1.8 series and contains a small number of bug fixes (in particular a
few corrections to the documentation and a few fixes in the FreeType font
backend). This is being released just over six months after cairo 1.8.6."
Full Story (comments: none)
Prerelease 0.47 of the
Inkscape
scalable vector graphics editor has been announced.
"
Later than expected we uploaded a prerelease of upcoming Inkscape 0.47. We are working on rescheduling the final release."
Also, the winner of the Inscape 0.47 About Screen Contest has been
announced.
Comments (none posted)
GUI Packages
Version 4.5.1 of PyQt, a set of Python bindings for Qt, has been announced.
"
The highlights of this release include:
- support for Python v3
- support for Qt v4.5
- a new Pythonic API for connecting signals and slots that doesn't
require any knowledge of C++ data types
- support for the GTK+ theme engine."
Full Story (comments: none)
Math Applications
Version 0.24 of openopt, a free numerical optimization framework, has been announced.
"
OpenOpt 0.24, a free Python-written numerical optimization framework
with some own solvers and connections to tens of 3rd party ones, has
been released.
BSD license allows to use it in both free opensource and commercial
closed-code software."
Full Story (comments: none)
Multimedia
Version 1.0.3 of Moovida Media Center, a cross-platform and open-source
Media Center written in Python, has been announced.
"
Important features of this release include a much faster media scanning
and thumbnailing for videos and pictures, a better handling of plural
forms in translations and updated French translations."
Full Story (comments: none)
Music Applications
Version 5 of a2jmidid has been announced.
"
a2jmidid is a project that aims to ease usage of legacy ALSA sequencer
applications, in a JACK MIDI enabled system.
a2jmidid implementation is based on jack-alsamidi-0.5 that is [almost]
same as jackd ALSA "seq" MIDI backend, both created by Dmitry Baikov."
Full Story (comments: none)
Version 5 of zynjacku, a JACK-based, GTK2 host for LV2 synths, has been announced.
"
In this release:
* slv2 is no longer required
* cache list of suitable plugins
* speedup plugin list window
* new tool, zynspect, that can be used to list and inspect available
lv2 plguins.
* Fix assert when restoring rack presets
* By default, sort plugins by name
* Experimental support for dynmanifest extension. Combined with
NASPRO allows loading ladspa plugins in lv2rack.
* Set plugin GUI window's role to "plugin_ui" (for WM kludges etc)
* single plugin mode for lv2rack
* Hide external UIs when zynjacku/lv2rack quits".
Full Story (comments: none)
Web Browsers
Firefox 3.0.11 has been released with several security fixes. See these
known
issues for more information or see the
LWN vulnerability report for vendor
responses.
Full Story (comments: none)
Mark Seaborn has announced an effort to put CPython into Google's Native Client.
"
I have been doing some work to extend Google's Native Client to
support dynamic linking. For those who haven't heard of it,
Native Client is a sandboxing system for running a subset of x86 code.
It is proposed as a way of running native code inside web apps.
One of my aims has been to get CPython working in the web browser
under Native Client without having to modify CPython.
I recently got to the point where modules from the Python standard
library are importable under Native Client, including (as a
demonstration) the Sqlite extension module."
Full Story (comments: none)
Languages and Tools
Caml
The June 16, 2009 edition of the Caml Weekly News
is out with new articles about the Caml language.
Full Story (comments: none)
Perl
Version 1.3.0 of Parrot, a virtual machine aimed
at running all dynamic languages, has been announced.
This release includes numerous bug fixes and optimizations.
Full Story (comments: none)
PHP
Versions 5.2.10RC2 and 5.3.0RC3 of
PHP have been announced.
"
The PHP development team is proud to announce the second release candidate of PHP 5.2.10 (PHP 5.2.10RC2) and the third release candidate of PHP 5.3.0 (PHP 5.3.0RC3). These RCs focuses on bug fixes and stability improvements, and we hope only minimal changes are required for the next candidate or final stable releases."
Comments (none posted)
Python
Version 2.5.0 Final of Jython, an implementation of Python in Java,
has been announced.
"
Jython 2.5.0 brings us up to language level compatibility with the 2.5
version of CPython. This release has had a strong focus on CPython
compatibility, and so this release of Jython can run more pure Python
apps then any previous release."
Full Story (comments: none)
Version 3.1 Release Candidate 2 of Python has been announced.
"
Python 3.1 focuses on the stabilization and optimization of the features and
changes that Python 3.0 introduced. For example, the new I/O system has been
rewritten in C for speed. File system APIs that use unicode strings now handle
paths with undecodable bytes in them. Other features include an ordered
dictionary implementation, a condensed syntax for nested with statements, and
support for ttk Tile in Tkinter."
Full Story (comments: none)
The
Python svn builds
project has been announced.
"
The project aim is to provide developers (and non developers) tested python binary releases. The main feature is they install under /opt/opt-python-svnXXXXX2.7a0 directory. Doing so they could be installed side by side allowing module developers to test their modules against different builds."
Full Story (comments: none)
Version 4.8.1 of SIP has been announced.
"
SIP is a tool for generating Python modules that wrap C or C++ libraries.
It is similar to SWIG. It is used to generate PyQt and PyKDE.
SIP is licensed under the Python License and runs on Windows, UNIX, Linux
and MacOS/X. SIP requires Python v2.3 or later.
The main focus of this release is support for Python v3."
Full Story (comments: none)
Version 0.6.2 of Sphinx has been announced.
"
I'm proud to announce the release of Sphinx 0.6.2, which is a
bugfix-only release in the 0.6 series.
Sphinx is a tool that makes it easy to create intelligent and beautiful
documentation for Python projects (or other documents consisting of
multiple reStructuredText source files)."
Full Story (comments: none)
The June 10, 2009 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: 1)
Tcl/Tk
The June 14, 2009 edition of the Tcl-URL! is online with new
Tcl/Tk articles and resources.
Full Story (comments: none)
Version Control
Linus Torvalds is
happy about the 2.6.31 merge window, mostly because people have figured out how to use git most effectively. He also provides a bit more detail on the tradeoffs involved in using git (or any distributed SCM really) in a comment response. "
Part of the problem is that 'git' is such a flexible tool that you can use it in various modes, and mix things up freely. The whole distributed nature means that there's no gatekeeper, you can do whatever you want. And the flexibility and power is good, but it does mean that it's also easy to make a mess of it - the old UNIX philosophy of giving people rope, and letting them hang themselves with it if they want to.
[...]
So it takes time for people (me included) to learn the rules that work. And it seems people are learning. And that feels really good."
Comments (4 posted)
Page editor: Forrest Cook
Next page: Linux in the news>>