Development
Rob Savoye on the Cygnal rich media server
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.
System Applications
Database Software
MySQL Community Server 5.0.83 released
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."
PostgreSQL 8.4 Release Candidate 1 now available
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."
PostgreSQL Weekly News
The June 14, 2009 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.py-postgresql 0.9 released
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."
SQLite release 3.6.15 announced
Release 3.6.15 of the SQLite DBMS has been announced, it includes a number of new features and some bug fixes.
Device Drivers
CWiid project status update
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."
Interoperability
Samba versions 3.3.5 and 3.2.12 are available
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."
Printing
CUPS 1.4rc1 announced
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."
Telecom
Introducing the Android Scripting Environment
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).
Web Site Development
Announcing bobo
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".
web2py 1.64.0 released
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".
Desktop Applications
Audio Applications
lv2fil version 2.0 released
Version 2.0 of lv2fil has been announced. "Four-band parametric equaliser LV2 plugin. DSP code by Fons Adriaensen."
Data Visualization
RRDtool 1.4rc2 announced
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."
Desktop Environments
GNOME Software Announcements
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)
KDE Software Announcements
The following new KDE software has been announced this week:- Amarok 2.1.1 (new features and bug fixes)
- Cirkuit 0.1 (initial release)
- digiKam 1.0.0-beta1 (beta for KDE4)
- Firewall Builder 3.0.5 (bug fixes)
- Free Music Charts 1.3.1 (new features)
- Frescobaldi 0.7.11 (stability improvements)
- KAlarm 2.2.1/2.2.2 (bug fixes and translation work)
- KAlarm 2.2.1/2.2.3 (bug fixes)
- kikkanji 1.0 (initial release)
- KPackageKit 0.4.1.1 (bug fix)
- KpGen 1.1 Beta (new features, bug fixes and translation work)
- Maestro Metronome 1.2 (unspecified)
- MameExecutor 1.0 (new features, bug fixes and translation work)
- MameExecutor 1.0.1 (bug fix)
- Package KIO 0.2 (unspecified)
- PeaZip 2.6.2 (code cleanup)
- PlasmaNotify Firefox addon 0.3.0 (unspecified)
- 'Q' DVD-Author 1.9.0 (new features and bug fixes)
- VariCAD 2009 1.05 (new features)
samurai-x 0.2 released
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"
Xorg Software Announcements
The following new Xorg software has been announced this week:- dri2proto 2.1 (new feature)
- pixman 0.15.12 (ARM updates and clipping rule improvements)
Desktop Publishing
pdfrecycle 0.05 released
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."
Graphics
cairo release 1.8.8 now available
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."
Inkscape prerelease 0.47 is out
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.
GUI Packages
PyQt 4.5.1 released
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."
Math Applications
openopt 0.24 released
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."
Multimedia
Moovida Media Center 1.0.3 released
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."
Music Applications
a2jmidid version 5 released
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."
zynjacku 5 released
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".
Web Browsers
Firefox 3.0.11 available for download
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.CPython in the web browser under Native Client
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."
Languages and Tools
Caml
Caml Weekly News
The June 16, 2009 edition of the Caml Weekly News is out with new articles about the Caml language.
Perl
Parrot 1.3.0 released
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.
PHP
PHP 5.2.10RC2 and PHP 5.3.0RC3 released
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."
Python
Jython 2.5.0 Final is out
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."
Python 3.1 Release Candidate 2
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."
Announcing Python svn builds
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."
SIP 4.8.1 released
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."
Sphinx 0.6.2 released
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)."
Python-URL! - weekly Python news and links
The June 10, 2009 edition of the Python-URL! is online with a new collection of Python article links.
Tcl/Tk
Tcl-URL! - weekly Tcl news and links
The June 14, 2009 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.
Version Control
Torvalds: Happiness is a warm SCM
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."
Page editor: Forrest Cook
Next page:
Linux in the news>>
