September 18, 2008
This article was contributed by Don Marti
Audio is a fitting topic for the first day of the Linux
Plumbers Conference. Users want sound to
Just Work, and there's lots of working code in
individual projects. But so far, it seems like
nobody has everything quite plumbed together in an
annoyance-free way.
Lennart
Poettering, a lead
developer of PulseAudio and Red Hat employee,
moderated the miniconference and started with a
summary of the state of Linux audio: "it's a mess."
The audio miniconference came up with two steps
toward cleaning up the mess, though. First, come up
with a coherent story for application developers on
what sound API to use, and how. Second, clean up the
often-confusing array of user-visible audio level controls.
PulseAudio first appeared to regular users
in
Fedora, starting with version 8, and now,
as Lennart puts it, is for up-to-date users,
"the software that currently breaks your audio."
PulseAudio is a sound server that mixes audio from
multiple applications and passes it along to the
sound hardware. It offers advanced features such
as network transparency: an application can play a
sound on a remote system, and PulseAudio makes it
come out the speakers on the remote machine where
the user is working. Supporting it shouldn't
be a big change for most application developers
to handle. It will handle applications written
to the kernel's maintained audio API, ALSA, using the
PulseAudio backend for alsa-lib. So the
PulseAudio transition has been relatively painless
for the distributions.
An earlier sound server project, the Enlightened
Sound Daemon (ESD) sound
server, is falling out of favor and Media
Application Server (MAS) has never really caught
on. However, one of the competing sound servers looks likely
to remain. On the pro audio side, the low-latency
sound server JACK
is the recommended option. JACK, the "Jack Audio
Connection Kit," as Dave Phillips writes, "holds
the keys to the kingdom" for connecting
studio applications such as the Ardour
digital audio workstation and the Rosegarden
MIDI sequencer. "If you want all of the features,
no one audio system supports all of them," Lennart
said.
Apple and Microsoft each have a single sound server
that does both desktop and pro audio, but nobody at
the session seemed to have much interest in that
direction for Linux. PulseAudio is optimized for
general desktop use and power savings, and supports
scheduling features that should minimize wakeups but
still allow for reasonably low-latency playback of
streaming audio. It's also
network-transparent and supports features such as
placing desktop sound events based on mouse position.
Network audio and desktop effects don't tempt pro
audio users. JACK's uncompromising approach toward
latency means it's likely to hog too much power to
be acceptable to battery-life-watching desktop users,
but fine for a studio with a rack full of gear. So two
sound servers, one for pro and one for the masses, seems
to be fine with both sets of users.
Abusing ALSA
PulseAudio, however, can't give applications direct
access to the hardware, and currently only about 70%
of ALSA applications use the API in a PulseAudio-safe
way, Lennart said. Some high-profile applications
are among those doing audio wrong. "Flash and
Skype are really really broken applications,
especially Flash," he said. Adobe split out the
parts of its code that talk to the audio subsystem,
and certain other plumbing, into an open-source
library, libflashsupport. But Flash remains broken.
The proprietary Flash library talks to libflashsupport
from multiple threads, and one thread calls a
destructor while another continues to send data.
"It works until you close the browser window and then
you get a race," Lennart said.
Developers who want to play audio have a
sometimes-confusing choice of tools, including PortAudio and
GStreamer.
(PortAudio is cross-platform, which is likely why
the popular cross-platform audio editing application
Audacity uses it.) GStreamer is relatively
feature-intense and heavyweight, also handling
video and transcoding. (Write a player with
Gstreamer and you get the ability to play your
collection of C64 SID files for free.)
[PULL QUOTE:
If someone comes and says, 'I want to
write an audio application. Which API should
I use?' I don't have a good answer
END QUOTE]
"If someone comes and says, 'I want to
write an audio application. Which API should
I use?' I don't have a good answer," Lennart
said. The current best answer seems to be to
write to the PulseAudio-safe subset of ALSA.
Jeff Licquia
of the Linux Standard Base (LSB), in the audience,
mentioned that ALSA is on track for inclusion
in LSB 4.0, and is a trial use module for 3.2.
LSB aims to define a compatibility standard for
Linux applications, and aims to do the kind of
application developer education that Linux audio
developers seem to need. Applications seeking LSB
certification must run all of the LSB tests, but can
fail anything tagged as trial use. "We're only keeping
the stuff that we hope will be around for the long
term," he said. If the LSB-safe subset of ALSA fits
into the PulseAudio-safe subset of ALSA, application
developers could write to ALSA and test with LSB.
"I would like to be able to tell people to use libsydney,"
Lennart said. Libsydney, in
progress, is intended to be a networking-friendly
general-purpose audio API.
ALSA and the HD-Audio widget problem
In ALSA, the hardware/software interface is in
good shape, but software to user interface needs some work. Takashi
Iwai, a core ALSA developer and Novell
employee, pointed out in a talk that the line
count for /sound code in the kernel is actually
shrinking, except for ASoC (system on a chip)
and HD-audio. "There will be no more sound cards,
especially PCI," he said. The one exception is the
SoundBlaster X-FI for gamers, which is currently
not supported well in ALSA. Creative announced proprietary
drivers in 2006, but one ALSA developer recently
did get access to a data sheet under NDA.
The new audio standard, HD-Audio, is commonly
found on new systems, and it's well-supported at the
kernel level. However, it's based on "widgets" with
vendor-configurable I/O pins. A driver can't tell
how the HD-Audio part is connected, so some Linux
plumbing work is required to identify which of the
many exposed level controls is the right one to show
the user. An audience member pointed out the need
to tweak multiple level settings on his hardware,
to get the right level without distortion.
Linux will need more information on how each
machine has its HD-Audio hardware hooked up in order
to reliably give the user a useful volume control.
Comments (145 posted)
System Applications
Clusters and Grids
Version 1.5.0 of zc.async has been announced.
"
The ``zc.async`` package provides an easy-to-use Python tool that
schedules
work persistently and reliably across multiple processes and machines."
Full Story (comments: none)
Database Software
Version 1.8.0 of LiquiBase has been
announced, it includes new features and bug fixes.
The software is:
"
A tool to manage database changes and refactorings. All changes to a database are stored in XML files that are stored in version control with other source code. A graphical IDE is also available".
Comments (none posted)
Update releases 8.3.4, 8.2.10, 8.1.14, 8.0.18 and 7.4.22 of the
PostgreSQL DBMS are available.
"
Updates for all maintained versions of PostgreSQL are available today:
8.3.4, 8.2.10, 8.1.14, 8.0.18 and 7.4.22. These releases fix more than
thirty minor issues reported and patched over the last three months. As
some of these issues carry a risk of data loss, administrators of
production applications should upgrade in their next possible scheduled
downtime."
Full Story (comments: none)
The September 21, 2008 edition of the PostgreSQL Weekly News
is online with the latest PostgreSQL DBMS articles and resources.
Full Story (comments: none)
Version 3.6.3 of SQLite has been
announced.
"
SQLite version 3.6.3 fixes a bug in SELECT DISTINCT that was introduced by the previous version. No new features are added. Upgrading is recommended for all applications that make use of DISTINCT."
Comments (none posted)
ZMySQLDA 3.0 for Zope 2 has been announced.
"
MySQL Database Adapter for Zope 2. Extensively reworked for stability and
compatibility with versions 2.8+ and modern MySQL versions. New features
from auto-creating database to limited Unicode support."
Full Story (comments: none)
Web Site Development
Rob Hudson has published
an introductory document for the Django web platform
Debug Toolbar.
"
I liked the fact that Symfony's Debug Toolbar was made up of distinct panels, each of which had their own rendering methods. I created the Django Debug Toolbar similarly with a single toolbar that contained many panels. The toolbar itself is a piece of middleware that instantiates each panel object on request, and performs processing and rendering as the response is being written back to the browser. In this way it is essentially a set of middleware classes (the panels) grouped together to display a single toolbar. Each panel subclasses a base panel class and overrides a few methods to render the toolbar."
Comments (none posted)
Version 1.0-alpha of the
WSO2 Web Service Framework for Jython has been released.
"
WSO2 WSF/Jython provides an amazingly simple approach to create (Code First)
and consume Web Services in Jython. This framework integrates the Apache
Axis2 web services engine into Jython. Thus,
providing all the power and versatility of the Axis2 engine to the Jython
user. Now, with just a few lines of code, Jython users can enjoy the
benefits of Service Oriented Architecture using Web Services in their
applications."
Full Story (comments: none)
Miscellaneous
At long last, Rockbox 3.0 is out. Rockbox, of course, is a free firmware
replacement for a number of portable music players; see
this LWN article for more
information on the 3.0 release.
Full Story (comments: 1)
Desktop Applications
Desktop Environments
The GNOME 2.24 release is out. There's a lot of new stuff, of course,
including the "Empathy" instant messaging client, Ekiga 3.0, better XRandR
support, some GTK+ 3.0 forward compatibility support, and the first release
of the GNOME mobile development platform. See
the release
notes for screenshots and details.
Full Story (comments: 11)
The following new GNOME software has been announced this week:
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
The , 2008 edition of the
KDE Commit-Digest has been
announced.
The content summary says:
"
"Shortcut Scheme" support allows creation of shortcut themes (Emacs, etc.) for use in KDE applications. A "Media Player" runner (with support for Amarok 2), more work on panel hiding, and support for text zoom in the "Web Browser" Plasmoid in Plasma. The "Weather Station" applet moves to kdereview. More refinements in PowerDevil, in preparation for a move to kdebase. Lots more functionality in Attica, the Open Collaboration Services desktop client. Start of session support in KDevPlatform (the basis of KDevelop 4). A "McCabe cyclomatic complexity metric engine" in KDevelop 4..."
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)
X.org 7.4 is out. Changes include the addition of support for ATI Radeon
r[567]00 chipsets, lots of performance improvements, better automatic
configuration. the
XACE
security framework, and a lot more. Some details can be found in
the release
notes.
Comments (28 posted)
The following new Xorg software has been announced this week:
More information can be found on the
X.Org Foundation wiki.
Comments (none posted)
Electronics
development version 1.5.0.20080706 of gEDA/gaf, a collection of
electronic CAD utilities, has been
announced.
"
After much delay (oh let's say 6 months), I am please to announce
the release of gEDA/gaf 1.5.0. This is a development snapshot, so
please report all new issues. This release includes a few new
features, a bunch of cleanup, and the usual slew of bug fixes.
I will send release notes out in a few days. Many thanks to
everybody who contributed."
Comments (none posted)
Version 2.1.0 of Gerbv, a Gerber format CAD file viewer,
has been
announced.
"
Gerbv release 2.1.0 introduces several new features."
Comments (none posted)
Version 20080905 of
Icarus Verilog has been announced.
"
Icarus Verilog is a a GPLed Verilog compiler. Icarus Verilog includes a a parser that parses Verilog (plus extensions) and generates an internal netlist. The netlist is passed to various processing steps that transform the design to more optimal/practical forms, then passed to a code generator for final output. The processing steps and the code generator are selected by command line switches." See the
release notes for more information.
Comments (none posted)
Games
Version 0.5.1 of OpenSkyNet has been
announced.
"
OpenSkyNet - Moving towards a comprehensive artificial intelligence solution for game developers under the LGPL. The goals are to implement action selection solvers, robust steering behaviors (including pathfinding algorithms), and machine learning."
Comments (none posted)
GUI Packages
Version 2.8.9 of
wxWidgets,
a cross-platform GUI toolkit, has been announced.
"
The wxWidgets team is pleased to announce a new wxWidgets release. The latest stable release in 2.8 series contains several bug fixes as well as a few new functions. Upgrading is recommended for all wxWidgets users."
Comments (none posted)
Interoperability
Version 1.1.5 of Wine has been
announced. Changes include:
"
Substantial JavaScript implementation,
Partial support for layered windows,
Support for Unicode file export in Regedit,
Proper exception handling in widl-generated code,
Asynchronous requests and cookies support in WinHTTP and
Various bug fixes."
Comments (none posted)
Multimedia
Version 0.5.11 of Elisa Media Center has been announced.
"
This 11th release of the 0.5 series introduces the following new
features:
- Extended D-Bus API to control the media scanning process
- Rotation of pictures is available as a control of the photo player
- New D-Bus interface to perform common operations on the audio player:
play, pause, stop, currently playing media, etc.
- Favorites are now available for videos as well
On top of that few but hindering bugs have been resolved during this
cycle."
Full Story (comments: none)
Web Browsers
There are a couple of new Firefox releases out there. They add a bunch of
new stuff, including fixes for
a
couple of scary security issues. Expect updates from
distributors shortly.
Full Story (comments: 2)
Languages and Tools
C
The September 20, 2008 edition of the GCC 4.3.3 Status Report
has been published.
"
The GCC 4.3 branch is open for regression and documentation fixes.
The 4.3 branch has nicely stabilized and the number of new serious
regressions is low. There are quite a number of bugs which
unclear status as of if they are valid or not. I have put them
into WAITING state and CCed relevant maintainers. Likewise
missed-optimization regressions are piling up, with low chance
of being fixed on a release branch."
Full Story (comments: none)
Caml
The September 23, 2008 edition of the Caml Weekly News
is out with new articles about the Caml language.
Full Story (comments: none)
Perl
Version 0.7.1 of Parrot has been
announced.
"
On behalf of the Parrot team, I'm proud to announce Parrot 0.7.1 "Manu Aloha." Parrot is a virtual machine aimed at running all dynamic languages."
Comments (none posted)
Python
Mark Seaborn has announced the CapPython project.
"
During the past couple of months I have been working on an
object-capability subset of Python - in other words, a restricted
execution scheme for sandboxing Python code. It has been influenced
by other object-capability subset languages, such as Joe-E (a subset
of Java), Caja/Cajita (subsets of Javascript) and Caperl
(based on Perl). I'm calling it CapPython because the name
doesn't seem to have been taken yet."
Full Story (comments: none)
Versions 2.6rc2 and 3.0rc1 of Python have been announced.
"
These are release candidates, so while they are not suitable for
production environments, we strongly encourage you to download and
test them on your software. We expect only critical bugs to be fixed
between now and the final releases. Currently Python 2.6 is scheduled
for October 1st, 2008. Python 3.0 release candidate 2 is planned for
October 1st, with the final release planned for October 15, 2008."
Full Story (comments: none)
Version 1.1 of PyKerberos has been announced, it includes a number of
new capabilities and bug fixes.
"
PyKerberos is a high-level Python wrapper for Kerberos/GSSAPI
operations. Instead of wrapping the entire Kerberos/GSSAPI framework,
PyKerberos instead offers a limited set of functions that do what is
needed for client/server Kerberos authentication based on
http://www.ietf.org/rfc/rfc4559.txt".
Full Story (comments: none)
The September 23, 2008 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
Libraries
Version 1.2.32 of libpng has been
announced.
"
Reference library for supporting the Portable Network Graphics (PNG) format.
This release fixes a new bug that causes a crash when attempting to read a PNG file that has multiple zTXt chunks."
Comments (4 posted)
Version 1.0.0 of libSpiff has been announced.
"
libSpiff is the official reference implementation
for XSPF by the Xiph.Org Foundation, which brought Open Media
formats like Vorbis, Flac and Speex to life.
XSPF is their take on building a playlist format."
Full Story (comments: none)
Miscellaneous
Version 1.0.1 of Harbour has been
announced, it includes a long list of bug
fixes and some new features.
"
The Harbour Project is a Free Open Source Software effort to build a multiplatform Clipper language compiler. Harbour consists of the xBase language compiler and the runtime libraries with different terminal plugins and different databases (not just DBF)".
Comments (none posted)
Page editor: Forrest Cook
Next page: Linux in the news>>