LWN.net Logo

LWN.net Weekly Edition for October 08, 2009

X.Org releases: present and future

October 7, 2009

This article was contributed by Nathan Willis

The X.Org Foundation released xorg-server 1.7 on October 1st, in preparation for the imminent release of X11R7.5. Users can look forward to improvements in display configuration, screen transformation, and input devices, including the much-anticipated Multi-Pointer X (MPX) code that supports multiple independent keyboard focus points and mouse pointers. At the same time, the development team is drawing up plans to adopt a new release process to accommodate a predictable release schedule and better testing.

What's new with 1.7 and 7.5

Lower-level changes in the new release include several new display-oriented technologies: support for Extended Extended display identification data (E-EDID) and an update to the X Resize, Rotate and Reflect Extension (XRandR). Another proposed update, the "Shatter" enhancement to the EXA acceleration architecture, was deferred to a future release.

E-EDID is a revision of the EDID format with which monitors provide a machine-readable list of capabilities to attached graphics cards. E-EDID supports longer strings than EDID, localization of strings, and adds fields for aspect ratio changing and additional timing and frequency formulas. E-EDID will eventually be superseded by a newer format called DisplayID, but is of particular importance to home electronics users because of its usage in HDMI devices.

XRandR 1.3 adds two new capabilities: projective transforms and panning. Projective Transforms allow more generalized transformations of the image buffer than the previously supported rotation and reflection. This will allow transforms to correct for keystoning and other distortion, as well as scaling of the image buffer. If the displayed desktop is smaller than the virtual screen size, enabling Panning will allow the display to follow the cursor automatically.

The deferred project Shatter was one of X.Org's Google Summer of Code projects, and when integrated will allow screens to be split between multiple framebuffers.

Input devices also see changes in this release, most notably with MPX. As the name indicates, MPX allows multiple input devices to be used at once. That does not mean merely the ability to plug in two mice and two keyboards physically; X has supported that for a long time. But without MPX, multiple attached mice both control the same pointer, and multiple keyboards both route keystrokes into the same input stream. MPX allows for multiple, separate cursors, with separate focus behavior. Some X applications and toolkits will require modification to work with MPX, as they hard-code in the assumption that there is only one keyboard and pointer.

MPX is part of a larger revision to the X input system named XInput2. XInput2 builds on the previous XInput API, and adds other features such as Input Device Properties, a mechanism through which generic properties can be attached to input devices to report special characteristics to the X server and client applications. Such properties might include mouse button timeouts, pointer acceleration, or even logical names (such as distinguishing between multiple attached mice).

Other updates to specific subsystems include changes for Mesa, SELinux, and VGA arbitration, enhancements to the XQuartz server designed for Mac OS X, as well as the deprecation of several obsolete and unmaintained modules and extensions.

The process for 1.8

Peter Hutterer proposed reworking the X.Org release process in an email to the xorg-devel mailing list on September 26. He cited three problems with the existing process: an unpredictable schedule, too much development in the git master that frequently leaves it broken and unusable, and a too-short testing cycle that occurs late in the release process. He noted that the three problems were tightly related, and proposed that the project adopt a timed, predictable release schedule with separate windows for feature merging, bug fixing, and final testing.

The proposed process begins with starting separate branches for new features, rather than developing them as patch sets that could disrupt master. For each release cycle, the project would then use a three month merge window to integrate the feature branches into master, then enter into a two-month bug fix window, and finally freeze master for a one-month release window, during which time a release manager is in charge, and only crucial fixes are merged in. The result, argued Hutterer, would be a predictable six-month release cycle, and a much easier environment for testers.

Keith Packard questioned whether 3:2:1 was the best ratio for feature merging, bug fixing, and release freezing, specifically noting that the feature merge window was considerably larger than that used by the Linux kernel team. Hutterer replied that he thought it was a good starting value, particularly due to the fact that the entire process was new, but added that he thought every facet of the process should be reviewed after the 1.8 cycle, including possibly shortening the merge window.

The effect on testing was particularly popular with the other developers on the list during the subsequent discussion. Several contrasted X.Org's differences from the Linux kernel, beginning with the relative scarcity of X.Org testers. The consensus in the thread was that the history of an unstable git master and lack of documentation to guide willing testers in building and testing the code was to blame; a revised release process with a stable master and individual feature branches could go a long way towards building a community of active X.Org testers.

Hutterer made his proposal on the list because he was unable to attend the 2009 X Developers' Conference (XDC), held in Portland September 28-30. The XDC attendees discussed the proposal, after which Daniel Stone posted their decisions to xorg-devel. The group plans to adopt the basic proposed model for the xorg-server 1.8 / X11R7.6 release cycle, with the addition of choosing release managers for each cycle and asking developers to adopt per-subsystem trees in same manner that the Linux kernel developers use for subsystem maintenance.

Stone's email generated its own controversy thanks to its suggestion that if the the new process is a success for the 1.8/7.6 cycle, then the next step would be to merge graphics drivers into the main xorg-server tree for the 1.10/7.7 cycle. The arguments against merging drivers into the main xorg-server code base included license incompatibilities, but ultimately more developers deemed the simplicity of maintaining drivers in the same codebase as the server to be a long-term win. Still, that change in source code management is still just a proposal, and one slated for two release cycles in the future.

Ultimately, the goal of the proposed new release process is to make the main X.Org codebase more stable, more predictable, and as a result, easier to test. As several on the xorg-devel list pointed out, xorg-server is used on just as many systems as the Linux kernel, but has only a fraction of the active testers that help make the kernel so robust. X.Org continues to make improvements and enhancements with every release, and long gone are the naysayers of a decade ago who proposed ditching X altogether. Hopefully, X11R7.6 and xorg-server 1.8 will arrive on schedule six months from now, and will show the fruits of a longer and more determined testing process, too.

Comments (17 posted)

Scenes from the Real Time Linux Workshop

By Jonathan Corbet
October 5, 2009
The 11th Real Time Linux Workshop was held in Dresden, Germany, at the end of September; it was attended by some 200 researchers and developers working in that area. RTLWS was a well-organized event, with engaged participants, interesting topics, and more than adequate amounts of German [Conference speakers] beer. This article will be concerned with three sessions from that event; other topics (deadline schedulers in particular) will be looked at separately.

Real time or real fast?

There is a certain amount of confusion surrounding realtime systems; most commonly, people think that it is concerned with speed. The real focus of realtime computing, though, is determinism: the fastest possible response is far less important than knowing that the system will respond within a bounded time period. In fact, realtime is often at odds with speed, especially if speed is measured in system throughput; this conflict was driven home by Paul McKenney's talk titled "Real fast or real time: how to choose." Paul concluded that one should choose the "real fast" option in a number of situations, including those where throughput is the primary consideration, virtualization is in use, or hard deadlines are not present. In other words, if realtime response is not needed, a realtime kernel should not be used - not a particularly surprising conclusion.

Interestingly, though, the "real fast" option may sometimes be best in hard-deadline situations as well. In particular, if the amount of processing which must be done within the deadline is large enough, the performance costs associated with hard realtime systems may become more of an impediment to getting the work done in time than the non-deterministic nature of general-purpose systems. The number Paul put out was 20ms; if the system must do more computing than that within each deadline cycle, it is likely to perform better on "real fast" machines. In other words, after 20ms of computation, a throughput-optimized system will have caught up enough to make up for any extra latency which might delay the start of that computation.

See Paul's paper [PDF] for more details.

Non-deterministic hardware

Determinism is generally seen as a software issue; it is expected that hardware always behaves in a consistent way. Some research [PDF] presented by Peter Okech, though, makes it clear that contemporary hardware is not as deterministic as one might think. Today's computers incorporate a great deal of complexity from many sources: multiple processors, multiple levels of caching, long instruction-processing pipelines, instruction reordering, branch prediction, system management interrupts, etc. From complexity, says Peter, comes randomness. As a demonstration of this fact, his group did extensive timings of simple instruction sequences; even after long "warmup" cycles and with interrupts disabled, these sequences never did reach a point where they would execute in a constant or predictable time.

For added fun, Peter's group coded a random number generator based on hardware non-determinism. The resulting random number sequences were then subjected to all of the tests they could come up with, from basic mean-calculation and compression tests through to full entropy computation. The results came out the same each time: instruction timings on contemporary systems are truly random. There is no real need to buy special-purpose hardware for random number generation; we are already running on such hardware. Needless to say, there are implications for anybody looking for strict determinism from their systems, especially on very small time scales.

Developers and academics

The closing event of the conference was a panel session on the disconnect between academia and the development community; the panelists were James H. Anderson, Thomas Gleixner, Hermann Härtig, Jan Kiszka, Doug Niehaus, Ismael Ripoll, and Peter Zijlstra. The problem statement asked: why are there dozens of papers on deadline schedulers, but no implementation in Linux? How can somebody get a computer science degree without learning about the problems posed by multicore processors? The actual discussion was relatively unstructured, involving numerous members of the audience, and it did not answer those specific questions. But it was interesting nonetheless.

The session opened with an invitation to the panelists to make wishes, with no real concern for practicality. Developers and academics both wished that professors could receive recognition and credit for patches which get merged into an upstream project. The current system rewards the publication of papers while ignoring practical contributions (including little details like teaching) altogether. Without an incentive to get their work upstream, researchers tend to stop working once their research reaches a publishable state.

It was noted that in some companies (Siemens was cited), employees get credit for accepted patches in much the same way they get credit for more traditional publications.

Another wish which was well received on both sides was the idea that developers and researchers should attend each others' conferences. The two groups tend to speak very different languages; for example, academics talk about "deadlines" (a set period after which the work must be done) while developers worry about "latency" (how long it takes the system to respond to an event). Given fundamental concepts that differ in this way, it is not entirely surprising that the two groups do not always communicate well. Going over to the other side and being immersed in the concerns and language found there would be helpful for everybody working in this field.

Developers asked for the publication of papers which are more easily read on their own. It is hard for busy developers to make time to read academic papers; if they have to go look up a dozen other papers to make sense of one, they are likely to just give up. The publication of more survey papers was suggested as one way to help in this area. Another was to read recent dissertations, which tend to start with relatively complete summaries of the current state of academic understanding. The hosting of summary tutorials at conferences was also suggested.

There was a request from academia for more example problems and tasks that students could take on. Also requested was an easier way to hook research code into the kernel and play with it. That might make it easier for academics to push code upstream, but not all developers are convinced that's a good idea. Instead, they say, it may be better if academics remain focused on long-term problems, with the development community adapting the best ideas for implementation and upstream merging.

The best thing that could happen would be that Linus Torvalds suddenly falls in love with microkernels. If one gives academics the green light to be impractical, they will rarely miss the opportunity. So, it was suggested, the best thing that could happen would be that Linus Torvalds suddenly falls in love with microkernels. Thomas Gleixner could then become the maintainer of the L4 microkernel system. The underlying motivation here was not just that academics still think microkernels are better (many certainly do); it's also the simple fact that the Linux kernel has become so complex that it's getting hard for researchers to play with.

There was some lamentation that the academic community is not really producing students who are able to work with the development community. They don't know how to get code upstream. Increasingly, it seems, they don't really even know how to program - especially at the operating systems level. The academic system was charged with churning out armies of Java programmers who have little understanding of how computers actually work and have no clue of the costs of things. The result is that they go forth and create no end of highly bloated systems. The really good developers, it was claimed, tend to come from an electrical engineering background - though the prevalence of hardware engineers who churn out bad code was also noted.

Some universities have experimented with "real-world programming" courses. One of the things they have found is that registrations tend to be low - there is not a great deal of interest in taking that kind of class. There was also some special criticism directed toward the "Bologna process," which is trying to harmonize educational offerings across Europe. That process calls for reducing the standard undergraduate program to three years, which is not at all sufficient to teach people what they really need to know.

A suggestion for students who are interested in learning community development was to simply start with mailing list archives and spend some time watching how things are done. Then dive in. The community is making a real effort to avoid flaming people to a crisp these days, so jumping in is safer than it once was. But, in the end, people join the development community because they are interested in doing so; offering netiquette lessons is unlikely to inspire more of them. There are very few students who have the interest and the ability to become competent system-level programmers. It has always been that way; things have not really changed in that regard.

Internships at open source companies were suggested as a way to build both interest and experience. Such internships exist at a number of companies, though they tend to be fairly severely limited in number. What does exist, though, is the Google Summer of Code program, which is, for all practical purposes, an internship program on a massive scale. The problem here is that the kernel and realtime communities are not really organized in a way that lets them sign up to mentor summer of code students - this problem should certainly be solvable.

But none of that will help if students do not want to learn to do real development in the community. As strange as it seems, it appears to not be an entirely attractive profession. It takes years of work to become a competent engineer; many are simply unwilling to put in that time. Whether things have gotten worse because people expect instant gratification now, or whether it has always been this way was a matter of debate. One panelist suggested that things will only get better when good engineers make more money than good lawyers.

Another complaint was that universities have a certain tendency to actively block free software users. Some use proprietary virtual private network technology which is not available to Linux users. Homework submission sites which only work with Internet Explorer were also mentioned.

The session ended with little in the way of specific action items, but there was one: researchers requested a means by which they could easily experiment with new scheduling algorithms in the kernel. It was agreed that some sort of pluggable schedule technology would be added to the realtime tree, which has long served as a sort of playground for interesting new approaches. A pluggable scheduler seems unlikely to make it upstream, but presence in the realtime tree should make it sufficiently available for researchers to make use of.

The conference adjourned with the announcement of the venue for next year's event. The Real Time Linux Workshop has tended to move around more than most conferences; past events have been held all over Europe as well as China, Mexico, and the US. The 2010 Workshop will continue that practice by moving to Nairobi, Kenya, in the latter part of October. That should be an interesting place to discuss what's happening in the rapidly developing realtime Linux area.

Comments (26 posted)

Toward a freer Android

By Jonathan Corbet
October 6, 2009
Linux-based mobile phone platforms are really just specialized distributions. Like other distributions, phone platforms will live or die based on how well they meet the needs of their users. The Android platform has a high profile at the moment as the result of the entry of more handsets into the market, but also as a result of Google's actions toward derived distributions. Android is clearly not meeting the needs of all its users currently, but changes are afoot which may improve the situation.

The dust has mostly settled after Google's shutdown of the Cyanogen build for Android phones. Nobody can really dispute Google's core claim that Cyanogen was redistributing proprietary software in ways not allowed by the license. But numerous people have disputed Google's good sense; those applications are freely downloadable elsewhere and can only run on phones which already shipped with a copy. So shutting down their redistribution does Google little (if any) good, but it has had a harsh chilling effect over the enthusiastic communities that were promoting Android and trying to make it better. Now those communities are trying to regroup and continue their work, but the rules of the game have changed.

The most community-friendly representative within Google has long been Jean-Baptiste Queru; he clearly puts quite a bit of time into helping other developers work with Android. He is now at the center of an effort to turn Google's "Android Open Source Project" (AOSP) into something deserving of that name. Jean-Baptiste has (belatedly, one might say) figured out one of the major obstacles to contributing to the platform: the difficulty of actually running one's changes.

The primary target form factor for Android is a phone. That means that, deep inside, a fundamental part of allowing writers to play their part is to allow the Android Open-Source Project to be used on phones. And, by that, I don't just mean that it needs to compile and boot, i mean that it has to be usable as a day-to-day phone. Right now, it's not. The range of applications is too limited, the applications that are in there don't all work, and there are quite a few system glitches along the way.

Another aspect is that it makes no sense to expect every contributor to have to apply the same set of manual patches to get to a basic working state. Android Open-Source Project should be usable "out of the box" on commonly available hardware.

Anybody who has tried to build and install Android knows that this "out of the box" experience is certainly not available today. Part of the problem is the massive size and complexity of the Android platform as a whole; there is not a whole lot to be done about that. But even owners of the "Android Developer Phone," who might reasonably expect to be able to develop for their phones, have to locate a set of proprietary components and incorporate them into the build. And then there's the problem of those proprietary applications. A purely-free Android build lacks the maps, gmail, calendar, and market applications - and the synchronization backends which keep things current with the mothership. Such a build does not equip a handset to be "usable as a day-to-day phone."

The first step, according to Jean-Baptiste, is to get to where an Android build just works on the target hardware - the ADP1, naturally. Once the hardware-level hassles have been overcome, it might make sense to talk about filling in the missing applications. But until developers can easily create a build that runs on a real handset, there's not much point in looking at the bigger goals. With the upcoming AOSP 1.0 release, it looks like this preliminary phase is nearing completion.

Solving the rest of the problems should not be all that hard. If the gmail application never becomes available, mail can be read through IMAP instead - and that might just inspire some people to help improve the somewhat painful email application currently shipped with Android. There is a lot of interest in free mapping utilities, including tools like AndNav which have the potential to surpass Google's maps program. AndNav works from OpenStreetMap data and has the ability to do turn-by-turn navigation - something that the Google tool is unlikely to ever be able to do. SlideME has been offered as a free replacement for the market application. And so on.

The harder part might be the tools requiring synchronization with Google's services; those protocols are not always open. It has been made clear that the Android Open Source Project - hosted at Google - is not going to host software developed for reverse-engineered protocols. So, if Google continues to refuse to make the gmail, calendar, and market backends available, those applications simply will not be supported in free builds. There is, of course, nothing preventing the implementation of applications which synchronize to services hosted elsewhere.

The other place where Google will make its presence felt in this project is with licensing:

(L)GPLv3 is out of the question in all circumstances - it scares the phone industry so much that we'd be hurting the entire Android ecosystem if such code made it anywhere into the Android Open-Source Project.

GPLv2 might be allowed for new components, maybe, but given the extent to which Android has gone out of its way to avoid GPLv2 software as well, it could still be a hard sell.

Those looking for a more independent effort may be interested in the Open Android Alliance, which is working to make a fully-free version of Android outside of Google. The Alliance's project page (on Google Code, ironically) states that new work will be licensed under GPLv3. It looks like the developers behind the Alliance are not strongly tied to that license, but there are certainly developers out there who would like to see some sort of copyleft license used. If Google is going to hold back and make them reimplement applications, they reason, Google should not be able to take the resulting code and distribute it as another proprietary application.

The Open Android Alliance has a number of developers who are said to be working on various aspects of the problem. It does not, however, appear to have a mailing list or any code available for download. This is a newborn project; its long-term viability is yet to be determined.

What is clear is that people take the "open handset" idea seriously. It is not enough to dump a bunch of code into an online git server; many of us actually want to mess with our devices. Google, perhaps, is starting to understand that, even if it is still having a hard time balancing pressures from the development community, wireless carriers, hardware manufacturers, and its own lawyers. It is not yet clear whether that understanding will translate into sufficient openness for the Android project, but it appears that things might be headed in the right direction.

It seems that Linux World Domination in the handset market is within our grasp. But which Linux distributions will participate in that success? There are a number of Android handsets out there, but there are still more based on other Linux distributions and the LiMo platform. Soon (not soon enough, for many of us) there will be Maemo-based handsets to play with, and it would not be entirely surprising to see Moblin-based handsets in the not-too-distant future. Some of these platforms will do better than others in the market. It may well be that the platform which is the most open, and which draws the most developer interest, will win out.

Comments (36 posted)

Page editor: Jonathan Corbet

Security

LPC: Three sessions from the security track

By Jake Edge
October 7, 2009

The Linux Plumbers Conference (LPC) had a full-day security track with talks on multiple topics of interest—far too many to adequately cover. So, just a few of the talks will be looked at here. Some of the other presentations will likely serve as the basis for other articles on this page in the future.

SELinux in Ubuntu

Caleb Case reported on the status of SELinux in Ubuntu. Since Ubuntu already uses AppArmor, one of the obvious questions was: why would Ubuntu add SELinux? Case said that users were asking for it and that having more options for running SELinux (beyond Fedora/RHEL) was desirable. Ubuntu has had SELinux available to install since Hardy Heron (8.04), but it has many more policy modules enabled in Jaunty (9.04) and Karmic (soon to be released 9.10).

The SELinux policy "needs work", Case said, and SELinux in Ubuntu is "not nearly as slick" as it is in Fedora, but it is a work in progress. Users can now do an apt-get install selinux, which will pull in everything that is needed and uninstall AppArmor. The installation updates initramfs, installs the policy, and schedules a system relabel.

Policy is loaded from initramfs instead of via a patched init as has been done in the past. The upstart maintainers did not want to carry a patch to do policy loading, as they didn't want to have to patch for each and every Linux Security Module (LSM) that came along. As it turns out, loading from initramfs is becoming the popular option. Fedora is doing that via dracut and someone from the AppArmor team spoke up to note that it had switched over to loading policy from initramfs as well.

In the future, Case would like to see setroubleshoot added to Ubuntu and integrated with the desktop. They would like to enable more policy modules by default, so setroubleshoot would come in handy. Case said that the Ubuntu policy has fewer confined daemons than Fedora does, and that the reference policy has not been changed anywhere near as much as it has for Fedora. He invited the audience to "check it out, [and] see if it works, or doesn't" and joked that bugs should be submitted to Red Hat's Dan Walsh.

Smack and applications

Smack developer Casey Schaufler presented a look at application changes needed to support Smack on Linux. He started with a brief overview of Smack, including some newer information on packet labeling that can be used by Smack to enforce various controls on network traffic.

Not many changes were required to core applications to support Smack. Things like ls, id, and attr needed to change to show the Smack labels, while login required changes to set the Smack label on the user's login shell. mount needed to support some Smack-specific options for setting default labels on filesystems, and a new utility, newsmack—an administrative tool that is used for setting smack labels on processes and files—was added.

For network applications, sshd needed to be changed to handle the labeling of the login shell. To support network services running at different labels, an xinetd-like utility called smackpolyport was created. It listens at the '*' label and can spawn services running with other labels to enforce network access restrictions. There is also work in progress on adding a Smack extension to the X Access Control Extension (XACE). There is more work to be done to integrate Smack into window managers as well as things like D-Bus, he said.

Schaufler has a habit of tweaking the SELinux development community as part of his talks, and he continued that tradition at LPC. He was discussing his work on making Smack work with the Oracle 11gR1 database server, and one of the criteria he noted was that it did not work with SELinux. In fact, the first step in the installation guide is to turn off SELinux. Some grumbling from the SELinux developers was heard in response to that, with the indication that it was possible—perhaps even unofficially working—but there is no public information on how to run Oracle with SELinux. Schaufler then went through the, fairly simple, steps he took to make Oracle and Smack work together.

Someone asked Schaufler if Smack had been integrated into any distributions. He said that Wind River listed Smack in one of its brochures, and someone from Wind River piped up to say that it was in versions 2.0 and 3.0 of its Linux product. Schaufler also noted that Philips televisions are, or will be soon, running Smack.

Why policy is special

Joshua Brindle looked at the interaction between package managers and SELinux policies, noting that installing policies is very different than application installation. There are policies available for more than 290 applications currently that are typically packaged by distributions, often after some customization is done. For rpm-based distributions, policies get loaded via post-script sections, which can lead to problems that require user intervention if the policy module fails to load.

In addition, third-parties (like Oracle) have a hard time supporting policies for their packages, he said. There are "numerous hacks" to support policy loading. In general, policies just do not fit well into the current application installation model.

Policy is different because it potentially affects the entire system, unlike an application. Policies should be loaded before the applications they affect, or else there is a window in which the application is present, but the labels and policies have not been changed. If the policy fails to load, the application should not be installed, but under the current system, there is no way for rpm to roll the installation back if the post-script section fails.

Policies may also affect multiple applications and their interactions. In many cases, the policy should not be removed if the application is, because there may be user data that is protected by that policy. In addition, other applications may require the policies to be present so they can access the data. So, Brindle said, a new approach is needed. The goal of that work is to include the policy with the distribution package such that policies are installed first, "without hacks", and are part of the installation transaction, so they can be rolled back in the case of failure.

Brindle outlined additional goals of this work, which is initially targeted at rpm: supporting various corner cases like cross-installs and bootstrap installs. Helping third-parties distribute policies for their applications is also an explicit goal, so there needs to be support for multiple policies and policy types (e.g. targeted), as well as support for different distributions and releases. Overall, he summed up the goals as trying to "make life with SELinux easier".

The initial patch to rpm adds policy loading support before the transaction. A second patch changes the %Policy directive to support policy renaming as well as allowing policies to obsolete one another. In addition, the changes to the %Policy directive allow for different policies based on the policy type of the system. Additional patches will support bootstrapping and chroot() installations. Those patches will also add the policies to the rpm database, which will allow the user to change the system policy type while giving rpm the information it needs to install the proper policy.

There is more work to be done, of course. One area that needs to be addressed is how to inform the administrator of policy changes that are being done by a package. Packages from dubious sources could install policies that have the effect of disabling some or all SELinux protections, so administrators need to be informed. There may be support added for differing levels of trust based on where the package file came from, so that administrators can enforce restrictions on what kind of policies packages can install.

Other talks

The most popular attendee was clearly the AVC cow, which made an appearance in Eamon Walsh's demo of XACE. The cow popped up whenever there was an AVC denial from SELinux, which led to calls for more violations so the cow would pop up again. As Dan Walsh (no relation) noted in his blog linked above, it is proof that at least some folks at the NSA (where Eamon Walsh works) have a sense of humor.

Other talks in the track were Dan Walsh's presentation on "sandbox -X", a look at the kernel crypto subsystem by Herbert Xu, David Safford on using the Integrity Management Architecture (IMA), James Carter on a new SELinux policy infrastructure, and a discussion of how to make SELinux easier to use led by Bryan Jacobson. The slides for each of the talks are available on the LPC Program page. There was a fair amount of audience participation, both in terms of questions and suggestions, throughout the sessions; very much in keeping with the mission of LPC. Overall, it was a very useful track for anyone trying to keep up with security in Linux.

Comments (28 posted)

Brief items

ClamAV 0.94.x end of life - with prejudice

The ClamAV project has announced the end of support for version 0.94.x - and that doesn't mean just stopping updates. "Starting from 15 April 2010 our CVD will contain a special signature which disables all clamd installations older than 0.95 - that is to say older than 1 year. This move is needed to push more people to upgrade to 0.95 . We would like to keep on supporting all old versions of our engine, but unfortunately this is no longer possible without causing a disservice to people running a recent release of ClamAV." Upgrading to a recent version seems like a good idea for those who depend on ClamAV.

Full Story (comments: 19)

New vulnerabilities

backuppc: privilege escalation

Package(s):backuppc CVE #(s):CVE-2009-3369
Created:October 1, 2009 Updated:October 27, 2009
Description: From the Mandriva alert:

CgiUserConfigEdit in BackupPC 3.1.0, when SSH keys and Rsync are in use in a multi-user environment, does not restrict users from the ClientNameAlias function, which allows remote authenticated users to read and write sensitive files by modifying ClientNameAlias to match another system, then initiating a backup or restore.

Alerts:
Mandriva MDVSA-2009:253 2009-10-01
Ubuntu USN-843-1 2009-10-06
Fedora FEDORA-2009-9982 2009-09-29
Fedora FEDORA-2009-9973 2009-09-29

Comments (none posted)

elinks: off-by-one buffer overflow

Package(s):elinks CVE #(s):CVE-2008-7224
Created:October 2, 2009 Updated:October 30, 2009
Description: From the Red Hat advisory: An off-by-one buffer overflow flaw was discovered in the way ELinks handled its internal cache of string representations for HTML special entities. A remote attacker could use this flaw to create a specially-crafted HTML file that would cause ELinks to crash or, possibly, execute arbitrary code when rendered.
Alerts:
Red Hat RHSA-2009:1471-01 2009-10-01
Ubuntu USN-851-1 2009-10-21
CentOS CESA-2009:1471 2009-10-06
CentOS CESA-2009:1471 2009-10-30
Debian DSA-1902-1 2009-10-05
Oracle ELSA-2013-0250 2013-02-11

Comments (none posted)

kernel: denial of service

Package(s):kernel CVE #(s):CVE-2009-2903
Created:October 5, 2009 Updated:February 19, 2010
Description:

From the Red Hat bugzilla entry:

When the handle_ip_over_ddp() function checks for the "ipddp0" device and the device is not found, the function does not free the socket buffer structure (skb), leading to a memory leak. This only happens if you have the appletalk module loaded, but not the ipddp module, as this only happens when the "ipddp0" device does not exist.

Alerts:
SuSE SUSE-SA:2010:013 2010-02-18
SuSE SUSE-SA:2010:012 2010-02-15
SuSE SUSE-SA:2009:064 2009-12-22
SuSE SUSE-SA:2009:061 2009-12-14
Mandriva MDVSA-2009:329 2009-12-09
SuSE SUSE-SA:2009:060 2009-12-02
Ubuntu USN-852-1 2009-10-22
Mandriva MDVSA-2009:301 2009-11-20
Fedora FEDORA-2009-10639 2009-10-21
Debian DSA-1928-1 2009-11-05
Debian DSA-1915-1 2009-10-22
Fedora FEDORA-2009-10165 2009-10-03

Comments (none posted)

kernel: multiple vulnerabilities

Package(s):kernel CVE #(s):CVE-2009-3001 CVE-2009-3002
Created:October 5, 2009 Updated:February 15, 2010
Description:

From the Red Hat bugzilla entry:

1) NET: llc, zero sockaddr_llc struct
sllc_arphrd member of sockaddr_llc might not be changed. Zero sllc before
copying to the above layer's structure.

http://git.kernel.org/linus/3480c63bdf008e9289aab94418f43b9592978fff
http://git.kernel.org/linus/28e9fc592cb8c7a43e4d3147b38be6032a0e81bc
http://milw0rm.com/exploits/9513

Note that LLC sockets are restricted to root since v2.6.25-rc9 (see commit
3480c63b).

2) can: Fix raw_getname() leak
raw_getname() can leak 10 bytes of kernel memory to user

http://git.kernel.org/linus/e84b90ae5eb3c112d1f208964df1d8156a538289

Note that this was introduced in v2.6.25-rc1.

3) irda: Fix irda_getname() leak
irda_getname() can leak kernel memory to user.

http://git.kernel.org/linus/09384dfc76e526c3993c09c42e016372dc9dd22c

4) appletalk: fix atalk_getname() leak
atalk_getname() can leak 8 bytes of kernel memory to user

http://git.kernel.org/linus/3d392475c873c10c10d6d96b94d092a34ebd4791
http://milw0rm.com/exploits/9521

5) netrom: Fix nr_getname() leak
nr_getname() can leak kernel memory to user.

http://git.kernel.org/linus/f6b97b29513950bfbf621a83d85b6f86b39ec8db

6) econet: Fix econet_getname() leak
econet_getname() can leak kernel memory to user.

http://git.kernel.org/linus/80922bbb12a105f858a8f0abb879cb4302d0ecaa

7) rose: Fix rose_getname() leak
rose_getname() can leak kernel memory to user.

http://git.kernel.org/linus/17ac2e9c58b69a1e25460a568eae1b0dc0188c25

CVE request:
http://article.gmane.org/gmane.comp.security.oss.general/2029
http://article.gmane.org/gmane.comp.security.oss.general/2033  
Alerts:
SuSE SUSE-SA:2010:012 2010-02-15
SuSE SUSE-SA:2009:051 2009-11-02
Red Hat RHSA-2009:1540-01 2009-11-03
Ubuntu USN-852-1 2009-10-22
SuSE SUSE-SA:2009:056 2009-11-16
SuSE SUSE-SA:2009:054 2009-11-11
Debian DSA-1929-1 2009-11-05
Fedora FEDORA-2009-10165 2009-10-03
Debian DSA-1928-1 2009-11-05
CentOS CESA-2009:1550 2009-11-04
Red Hat RHSA-2009:1550-01 2009-11-03
Debian DSA-1915-1 2009-10-22

Comments (none posted)

kernel: denial of service

Package(s):kernel CVE #(s):CVE-2008-4609
Created:October 2, 2009 Updated:October 7, 2009
Description: From the SUSE advisory: Outpost24 AB researchers Robert E. Lee and Jack C. Louis have found TCP/IP denial of service vulnerabilities which allow remote attackers to allocate resources (memory and socket slots) on a targeted system indefinitely and so may cause a denial of the services on the attacked machine.

The attack requires the attacker to be able to establish TCP/IP connections on the machine. If all incoming connections are blocked, the system is not affected.

Alerts:
SuSE SUSE-SA:2009:047 2009-10-02

Comments (none posted)

openoffice.org: arbitrary code execution

Package(s):openoffice.org CVE #(s):CVE-2009-2139
Created:October 2, 2009 Updated:May 24, 2010
Description: From the Ubuntu advisory: A memory overflow flaw was discovered in OpenOffice.org's handling of EMF files. If a user were tricked into opening a specially crafted document, a remote attacker might be able to execute arbitrary code with user privileges.
Alerts:
Mandriva MDVSA-2010:105 2010-05-21
Mandriva MDVSA-2010:091 2010-05-04
Mandriva MDVSA-2010:035 2010-02-11
Ubuntu USN-840-1 2009-10-01

Comments (none posted)

samba: several vulnerabilities

Package(s):samba CVE #(s):CVE-2009-2813 CVE-2009-2906 CVE-2009-2948
Created:October 2, 2009 Updated:March 10, 2010
Description: From the Ubuntu advisory:

J. David Hester discovered that Samba incorrectly handled users that lack home directories when the automated [homes] share is enabled. An authenticated user could connect to that share name and gain access to the whole filesystem. (CVE-2009-2813)

Tim Prouty discovered that the smbd daemon in Samba incorrectly handled certain unexpected network replies. A remote attacker could send malicious replies to the server and cause smbd to use all available CPU, leading to a denial of service. (CVE-2009-2906)

Ronald Volgers discovered that the mount.cifs utility, when installed as a setuid program, would not verify user permissions before opening a credentials file. A local user could exploit this to use or read the contents of unauthorized credential files. (CVE-2009-2948)

Alerts:
Fedora FEDORA-2010-4050 2010-03-10
Mandriva MDVSA-2009:320 2009-12-06
Ubuntu USN-839-1 2009-10-01
Red Hat RHSA-2009:1528-01 2009-10-27
Red Hat RHSA-2009:1529-01 2009-10-27
Red Hat RHSA-2009:1585-01 2009-11-16
CentOS CESA-2009:1529 2009-10-30
SuSE SUSE-SR:2009:017 2009-10-26
Mandriva MDVSA-2009:277 2009-10-14
Debian DSA-1908-1 2009-10-14
Slackware SSA:2009-276-01 2009-10-05
Fedora FEDORA-2009-10180 2009-10-03
Fedora FEDORA-2009-10172 2009-10-03
CentOS CESA-2009:1529 2009-10-27
CentOS CESA-2009:1528 2009-10-27
rPath rPSA-2009-0145-1 2009-11-12
Gentoo 201206-22 2012-06-24

Comments (none posted)

strongswan: multiple vulnerabilities

Package(s):strongswan CVE #(s):CVE-2009-1957 CVE-2009-1958 CVE-2009-2661
Created:October 5, 2009 Updated:November 10, 2009
Description:

From the Debian advisory:

CVE-2009-1957, CVE-2009-1958: The charon daemon can crash when processing certain crafted IKEv2 packets.

CVE-2009-2661: The pluto daemon could crash when processing a crafted X.509 certificate.

Alerts:
SuSE SUSE-SR:2009:018 2009-11-10
SuSE SUSE-SR:2009:016 2009-10-13
Debian DSA-1899-1 2009-10-02

Comments (none posted)

wget: man in the middle attack

Package(s):wget CVE #(s):CVE-2009-3490
Created:October 6, 2009 Updated:December 4, 2009
Description: From the Ubuntu advisory: It was discovered that Wget did not correctly handle SSL certificates with zero bytes in the Common Name. A remote attacker could exploit this to perform a man in the middle attack to view sensitive information or alter encrypted communications.
Alerts:
Mandriva MDVSA-2009:206-1 2009-12-04
Fedora FEDORA-2009-11836 2009-11-20
Fedora FEDORA-2009-11740 2009-11-20
Fedora FEDORA-2009-11739 2009-11-20
CentOS CESA-2009:1549 2009-11-14
Debian DSA-1904-1 2009-10-09
Ubuntu USN-842-1 2009-10-06
Red Hat RHSA-2009:1549-01 2009-11-03
CentOS CESA-2009:1549 2009-11-09
CentOS CESA-2009:1549 2009-11-03
Gentoo 200910-01 2009-10-20

Comments (1 posted)

xen: guest privilege escalation

Package(s):xen CVE #(s):CVE-2009-3525
Created:October 2, 2009 Updated:May 25, 2010
Description: From the Red Hat advisory: The pyGrub boot loader did not honor the "password" option in the grub.conf file for para-virtualized guests. Users with access to a guest's console could use this flaw to bypass intended access restrictions and boot the guest with arbitrary kernel boot options, allowing them to get root privileges in the guest's operating system. With this update, pyGrub correctly honors the "password" option in grub.conf for para-virtualized guests.
Alerts:
SuSE SUSE-SR:2010:012 2010-05-25
Red Hat RHSA-2009:1472-01 2009-10-01
CentOS CESA-2009:1472 2009-10-30

Comments (none posted)

Page editor: Jake Edge

Kernel development

Brief items

Kernel release status

The current development kernel is 2.6.32-rc3, released by Linus on October 4. Note that there was no -rc2; that version was skipped to avoid confusion resulting from the fat-fingering of the version number in -rc1.

[O]ne thing that might be worth mention (despite being fairly small) is that there's been some IO latency tweaking in the block layer (CFQ scheduler). I'm hoping that ends up being one of those noticeable things, where people might actually notice better responsiveness. Give it a try.

One other user-visible change: by default, VFAT filesystems are now mounted with shortname=mixed instead of shortname=lower, preventing the downcasing of filenames when filesystems are copied. Also notable is that Btrfs is finally able to handle full-disk situations; we'll have to find something else to give Chris Mason grief about. The short-form changelog is in the announcement, or see the full changelog for all the details.

The current stable kernel is 2.6.31.3, released on October 7. It contains a single fix for a TTY problem that was affecting a number of users.

Previously, 2.6.31.2 was released on October 5. This is a large stable release; from the review announcement:

This release is big. Yeah, really big. There are a number of areas that needed some rework in order to get things back to working order. Like the tty layer. Hopefully everyone can now use their usb to serial devices again without oopsing the kernel. Xen and KVM also have reasonably big fixes, as does the ath5k and iwlwifi drivers. One might say that the patches for the iwlwifi drivers are a bit "bigger" than normal -stable material, but the wifi maintainer wants them, so he can handle the fallout. XHCI (the USB 3.0 controller) also has a big update here, to get it into workable shape to coincide with the release of the USB 3.0 developer kit. Without it, it wouldn't be really useful. And there's a whole raft of other important fixes as well, not to make light of them. A huge system speedup for large boxes is also in here, for those who like running benchmarks.

So expect more than the usual amount of change for a stable update.

2.6.27.36 and 2.6.30.9 were also released on October 5; they contain a somewhat smaller set of fixes. "This is the last release of the 2.6.30-stable series. Everyone should now move to the 2.6.31 kernel tree. If there are any issues preventing people from doing this, please let me know!"

Comments (none posted)

Quotes of the week

Al Viro has managed to get his and his wife's paperwork in order, and has returned to USA. Apparently, there was no record of his having been discharged from the Soviet Army. The authorities also lacked any record of his wife having an address in Russia while an adult. This situation was reportedly resolved as only Al Viro could have resolved it.
-- from the Netconf 2009 minutes

Reports of its demise were greatly exaggerated. But it's going to be a few days before we're back in sync with "current time" - I wanted to get the retrospective episodes on the merge window done, even though it's "old" now because the merge window period is of high value. I've been doing about 3 hours a night over the past few days to get through it. I view it as some kind of oddly exciting psychological masochism.
-- Jon Masters; who says podcasting is boring?

gad. You said "floppy" and "ioctl" in the same sentence. Where angels fear to tread.
-- Andrew Morton

The _reason_ for the driver exemption was the fact that even a broken driver is better than no driver at all for somebody who just can't get a working system without it, but that argument really goes away when the driver is so specialized that it's not about regular hardware any more.

And the whole "driver exemption" seems to have become a by-word for "I can ignore the merge window for 50% of my code". Which makes me very tired of it if there aren't real advantages to real users. So I'm seriously considering a "the driver has to be mass market and also actually matter to an install" rule for the exemption to be valid.

-- Linus Torvalds

Checkpatch is not very bright, it has no understanding of style beyond playing with pattern regexps. It's a rather dim tool that helps people get work done... or as some would have it a rather dim tool used by even dimmer tools to make noise on kernel list.
-- Alan Cox

Comments (2 posted)

Netconf 2009 minutes available

"Netconf 2009" was an invitation-only summit of networking developers held prior to LinuxCon. The minutes for the two days of discussion have now been posted on the Netconf 2009 page. Topics covered include transmit interrupt mitigation, bridging, multiqueue networking, wireless networking, and more.

Comments (none posted)

The CFQ "low latency" mode

One of the changes slipped into the 2.6.32-rc3 release was the addition of a "low latency" mode for the CFQ I/O scheduler. Normally the scheduler will try to delay many new I/O requests for a short time in the hope that they can be joined with other requests which may come shortly thereafter. This behavior will minimize disk seeks and maximize I/O request size, so it is clearly good for throughput. But the addition of delays can be a problem if the overriding goal is to complete the operation as quickly as possible.

The new mode (initially called "desktop" before being renamed "low_latency") is enabled by default; it can be adjusted by setting the iosched/low_latency attribute associated with each block device in sysfs. When set, some of the delays for "synchronous operations" (reads, generally) no longer happen. The result should be more responsive I/O and, one would hope, happier users.

Note: please see the comments for a description of this change which is more, um, accurate. Your editor blames the Death Flu that his kids brought home.

Comments (10 posted)

The ACPI processor aggregator driver

Patches merged into the mainline carry a number of tags to indicate who wrote them, who reviewed them, etc. A certain commit merged for 2.6.32 contains a relatively unusual tag, though:

    NACKed-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

The merging of this patch has drawn some complaints: why should it have made it into the mainline when a core developer clearly has problems with it?

The story goes something like this. ACPI provides a mechanism by which it can ask the system to make processors go idle in emergency situations; these can include power problems or an overheating system. The ACPI folks had originally proposed putting some hacks into the scheduler to implement this functionality. These changes, it seems, were little loved; that was the patch that Peter Zijlstra blocked outright.

So Shaohua Li went back and implemented this functionality as a driver instead. If the ACPI hardware starts sounding the red alert, this driver will create a top-priority realtime thread and bind it to the CPU that is to be idled. That thread, when it "runs," will simply put the CPU into a relatively deep sleep state for a while. When the emergency passes, the thread will go away and normal life resumes. It's a bit of a hack, but it gets the job done, and it is not destructive to system state the way hot-unplugging the CPU would be.

The proper fix would be to enhance the scheduler (the right way) to provide this functionality. But that almost certainly requires the intervention of a real scheduler hacker, and they haven't yet gotten around to solving the problem. So the ACPI "driver" is in the mainline for now. And it may stay that way; Linus said:

In fact, the only reason the scheduler people even know about it is that Len at first tried to do something more invasive, and was shot down. Now it's just a driver, and the scheduler people can _try_ to do it some other way if they really care, but that's _their_ problem. Not the driver.

In the meantime, I personally suspect we probably never want to even try to solve it in the scheduler, because why the hell should we care and add complex logic for something like that? At least not until we end up having the same issue on some other architecture too, and it turns from a hacky ACPI thing into something more.

And that's where things stand. The driver is little loved, but it will also be little used, can be replaced with a better mechanism if the right people care, and, in the mean time, it may solve a real problem for some users.

Comments (2 posted)

Kernel development news

2.6.x-rc0

By Jonathan Corbet
October 7, 2009
The mislabeling of 2.6.32-rc1 in the makefile might have been the cause of some confusion, though the skipping of -rc2 will have avoided the worst of it. But it seems that there is confusion with version numbers at other times, leading to a push for a change that Linus has absolutely no intention of making.

Responding to the 2.6.32-rc3 announcement, Len Brown noted that, as far as the version number is concerned, there is no difference between (say) 2.6.31 and a kernel checked out near the end of the 2.6.32 merge window, despite the fact that those two kernels differ significantly from each other. Len had a simple request:

This could be clarified if you update Makefile on the 1st commit after 2.6.X is frozen to simply be 2.6.Y-merge or 2.6.Y-rc0 or something. Anything but 2.6.X.

Others echoed this request, but Linus made it clear that he was not interested in this idea:

So no. I'm not going to do -rc0. Because doing that is _stupid_. And until you understand _why_ it's stupid, it's pointless talking about it, and when you _do_ understand that it's stupid, you'll agree with me.

So what is the problem with the -rc0 idea? It turns out there are a few, one of which being that there is already a much more flexible mechanism built into the kernel build system. If the LOCALVERSION_AUTO configuration option is set, the extra version information will be set in a more specific manner. Your editor, who has not been at home long enough to install a new kernel on his desktop for a bit, is currently running a kernel which reports its version as:

    2.6.31-rc5-00002-g3ce001e

It says that the kernel is the one found at git commit ID g3ce001e; the 00002 indicates that it is two commits after 2.6.31-rc5. This version number makes the exact kernel being run clear in a way that a simple makefile tweak would not. Even if -rc0 were really indicative, it would not really say which kernel was being run.

It gets worse than that, though, especially when developers start bisecting kernels to track down bugs. Consider this example: the two post-2.6.31-rc5 commits in your editor's kernel are a pair of BKL-removal patches which fell through the cracks and didn't make the 2.6.32 merge window. Assuming they make it into 2.6.33, the (simplified) git revision history will look something like this:

[Revisions diagram]

A developer trying to use bisection to find a problem in 2.6.33-rc1 might well end up at your editor's commit g3ce001e - as a stopping point, of course; that commit could not possibly be the cause of the problem. Should that developer look at the kernel version number at that point, they will not see 2.6.33-rc0 (even if Linus were to make that change) or even 2.6.32 - the version will be 2.6.31-rc5, the version that particular commit is based on. In the git era, kernel development is not a straight-line affair.

What this implies is that anybody who depends on the kernel version number as found in the Makefile is likely to end up confused. There is, of course, one important exception: that number is meaningful only for the actual release it represents. At any other time, it is an unreliable guide.

That doesn't change the fact that people are getting confused by running a kernel which identifies itself as 2.6.x, but which is really closer to 2.6.x+1. So it seems likely that a couple of things will be done to help. One of those is to make the LOCALVERSION_AUTO option enabled by default, and, possibly, difficult to disable. The other is to add some smarts to the build system which tries to check whether the kernel being built differs from the one which was tagged with the official release number. If that is the case, a simple "+" is appended to the version number. So a kernel checked out in the middle of the 2.6.33 merge window would identify itself as 2.6.32+.

Linus doesn't much like that last option (he sees it as losing a lot of information that the full LOCALVERSION_AUTO option provides), but he "doesn't hate" it either. He actually managed to not hate the idea enough to put together a patch implementing it. It has not been merged as of this writing; there is still some discussion happening about possible changes to the LOCALVERSION_AUTO format. But it seems likely that something along these lines will go in during the 2.6.33 merge window, if not before.

Comments (6 posted)

Concurrency-managed workqueues

By Jonathan Corbet
October 7, 2009
A "thread pool" is a common group of processes which can be called on to perform work at some future time. The kernel does not lack for thread pool implementations; indeed, there are more choices than one might like. Options include workqueues, the slow work mechanism, and asynchronous function calls - not to mention various private thread pool implementations found elsewhere in the kernel. It has long been thought that having just one thread pool mechanism would be better, but nobody, so far, has managed to put together a single implementation that everybody likes.

Of the mechanisms listed above, the most commonly used by far is workqueues. A workqueue makes it easy for code to set aside work to be done in process context at a future time, but workqueues are not without their problems. There is a shared workqueue that all can use, but one long-running task can create indefinite delays for others, so few developers take advantage of it. Instead, the kernel has filled with subsystem-specific workqueues, each of which contributes to the surfeit of kernel threads running on contemporary systems. Workqueue threads contend with each other for the CPU, causing more context switches than are really necessary. It's discouragingly easy to create deadlocks with workqueues when one task depends on work done by another. All told, workqueues - despite a couple of major rewrites already - are in need of a bit of a face lift.

Tejun Heo has provided that face lift in the form of his concurrency managed workqueues patch. This 19-part series massively reworks the workqueue code, addressing the shortcomings of the current workqueue subsystem. This effort is clearly aimed at replacing the other thread pool implementations in the kernel too, though that work is left for a later date.

Current workqueues have dedicated threads associated with them - a single thread in some cases, one thread per CPU in others. The new workqueues do away with that; there are no threads dedicated to any specific workqueue. Instead, there is a global pool of threads attached to each CPU in the system. When a work item is enqueued, it will be passed to one of the global threads at the right time (as deemed by the workqueue code). One interesting implication of this change is that tasks submitted to the same workqueue on the same CPU may now execute concurrently - something which does not happen with current workqueues.

One of the key features of the new code is its ability to manage concurrency in general. In one sense, all workqueue tasks are executed concurrently after submission. Actually doing things that way would yield poor results, though; those tasks would simply contend with each other, causing more context switches, worse cache behavior, and generally worse performance. What's really needed is a way to run exactly one workqueue task at a time (avoiding contention) but to switch immediately to another if that task blocks for any reason (avoiding processor idle time). Doing this job correctly requires that the workqueue manager become a sort of special-purpose scheduler.

As it happens, that's just how Tejun has implemented it. The workqueue patch adds a new scheduler class which behaves very much like the normal fair scheduler class. The workqueue class adds a couple of hooks which call back into the workqueue code whenever a task running under that class transitions between the blocked and runnable states. When the first workqueue task is submitted, a thread running under the workqueue scheduler class is created to execute it. As long as that task continues to run, other tasks will wait. But as soon as the running task blocks on some resource, the scheduler will notify the workqueue code and another thread will be created to run the next task. The workqueue manager will create as many threads as needed (up to a limit) to keep the CPU busy, but it tries to only have one task actually running at any given time.

Also new with Tejun's patch is the concept of "rescuer" threads. In a tightly resource-constrained system, it may become impossible to create new worker threads. But any existing threads may be waiting for the results of other tasks which have not yet been executed. In that situation, everything will stop cold. To deal with this problem, some special "rescuer" threads are kept around. If attempts to create new workers fail for a period of time, the rescuers will be summoned to execute tasks and, hopefully, clear the logjam.

The handling of CPU hotplugging is interesting. If a CPU is being taken offline, the system needs to move all work off that CPU as quickly as possible. To that end, the workqueue manager responds to a hot-unplug notification by creating a special "trustee" manager on a CPU which is sticking around. That trustee takes over responsibility for the workqueue running on the doomed CPU, executing tasks until they are all gone and the workqueue can be shut down. Meanwhile, the CPU can go offline without waiting for the workqueue to drain.

These patches were generally welcomed, but there were some concerns expressed. The biggest complaint related to the special-purpose scheduling class. The hooks were described as (1) not really scheduler-related, and (2) potentially interesting beyond the workqueue code. For example, Linus suggested that this kind of hook could be used to implement the big kernel lock semantics, releasing the lock when a process sleeps and reacquiring it on wakeup. The scheduler class will probably go away in the next version of the patch; what remains to be seen is what will replace it.

One idea which was suggested was to use the preemption notifier hooks which are already in the kernel. These notifiers would have to become mandatory, and some new callbacks would be required. Another possibility would be to give in to the inevitable future when perf counters events will take over the entire kernel. Event tracepoints are designed to provide callbacks at specific points in the kernel; some already exist for most of the interesting scheduler events. Using them in this context would mostly be a matter of streamlining the perf events mechanism to handle this task efficiently.

Andrew Morton was concerned that the new code would take away the ability for a specific workqueue user to modify its worker tasks - changing their priority, say, or having them run under a different UID. It turns out that, so far, only a couple of workqueues have been modified in this way. The workqueue used by stop_machine() puts its worker threads into the realtime scheduling class, allowing them to monopolize the processors when needed; Tejun simply replaced that workqueue with a set of dedicated kernel threads. The ACPI code had bound a workqueue thread to CPU 0 because some operations corrupt the system if run anywhere else; that case is easily handled with the existing schedule_work_on() function. So it seems that, for now at least, there is no need for non-default worker threads.

One remaining issue is that some subsystems use single-threaded workqueues as a sort of synchronization mechanism; they expect tasks to complete in the same order they were submitted. Global thread pools change that behavior; Tejun has not yet said how he will solve that problem.

It almost certainly will be solved, along with the other concerns. David Howells, the creator of the slow work subsystem, thinks that the new workqueues could be a good replacement. In summary, this change looks likely to be accepted, perhaps as early as 2.6.33. Then we might finally have a single thread pool in the kernel.

Comments (11 posted)

Infrastructure unification in the block layer

October 7, 2009

This article was contributed by Neil Brown

For many years, Linux has had two separate subsystems for managing indirect block devices: virtual storage devices which combine storage from one or more other devices in various ways to provide either improved performance, flexibility, capacity, or redundancy. These two are DM (which stands for Device Mapper) and MD (which might stand for Multiple Devices or Meta Disk and is only by pure coincidence the reverse of DM).

For nearly as long there have been suggestions that having two frameworks is a waste and that they should be unified. However little visible effort has been made toward this unification and such efforts as there might have been have not yielded any lasting success. The most united thing about the two is that they have a common directory in the Linux kernel source tree (drivers/md); this is more a confusion than a unification. The two subsystems have both seen ongoing development side by side, each occasionally gaining functionality that the other has and so, in some ways, becoming similar. But similarity is not unity, rather it serves to highlight the lack of unity as it is no longer function that keeps the two separate, only form.

Exploring why unification has never happened would be an interesting historical exercise that would need to touch on the personalities of the people involved, the drift in functionality between the two systems which started out with quite different goals, the differing perceptions of each by various members of the community, and the technological differences that would need to be resolved. Not being an historian, your author only feels competent to comment on that last point, and, as it is the one where a greater understanding is most likely to aid unification, this article will endeavor to expose the significant technological issues that keep the two separate. In particular, we will explore the weaknesses in each infrastructure. Where a system has strengths, they are likely to be copied, thus creating more uniformity. Where it has weaknesses, they are likely to be assiduously avoided by others, thus creating barriers.

Trying to give as complete a picture as possible, we will explore more than just DM and MD. Loop, NBD, and DRBD provide similar functionality behind their own single-use infrastructure; exploring them will ensure that we don't miss any important problems or needs.

The flaws of MD

Being the lead developer of MD for some years, your author feels honour bound to start by identifying weaknesses in that system.

One of the more ugly aspects of MD is the creation of a new array device. This is triggered by simply opening a device special file, typically in /dev. In the old days, when we had a fairly static /dev directory, this seemed a reasonable approach. It was simply necessary to create a bunch of entries in /dev (md0, md1, md2, ...) with appropriate major and minor numbers at the same time that the other static content of /dev was created. Then, whenever one of those entries was opened, the internal data structures would spontaneously be created so that the details of the device could be filled in.

However with the more modern concept of a dynamic /dev, reflecting the fact that the set of devices attached to a given system is quite fluid, this doesn't fit very well. udev, which typically manages /dev, only creates entries for devices that the kernel knows about. So it will not create any md devices until the kernel believes them to exist. They won't exist until the device file has been created and can be opened - a classic catch-22 situation.

mdadm, the main management tool for MD, works around this problem by creating a temporary device special file just so that it can open it and thereby create the device. This works well enough, but is, nonetheless, quite ugly. The internal implementation is particularly ugly and it was only relatively recently that the races inherent in destroying an MD device (which could be recreated at any moment by user space) were closed so that MD devices don't have to exist forever.

A closely related problem with MD is that the block device representing the array appears before the array is configured or has any data in it. So when udev first creates /dev/md0, an attempt to open and read from it, (to find out if a filesystem is stored there, for example) will find no content. It is only after the component devices have been attached to the array and it has been fully configured that there is any point in trying to read data from the array.

This initial state, where the device exists but is empty, is somewhat like the case of removable-media devices, and can be managed along the same lines as those: we could treat the array as media that can spontaneously appear. However MD is, in other ways, quite unlike removable media (there is no concept of "eject") and it would generally cause less confusion if MD devices appeared fully configured so they looked more like regular disk drive devices.

A problem that has only recently been addressed is the fact that MD manages the metadata for the arrays internally. The kernel module knows all about the layout of data in the superblock and updates it as appropriate. This makes it easy to implement, but not so easy to extend. Due to the lack of any real standard, there are many vendor-specific metadata layouts that all can be used to describe the same sort of array. Supporting all of those in the kernel would unnecessarily bloat the kernel, and supporting them in user space requires information about required updates to be reported to user space in a reliable way.

As mentioned, this problem has recently been addressed, so it is now quite possible to manage vendor-specific metadata from user space. It is still worth noting, though, as one of the problems that has stood in the way of earlier attempts at DM/MD integration: DM does not manage metadata at all, leaving it up to user-space tools.

The final flaw in MD to be exposed here is the use and nature of the ioctl() commands that are used to configure and manage MD arrays. The use of ioctl() has been frowned upon in the Linux community for some years. There are a number of reasons for this. One is that strace cannot decode newly-defined ioctls, so the use of ioctl() can make a program's behaviour harder to observe. Another is that it is a binary interface (typically passing C structures around) and so, when Linux is configured to support multiple ABIs (e.g. a 32bit and a 64bit version), there is often a need to translate the binary structure from one ABI to the other (see the nearly 3000 lines in fs/compat_ioctl.c).

In the case of MD, the ioctl() interface is not very extensible. The command for configuring an array allows only a "level", a "layout", and a "chunksize" to be specified. This works well enough for RAID0, RAID1, and RAID5, but even with RAID10 we needed to encode multiple values into the "layout" field which, while effective, isn't elegant.

In the last few years MD has grown a separate configuration interface via a collection of attribute files exposed in sysfs. This is much more extensible, and there are a growing number of features of MD which require the sysfs interface. However even here there is still room for improvement. The MD attribute files are stored in a subdirectory of the block device directory (e.g. /sys/block/md0/md/). While this seems natural, it entrenches the above-mentioned problem that the block device must exist before the array can be configured. If we wanted to delay creation of the block device until the array is ready to serve data, we would need to store these attribute files elsewhere in sysfs.

The failings of DM

DM has a very different heritage than MD and, while it shares some of the flaws of MD, it avoids others.

DM devices do not need to exist in /dev before they can be created. Rather there is a dedicated "character device" which accepts DM ioctl() commands, including the command to create a new device. Thus, the catch-22 problem from which MD suffers, is not present in DM. It has been suggested that MD should take this approach too. However, while it does solve one problem, it still leaves the problem of using ioctl(). There doesn't seem a lot of point making significant change to a subsystem unless the result avoids all known problems. So while waiting for a perfect solution, no such small steps have been made to bring MD and DM closer together.

The related issue of a block device existing before it is configured is still present in DM, though separating the creation of the DM device from the creation of the block device would be much easier in DM. This is because, as mentioned, with DM all configuration happens over the character device whereas with MD, the configuration happens via the block device itself, so it must exist before it can be configured.

While DM also uses ioctl() commands, which could be seen as a weakness, the commands chosen are much more extensible than those used by MD. The ioctl() command to configure a device essentially involves passing a text string to the relevant module within DM, and it interprets this string in any way it likes. So DM is not limited to the fields that were thought to be relevant when DM was first designed.

Metadata management with DM is very different than with MD. In the original design, there was never any need for the kernel module to modify metadata, so metadata management was left entirely in user space where it belongs. More recently, with RAID1 and RAID5 (which is still under development), the kernel is required to synchronously update the metadata to record a device failure. This requires a degree of interaction between the kernel and user space which has had to be added.

The main problem with the design of DM is the fact that it has two layers: the table layer and the target layer. This undoubtedly comes from the original focus of DM, which was logical volume management (LVM), and it fits that focus quite well. However, it is an unnecessary layering and just gets in the way of non-LVM applications.

A "target" is a concept internal to DM, which is the abstraction that each different module presents. So striping, raid1, multipath, etc. each present a target, and these targets can be combined via a table into a block device.

A "table" is simply a list of targets each with a size and an offset. This is analogous to the "linear" module in MD or what is elsewhere described as concatenation. The targets are essentially joined end-to-end to form a single larger block device.

This contrasts with MD where each module - raid0, raid1, or multipath, for example - presents a block device. This block device can be used as-is, or it can be combined with others, via a separate array, into a single larger block device.

To highlight the effect of this layering a little more, suppose we were to have two different arrays made of a few devices. In one array we want the data striped across the devices. In the other we lay the data out filling the first device first and then moving on to the next device. With MD, the only difference between these two would be the choice of "raid0" or "linear" as the module to manage them. With DM, the first step would involve including all the devices in a single "stripe" target, and then placing that target as the sole entry in a table. The second would involve creating a number of "linear" targets, one for each device, and then combining them into a table with multiple entries.

Having this internal abstraction of a "target" serves to insulate and isolate DM from the block device layer, which is the common abstraction used by other virtual devices. A good example of this separation is the online reconfiguration functionality that DM provides. The boundary between the table and the targets allows DM to capture new requests in the table layer while allowing the target layer to drain and become idle, and then to potentially replace all the targets with different targets before releasing the requests that have been held back.

Without that internal "target" layer, that functionality would need to be implemented in the block layer on its boundary with the driver code (i.e. in generic_make_request() and bio_endio()). Doing this would be more effort (i.e. DM would not benefit from insulation) and it would then be more generally useful (i.e. DM would not be so isolated). Many people have wanted to be able to convert a normal device into a degraded RAID1 "array" or to enable multipath support on a device without first unmounting the filesystem which was mounted directly from one of the paths. If online reconfiguration were supported at the block layer level, these changes would become possible.

The difference of DRBD

DRBD, the Distributed Replicated Block Device, is the most complex of the virtual block devices that do not aim to provide a general framework. It is not yet included in the mainline, but it could yet be merged in 2.6.33.

Its configuration mechanism is similar to that of DM in a number of ways. There is a single channel which can be used to create and then manage the block devices. The protocol used over this channel is designed to be extensible, though the current definitions are very much focused around the particular needs of DRBD (as would be expected), so how easy it might be to extend to a different sort of array is not immediately clear.

Where DM uses ioctl() with string commands over a dedicated character device, DRBD uses a packed binary protocol over a netlink connection. This is essentially a socket connection between the kernel module and a user-space management program which carries binary encoded messages back and forth. This is probably no better or worse than ioctl(); it is simply different. Presumably it was chosen because there is general bad feeling about ioctl(), but no such bad feeling about netlink. Linus, however, doesn't seem keen on either approach.

DRBD appears to share metadata management between the kernel module and user space. Metadata which describes a particular DRBD configuration is created and interpreted by user-space tools and the information that is needed by the kernel is communicated over the netlink socket. DRBD uses other metadata to describe the current replication state of the system - which blocks are known to be safely replicated and which are possibly inconsistent between the replicas for some reason. This metadata (an activity log and a bitmap) is managed by the kernel, presumably for performance reasons.

This sharing of responsibility makes a lot of sense as it allows the performance-sensitive portions to remain in the kernel but still leaves a lot of flexibility to support different metadata formats. This approach could be improved even more by making the bitmap and activity log into independent modules that can be used by other virtual devices. Each of DM, MD, and DRBD have very similar similar mechanisms for tracking inconsistencies between component devices; this is possibly the most obvious area where sharing would be beneficial.

Loop, NBD and the purpose of infrastructure

Partly to emphasize the fact that it isn't necessary to use a framework to have a virtual block device, loop and NBD (the Network Block Device) are worth considering. While loop doesn't appear to aim to provide a framework for a multiplicity of virtual devices, it nonetheless combines three different functions into one device. It can make a regular file look like a block device, it can provide primitive partitioning of a different block device, and it can provide encryption and decryption so that an encrypted device can be accessed. Significantly, these are each functions that were subsequently added to DM, thus highlighting the isolating effect of the design of DM.

NBD is much simpler in that is has just one function: it provides a block device for which all I/O requests are forwarded over a network connection to be serviced on - normally - a different host. It is possibly most instructive as an example of a virtual block device that doesn't need any surrounding framework or infrastructure.

Two areas where DM or MD devices make use of an infrastructure, while Loop and NBD need to fend for themselves, are in the creation of new devices and the configuration of those devices. NBD takes a very simple approach of creating a predefined number of devices at module initialization time and not allowing any more. Loop is a little more flexible and uses the same mechanism as MD, largely provided by the block layer, to create loop devices when the block device special file is opened. It does not allow these to be deleted until the module is unloaded, usually at system shutdown time. This architecture suggests that some infrastructure could be helpful for these drivers, and that the best place for that infrastructure could well be in the block layer, and thus shared by all devices.

For configuration, both Loop and NBD use a fairly ad hoc collection of ioctl() commands. As we have already observed, this is both common and problematic. They could both benefit from a more standardized and transparent configuration mechanism.

It might be appropriate to ask at this point why there is any need for subsystem infrastructure such as DM and MD. Why not simply follow the pattern seen in loop, NBD and DRDB and have a separate block device driver for each sort of virtual block device? The most obvious reason is one that doesn't really apply any more. At the time when MD and DM were being written there was a strong connection between major device numbers and block device drivers. Each driver needed a separate major number. Loop is 7, NBD is 43, DRBD is 147, and MD is 9. DM doesn't have a permanently allocated number, it chooses a spare number when the module is loaded, so it usually gets 254 or 253.

Furthermore, at that time, the number of available major numbers was limited to 255 and there was danger of running out. Allocating one major number for RAID0, one for LINEAR, one for RAID1 and so forth would have looked like a bit of a waste, so getting one for MD and plugging different personalities into the one driver might have been a simple matter of numerical economy. Today, we have many more major numbers available, and we no longer have a tight binding between major numbers and device drivers - a driver simply claims whichever device numbers it wants at any time, when the module is loaded, or when a device is created.

A second reason is the fact that all the MD personalities envisioned at the time had a lot in common. In particular they each used a number of component devices to create a larger device. While creating a midlayer to encapsulate this functionality might be a mistake, it is a very tempting step and would seem to make implementation easier.

Finally, as has been mentioned, having a single module which defines its own internal interfaces can provide a measure of insulation from other parts of the kernel. While this was mentioned only in the context of DM, it is by no means absent from MD. That insulation, while not necessarily in the best interests of the kernel as a whole, can make life a lot easier for the individual developer.

None of these reasons really stand up as defensible today, though some were certainly valid in the past. So it could be that, rather than seeking unification of MD and DM, we should be seeking their deprecation. If we can find a simple approach to allow different implementations of virtual block devices to exist as independent drivers, but still maintain all the same functionality as they presently have, that is likely to be the best way forward.

Unification with the device model

This brings us to the Linux device model. While there may be no real need to unify DM with MD, the devices they create need to fit into the unifying model for devices which we call the "device model" and which is exposed most obviously through various directory trees in sysfs. The device model has a very broad concept of a "device." It is much more than the traditional Unix block and character devices; it includes busses, intermediate devices, and just about anything that is in any way addressable.

In this model it would seem sensible for there to be an "array" device which is quite separate from the "block" device providing access to the data in the array. This is not unlike the current situation where a SCSI bus has a child which is a SCSI target which, in turn, has a child which is a SCSI LUN (Logical UNit), and that device itself is still separate from the block device that we tend to think of as a "SCSI disk". This separation would allow the array to be created and configured before the block device can come into being, thus removing any room for confusion for udev.

The device model already allows for a bus driver to discover devices on that bus. In most cases this happens automatically during boot or at hotplug time. However, it is possible to ask a bus to discover any new devices, or to look for a particular new device. This last action could easily be borrowed to manage creation of virtual block devices on a virtual bus. The automatic scan would not find any devices, but an explicit request for an explicitly-named device could always succeed by simply creating that device. If we then configure the device by filling in attribute files in the virtual block device, we have a uniform and extensible mechanism for configuring all virtual block devices that fits with an existing model.

Again, the device model already allows for binding different drivers to devices as implemented in the different "bind" files in the /sys/bus directory tree. Utilizing this idea, once a virtual block device was "discovered" on the virtual block device bus, an appropriate driver could be bound to it that would interpret the attributes, possibly create files for extra attributes, and, ultimately, instantiate the block device.

Possibly the most difficult existing feature to represent cleanly in the device model is the on-line reconfiguration that DM and, more recently, MD provide. This allows control of an array to be passed from one driver to another without needing to destroy and recreate the block device (thus, for example, a filesystem can remain mounted during the transition). Doing this exchange in a completely general way would involve detaching a block device from one parent and attaching it to another. This would be complex for a number of reasons, one being the backing_dev_info structure, which creates quite a tight connection between a filesystem and the driver for the mounted block device.

Another weakness in the device model is that dependencies between devices are very limited - a device can be dependent on at most one other device, its parent. This doesn't fit very well with the observation that an array is dependent on all the components of the array, and that these components can change from time to time. Fortunately this weakness has already been identified and, hopefully, will be resolved in a way that also works for virtual block devices.

So, while there are plenty of issues that this model leaves unresolved, it does seem that unification with the device model holds the key to unification between MD and DM, along with any other virtual block devices.

So what is the answer?

Knowing that a problem is hard does not excuse us from solving it. With the growing interest in managing multiple devices together, as seen in DRBD and Btrfs, as well as in the increasing convergence in functionality between DM and MD, now might be the ideal time to solve the problems and achieve unification. Reflecting on the various problems and differences discussed above, it would seem that a very important step would be to define and agree on some interfaces; two in particular.

The first interface that we need is the device creation and configuration interface. It needs to provide for all the different needs of DM, MD, Loop, NBD, DRBD, and probably even Btrfs. It needs to be sufficiently complete such that the current ioctl() and netlink interfaces can be implemented entirely through calls into this new interface. It is almost certain that this interface should be exposed through sysfs and so needs to integrate well with the device model.

The second interface is the one between the block layer and individual block drivers. This interface needs to be enhanced to support all the functionality that a DM target expects of its interface with a DM table, and in particular it needs to be able to support hotplugging of the underlying driver while the block device remains active.

Defining and, very importantly, agreeing on these interfaces will go a long way towards achieving the long sought after unification.

Comments (24 posted)

Patches and updates

Kernel trees

Core kernel code

Development tools

Device drivers

Documentation

Filesystems and block I/O

Janitorial

Memory management

Networking

Security-related

Virtualization and containers

Benchmarks and bugs

Miscellaneous

Page editor: Jonathan Corbet

Distributions

News and Editorials

openSUSE Boosters

By Rebecca Sobol
October 7, 2009

The openSUSE Boosters' Team held their first meeting after the openSUSE conference. Francis Giannaros introduced the team in a recent blog post.

The openSUSE Boosters team is a hand-picked group of fifteen Novell employees with skills ranging all across the distribution, and who are dedicated to openSUSE development and working with the community. Since the team members are spread all over Europe and as far away as Mexico, we came together for a few days after the openSUSE Conference to get to know each other better and make plans.

openSUSE logo

These people will be working full time on making it easier to contribute to the openSUSE Project and improving communication within and outside the project. Together they aim to make openSUSE the best Linux distribution, with an open, inviting and independent community. They will work to improve the infrastructure and lower the bar for contributors.

For now the Booster project team has been divided into three groups. One group will be organizing all documentation on how to contribute to the project. They will create a single wiki page with links to all such documentation, including video tutorials so that new people can more easily find what they are looking for.

A second group will be doing the same for the infrastructure, integrating all of it under one umbrella so that people can see all the various web services on one web page. Current web services include user forums, download sites, the build service, openFATE feature tracking, blogs, the weekly news, and much more. There will be a consistent look and feel for each web service landing page. The idea is to group these projects on the portal page, with categories for novices, experienced users and computer professionals so that people can figure out what needs work and where they can best contribute.

The third group will be working on making openSUSE's development Factory branch more transparent. There will be a Factory Status overview page that will allow developers and testers to easily see what packages are failing to build, which one are in need of a maintainer and where more testing is needed.

Future goals include adding social collaboration tools to the distribution and developing an Upstream Attraction Program. Overall they will help to improve communication within the project and help to spread the word about the project to potential contributors.

The mailing list has not been set up yet, but watch for it to get started soon. Meanwhile, contact information for the team members can be found on the openSUSE Boosters' Team site.

Comments (none posted)

New Releases

Gentoo Linux - Ten Years Compiling: 1999 - 2009

The Gentoo Project has announced the release of the Tenth Birthday LiveDVD. "The Gentoo-Ten LiveDVD is available in two flavors, a hybrid x86/x86_64 version, and an x86_64-only version. The livedvd-x86-amd64-32ul-10.0 will work on x86 or x86_64. If your arch is x86, then boot with the default gentoo kernel. If your arch is amd64 boot with the gentoo64 kernel. This means you can boot a 64bit kernel and install a customized 64bit userland while using the provided 32bit userland. The livedvd-amd64-multilib-10.0 version is for x86_64 only."

Comments (none posted)

openSUSE 11.2 Milestone 8 Released

The openSUSE Project has announced that the last openSUSE 11.2 Milestone release (M8) is available for download. "Test now and give feedback via our bugzilla since this is the last milestone before the first release candidate." Click below for more information.

Full Story (comments: none)

Ubuntu 9.10 Beta released

The Ubuntu team has announced the beta release of Ubuntu 9.10 Desktop and Server editions and the Ubuntu Netbook Remix. The Ubuntu 9.10 family of variants—Kubuntu, Xubuntu, Edubuntu, Ubuntu Studio and Mythbuntu—have also reached beta status.

Full Story (comments: none)

Distribution News

Debian GNU/Linux

Debian Release architectures

Andreas Barth has an update on the status of all architectures for Squeeze. Click below to see what's in and what isn't.

Full Story (comments: none)

Fedora

Fedora documentation team switching to CC-BY-SA license

The Fedora documentation team has announced a switch from the Open Publication License (OPL) to the better-known Creative Commons Attribution-Share Alike license. Several reasons were given, including the fact that the OPL author now recommends switching to CC licenses. More information is available on the Fedora wiki. "While OPL is a free and open documentation license, moving to a more widely known and adopted license and the one used by the likes of Wikipedia and GNOME Project helps us share our content more easily with the rest of the Free software community."

Full Story (comments: none)

Red Hat Enterprise Linux

From Code to Community to Enterprise-Ready (Red Hat News)

Red Hat News begins a series of blog posts leading up to the launch of Fedora 12. This one details how code makes it from the community and Fedora into Red Hat's commercial products including Red Hat Enterprise Linux. "There are many features that started in Fedora and are now included in Red Hat Enterprise Linux. PackageKit and PolicyKit are two prime examples. PackageKit is a system designed to make installing and updating software easier, through a set of easy-to-use command-line and graphical utilities. It also integrates software management with desktop activities like clicking on packages or entering commands in a terminal. PolicyKit is a toolkit for defining and handling the rules by which unprivileged processes can speak to privileged processes. It also provides a framework for centralizing these access policies for use in managed environments."

Comments (none posted)

Slackware Linux

GNOME SlackBuild 2.26.3 GNOME Desktop for Slackware and Slackware64 13.0

GNOME SlackBuild (GSB) provides a complete GNOME desktop for Slackware Linux. GSB 2.26.3 is available for Slackware 13.0. "We've brought our GNOME SlackBuild 2.26.3 to the latest Slackware and Slackware64, and it's working solidly. There have been some updates over the previous 2.26.3 release for Slackware 12.2, so please make sure to read the documentation, particularly our SLACKWARE-13.0_REPLACED_PACKAGES.TXT, CHANGES_AND_HINTS.TXT, and the INSTALL.TXT For those of you upgrading from gsb-current, please make sure to update your SOURCE lines in your slapt-getrc to point to the new directories." Found on GnomeDesktop.

Comments (none posted)

Ubuntu family

2009 Ubuntu Community Council vote complete

The new Ubuntu Community Council has been elected. The winners are Alan Pope, Benjamin Mako Hill, Daniel Holbach, Elizabeth Krumbach, Matthew East, Mike Basinger and Richard Johnson.

Full Story (comments: none)

Minutes from the Ubuntu Technical Board meeting

Click below for the minutes from the October 6, 2009 meeting of the Ubuntu Technical Board. Topics include Archive reorganization, Naming of new packages, core-dev application process, and more.

Full Story (comments: none)

Ubuntu DMB public meeting about approval process

There will be a public meeting of the Ubuntu Developer Membership Board (DMB) on Tuesday, October 13th, at 14:00 UTC in #ubuntu-meeting. Everyone is welcome to attend. The DMB is responsibile for approving new Ubuntu developers.

Full Story (comments: none)

Other distributions

Arch Linux Handbook in print

The Arch Linux Handbook is available in print. "The Arch Linux Handbook is distilled from the Beginners' Guide in the wiki. Purchases help support Arch Linux development."

Comments (none posted)

New Distributions

ZevenOS

The ZevenOS project was founded in order to preserve some of the extraordinary features of the BeOS operating system. ZevenOS is a pure Linux system, designed to induce as far as possible the feeling of BeOS and its successor ZETA. ZevenOS is very user friendly and an excellent choice for multimedia performance, even on older hardware. ZevenOS exists in two official versions. ZevenOS is the main and leading version based on Ubuntu Linux (especially: Xubuntu). ZevenOS-Neptuneas a community driven branch, based on the stable release of Debian GNU/Linux. ZevenOS Neptune is made for users, who prefer a very stable and fast Linux system and are less interested in the bleeding edge of software development. ZevenOS is available in German and English.

Comments (none posted)

Distribution Newsletters

DistroWatch Weekly, Issue 323

The DistroWatch Weekly for October 5, 2009 is out. "Slackware Linux has been around for longer than any other existing Linux distribution - and for a good reason. Its stability, reliability and dependability are characteristics that have won over many Linux users, especially in the server arena. But is it also a good desktop distribution? Read our comprehensive review of the recently released Slackware Linux 13.0 to find out. In the news section, Andreas Jaeger updates his stable openSUSE system to the latest 11.2 milestone with "zypper", Joe Brockmeier reflects on the recently concluded openSUSE conference, Red Hat asks Supreme Court to abolish software patents, and Slackware delivers the first updates in its development branch. Finally, we are pleased to announce that the recipient of the September 2009 DistroWatch.com donation is KompoZer, an open-source WYSIWIG web editor. Happy reading!"

Comments (none posted)

Fedora Weekly News 196

The Fedora Weekly News for October 4, 2009 is out. "Starting off with announcements, which includes general, development and event announcements, notice that minutes from last week's Fedora Board open meeting are now available, an update on Fedora 12 milestones, and an upcoming change in NFS. From the Fedora Planet, news and views from Fedora contributors. In Quality Assurance news, review of the latest Test Day on Anaconda's storage system, and detail from the team's weekly meetings, and several other activities. In Design news, details of the Art Team's work for the F12 beta release, an update on additional wallpapers, and discussion of a new notification theme on the list. The Security Advisory beat is back this week, with updates for the past few weeks for Fedora 10 and 11. The Virtualization list offers goodness on Fedora virtualization developments including new virt-rescue and virt-edit tools, and reorganization of the Xen git tree for the dom0 kernel. Our issue wraps up with news from the KDE SIG, including details on the expected feature set for Fedora 12 KDE spin and a new version of Amarok, "Sunjammer. We hope you enjoy this week's FWN!"

Full Story (comments: none)

Openmoko Community Updates/2009-09-30

The Openmoko Community Updates for September 30, 2009 are available. Topics include new Debian packages, Android Cupcake, QtMoko, Babiloo 2.0.9, Offline SHR Manager 0.1, Arora git4, Eieruhr, and much more.

Comments (none posted)

OpenSUSE Weekly News/91

This issue of the OpenSUSE Weekly News covers openSUSE 11.2 Milestone 8 Released, Federico Mena-Quintero: The openSUSE Boost Team, Linux.com/Rob Day: The Kernel Newbie Corner: "initrd" and "initramfs"—What's Up With That?, Amarok 2.2 "Sunjammer" released, and much more.

Comments (none posted)

Ubuntu Weekly Newsletter #162

The Ubuntu Weekly Newsletter for October 3, 2009 is out. "In this issue we cover: Ubuntu 9.10 Beta Released, Ubuntu 9.10 Countdown Banners, Ubuntu 9.10: Testers Needed, Planning of Karmic Release Parties Kicks off, Ubuntu Karmic Free Culture Showcase Winners Announced, Changes to releases.ubuntu.com rsync/FTP access, LoCo News: France, Ohio, Florida, Massachusetts, Honduras, Philly, Michigan, North Carolina, & El Salvador, Help Launchpad get better icons, Ubuntu Forums Tutorial of the Week, The Planet: Michael Lustfield, Martin Meredith, Mathias Gug, Shane Fagan & Luis de Bethencourt, PlayOnLinux to be in Ubuntu Karmic repositories, September Team Meeting Summaries, and much, much more!"

Full Story (comments: none)

Distribution reviews

openSUSE 11.2 M8: What a Fine Lookin' Lizard (ZDNet)

Jason Perlow takes a look at openSUSE 11.2 Milestone 8. "In my last reviews of openSUSE 11.1 and openSUSE 11, I had a number of stability issues with KDE 4.0 and 4.2 which led me to stick with the GNOME interface. However, there had been numerous reports on various mailing lists and community discussion forums that KDE 4.3 is now the fully "baked" version of 4.x, so I wanted to give KDE 4 a go again. I'm glad I did."

Comments (none posted)

Ubuntu's Karmic Koala opens its eyes (The Register)

The Register has a review of Ubuntu Karmic beta. "Once I got the 9.10 beta installed on my trusty Toshiba, I grabbed a stopwatch (okay, an iPhone stopwatch) and hit the power button. After restarting about a dozen times I found that the average startup time was 26 seconds, with the Xorg starting around the 15 second mark. That's only one second off Ubuntu's goal for Karmic Koala and a significant improvement over previous releases."

Comments (none posted)

Page editor: Rebecca Sobol

Development

LPC: The past, present, and future of Linux audio

By Jake Edge
October 7, 2009

The history, status, and future of audio for Linux systems was the topic of two talks—coming at the theme from two different directions—at the Linux Plumbers Conference (LPC). Ardour and JACK developer Paul Davis looked at audio from mostly the professional audio perspective, while PulseAudio developer Lennart Poettering, unsurprisingly, discussed desktop audio. Davis's talk ranged over the full history of Linux audio and gave a look at where he'd like to see things go, while Poettering focused on the changes since last year's conference and "action items" for the coming year.

Davis: origins and futures

Davis started using Linux as the second employee at Amazon in 1994, and started working on audio and MIDI software for Linux in 1998. So, he has been working in Linux audio for more than ten years. His presentation was meant to provide a historical overview on why "audio on linux still sucks, even though I had my fingers in all the pies that make it suck". In addition, Davis believes there are lessons to be learned from the other two major desktop operating systems, Windows and Mac OS X, which may help in getting to better Linux audio.

He outlined what kind of audio support is needed for Linux, or, really, any operating system. Audio data should be able to be brought in or sent out of the system via any available audio interface as well as via the network. Audio data, as well as audio routing information, should be able to be shared between applications, and that routing should be able to changed on the fly based on user requests or hardware reconfiguration. There needs to be a "unified approach" to mixer controls, as well. Most important, perhaps, is that the system needs to be "easy to understand and to reason about".

Some history

Linux audio support began in the early 1990s with the Creative SoundBlaster driver, which became the foundation for the Open Sound System (OSS). By 1998, Davis said, there was growing dissatisfaction with the design of OSS, which led Jaroslav Kysela and others to begin work on the Advanced Linux Sound Architecture (ALSA).

Between 1999 and 2001, ALSA was redesigned several times, each time requiring audio applications to change because they would no longer compile. The ALSA sequencer, a kernel-space MIDI router, was also added during this time frame. By the end of 2001, ALSA was adopted as the official Linux audio system in favor instead of OSS. But, OSS didn't disappear and is still developed and used both on Linux and other UNIXes.

In the early parts of this decade, the Linux audio developer community started discussing techniques for connecting audio applications together, something that is not supported directly by ALSA. At roughly the same time, Davis started working on the Ardour digital audio workstation, which led to JACK. The audio handling engine from Ardour was turned into JACK, which is an "audio connection kit" that works on most operating systems. JACK is mostly concerned with the low-latency requirements of professional audio and music creation, rather than the needs of desktop users.

Since that time, the kernel has made strides in supporting realtime scheduling that can be used by JACK and others to provide skip-free audio performance, but much of that work is not available to users. Access to realtime scheduling is tightly controlled, so there is a significant amount of per-system configuration that must be done to access this functionality. Most distributions do not provide a means for regular users to enable realtime scheduling for audio applications, so most users are not benefiting from those changes.

In the mid-2000s, Poettering started work on the PulseAudio server, KDE stopped using the aRts sound server, GStreamer emerged as a means for intra-application audio streaming, and so on. Desktops wanted "simple" audio access APIs and created things like Phonon and libsydney, but meanwhile JACK was the only way to access Firewire audio. All of that led to great confusion for Linux audio users, Davis said.

Audio application models

At the bottom, audio hardware works in a very simple manner. For record (or capture), there is a circular buffer in memory to which the hardware writes, and from which the software reads. Playback is just the reverse. In both cases, user space can add buffering on top of the circular buffer used by the hardware, which is useful for some purposes, and not for others.

There are two separate models that can be used between the software and the hardware. In a "push" model, the application decides when to read or write data and how much, while the "pull" model reverses that, requiring the hardware to determine when and how much I/O needs to be done. Supporting a push model requires buffering in the system to smooth over arbitrary application behavior. The pull model requires an application that can meet deadlines imposed by the hardware.

Davis maintains that supporting push functionality on top of pull is easy, just by adding buffering and an API. But supporting pull on top of push is difficult and tends to perform poorly. So, audio support needs to be based on the pull model at the low levels, with a push-based API added in on top, he said.

Audio and video have much in common

OSS is based around the standard POSIX system calls, such as open(), read(), write(), mmap(), etc., while ALSA (which supports those same calls) is generally accessed through libasound, which has a "huge set of functions". Those functions provide ways to control hardware and software configuration along with a large number of commands to support various application styles.

In many ways, audio is like video, Davis said. Both generate a "human sensory experience" by rescanning a data buffer and "rendering" it to the output device. There are differences as well, mostly in refresh rates and the effect of missing refresh deadlines. Unlike audio, video data doesn't change that frequently when someone is just running a GUI—unless they are playing back a video. Missed video deadlines are often imperceptible, which is generally not true for audio.

So, Davis asked, does anyone seriously propose that video/graphics applications should talk to the hardware directly via open/read/write/etc.? For graphics, that has been mediated by a server or server-like API for many years. Audio should be the same way, even though some disagree, "but they are wrong", he said.

The problem with UNIX

The standard UNIX methods of device handling, using open/read/write/etc., are not necessarily suitable interfaces for interacting with realtime hardware. Davis noted that he has been using UNIX for 25 years and loves it, but that the driver API lacks some important pieces for handling audio (and video). Both temporal and data format semantics are not part of that API, but are necessary for handling that audio/video data. The standard interfaces can be used, but don't promote a pull-based application design.

What is needed is a "server-esque architecture" and API that can explicitly handle data format, routing, latency inquiries, and synchronization. That server would mediate all device interaction, and would live in user space. The API would not require that various services be put into the kernel. Applications would have to stop believing that they can and should directly control the hardware.

The OSS API must die

The OSS API requires any services (like data format conversion, routing, etc.) be implemented in the kernel. It also encourages applications to do things that do not work well with other applications that are also trying to do some kind of audio task. OSS applications are written such that they believe they completely control the hardware.

Because of that, Davis was quite clear that the "OSS API must die". He noted that Fedora no longer supports OSS and was hopeful that other distributions would follow that lead.

When ALSA was adopted, there might have been an opportunity to get rid of OSS, but, at the time, there were a number of reasons not to do that, Davis said. Backward compatibility with OSS was felt to be important, and there was concern that doing realtime processing in user space was not going to be possible—which turned out to be wrong. He noted that even today there is nothing stopping users or distributors from installing OSS, nor anything stopping developers from writing OSS applications.

Looking at OS X and Windows audio

Apple took a completely different approach when they redesigned the audio API for Mac OS X. Mac OS 9 had a "crude audio architecture" that was completely replaced in OS X. No backward compatibility was supported and developers were just told to rewrite their applications. So, the CoreAudio component provides a single API that can support users on the desktop as well as professional audio applications.

On the other side of the coin, Windows has had three separate audio interfaces along the way. Each maintained backward compatibility at the API level, so that application developers did not need to change their code, though driver writers were required to. Windows has taken much longer to get low latency audio than either Linux or Mac OS X.

The clear implication is that backward compatibility tends to slow things down, which may not be a big surprise.

JACK and PulseAudio: are both needed?

JACK and PulseAudio currently serve different needs, but, according to Davis, there is hope that there could be convergence between them down the road. JACK is primarily concerned with low latency, while PulseAudio is targeted at the desktop, where application compatibility and power consumption are two of the highest priorities.

Both are certainly needed right now, as JACK conflicts with the application design of many desktop applications, while PulseAudio is not able to support professional audio applications. Even if an interface were designed to handle all of the requirements that are currently filled by JACK and PulseAudio, Davis wondered if there were a way to force the adoption of a new API. Distributions dropping support for OSS may provide the "stick" to move application developers away from that interface, but could something similar be done for a new API in the future?

If not, there are some real questions about how to improve the Linux audio infrastructure, Davis said. The continued existence of both JACK and PulseAudio, along with supporting older APIs, just leads to "continued confusion" about what the right way to do audio on Linux really is. He believes a unified API is possible from a technical perspective—Apple's CoreAudio is a good example—but it can only happen with "political and social manipulation".

Poettering: The state of Linux audio

The focus of Poettering's talk was desktop audio, rather than embedded or professional audio applications. He started by looking at what had changed since last year's LPC, noting that EsounD and OSS were officially gone ("RIP"), at least in Fedora. OSS can still be enabled in Fedora, but it was a "great achievement" to have it removed, he said.

There were only bugs reported against three applications because of the OSS removal, VMware and quake2 amongst them. He said that there "weren't many complaints", but an audience member noted the "12,000 screaming users" of VMware as a significant problem. Poettering shrugged that off, saying that he encouraged other distributions to follow suit.

Confusion at last year's LPC led him to create the "Linux Audio API Guide", which has helped clarify the situation, though there were complaints about what he said about KDE and OSS.

Coming in Fedora 12, and in other distributions at "roughly the same time", is using realtime scheduling by default on the desktop for audio applications. There is a new mechanism to hand out realtime priority (RealtimeKit) that will prevent buggy or malicious applications from monopolizing the CPU—essentially causing a denial of service. The desktop now makes use of the high-resolution timers, because they "really needed to get better than 1/HZ resolution" for audio applications.

Support for buffers of up to 2 seconds has been added. ALSA used to restrict the buffer size to 64K, which equates to 70ms 370ms of CD quality audio. Allowing bigger buffers is "the best thing you can do for power consumption" as well as dropouts, he said.

Several things were moved into the audio server, including timer-based audio scheduling which allows the server to "make decisions with respect to latency and interrupt rates". A new mixer abstraction was added, even though there are four existing already in ALSA. Those were very hardware specific, Poettering said, while the new one is a very basic abstraction.

Audio hardware has acquired udev integration over the last year, and there is now "Bluetooth audio that actually works". Poettering also noted that audio often didn't work "out of the box" because there was no mixer information available for the hardware. Since last year, an ALSA mixer initialization database has been created and populated: "It's pretty complete", he said.

Challenges for the next year

There were a number of issues with the current sound drivers that Poettering listed as needing attention in the coming year. Currently, for power saving purposes, PulseAudio shuts down devices two seconds after they become idle. That can lead to problems with drivers that make noise when they are opened or closed.

In addition, there are areas where the drivers do not report correct information to the system. Decibel range of the device is one of those, along with the device strings that are either broken or missing in many drivers, which makes it difficult to automatically discover the hardware. The various mixer element names are often wrong as well; in the past it "usually didn't matter much", but it is becoming increasingly important for those elements to be consistently named by drivers. Some drivers are missing from the mixer initialization database, which should be fixed as well.

The negotiation logic for sample rates, data formats, and so on are not standardized. The order in which those parameters are changed can be interpreted differently by each driver which leads to problems at the higher levels, he said. There are also problems with timing for synchronization between audio and video that need to be addressed at the driver level.

Poettering also had a whole slew of changes that need to be made to the ALSA API so that PulseAudio (and others) can get more information about the hardware. Things like the routing and mixer element mappings as well as jack status (and any re-routing that is done on jack insertion) and data transfer parameters such as the timing and the granularity of transfers. Many of the current assumptions are based on consumer-grade hardware which doesn't work for professional or embedded hardware, he said. It would be "great if ALSA could give us a hint how stuff is connected".

There is also a need to synchronize multiple PCM clocks within a device, along with adding atomic mixer updates that sync to the PCM clock. Latency control, better channel mapping, atomic status updates, and HDMI negotiation are all on his list as well.

Further out, there are a number of additional problems to be solved. Codec pass-through—sending unaltered codec data, such as SPDIF, HDMI, or A2DP, to the device—is "very messy" and no one has figured out how to handle synchronization issues with that. There is a need for a simpler, higher-level PCM API, Poettering said, so that applications can use the pull model, rather than being forced into the push model.

Another area that needs work is handling 20 second buffering. There are a whole new set of problems that come with that change. As an example, Poettering pointed out the problems that can occur if the user changes some setting after that much audio data has been buffered. There need to be ways to revoke the data that has been buffered or there will be up to 20 second lags between user action and changes to the audio.

Conclusion

Both presentations gave a clear sense that things are getting better in the Linux audio space, though perhaps not with the speed that users would like to see. Progress has clearly been made and there is a roadmap for the near future. Whether Davis's vision of a unified API for Linux audio can be realized remains to be seen, but there are lots of smart hackers working on Linux audio. Sooner or later, the "one true Linux audio API" may come to pass.

Comments (32 posted)

System Applications

Audio Projects

New Music Player Daemon releases

Several new packages are available from the Music Player Daemon project including mpc-0.18, libmpdclient-2.0 and mpd-0.15.4. "Music Player Daemon (MPD) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol."

Comments (none posted)

PulseAudio 0.9.19 released

Version 0.9.19 of the PulseAudio sound server has been announced. "A handful of minor fixes and translation updates." See the changes document for details.

Comments (none posted)

Database Software

Elixir 0.7.0 released

Version 0.7.0 of Elixir has been announced, it includes several bug fixes. "Elixir is a declarative layer on top of the SQLAlchemy library. It is a fairly thin wrapper, which provides the ability to create simple Python classes that map directly to relational database tables (this pattern is often referred to as the Active Record design pattern), providing many of the benefits of traditional databases without losing the convenience of Python objects."

Full Story (comments: none)

Ingres Database 9.3 released

Here's a press release announcing the availability of Ingres Database 9.3. New features include PAM support and more support for Java applications. The big push, though, seems to be on migration from other databases: "'As the fate of MySQL is currently in the hands of the European Commission, open source community developers and our global business customers and partners are seeking a more stable, reliable open source database,' said Deb Woods, vice president of product management, Ingres. 'Ingres Database 9.3 is designed to meet their needs with an easy migration path to Ingres and we encourage anyone looking for an alternative to consider migration today'"

Full Story (comments: 30)

PostgreSQL Weekly News

The October 4, 2009 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Interoperability

Samba announces four security releases

The Samba project has announced four new security releases. Samba 3.0.37, Samba 3.2.15, Samba 3.3.8 and Samba 3.4.2. All four releases address three security issues.

Comments (none posted)

Networking Tools

OpenSSH 5.3 released

OpenSSH 5.3 is out. It's a fairly routine bugfix release, but it also celebrates an important anniversary: "This release marks the 10th anniversary of the OpenSSH project. We would like to thank the OpenSSH community for their support, especially those who will continue to contribute code or patches, report bugs, test snapshots or donate to the project during the next 10 years."

Full Story (comments: none)

Web Site Development

Grok 1.0 released

Version 1.0 of Grok has been announced. "The Grok development team is very happy to release Grok 1.0. Grok 1.0 is the culmination of 3 years of work after the start of the Grok project in late 2006. It presents a stable platform for developing powerful, extensible web applications. Grok is the result of years of work by the large Grok development team."

Full Story (comments: none)

TurboGears 1.1 final released

Version 1.1 final of TurboGears a web meta-framework, has been announced. "TurboGears 1.1 is the first stable release of the TurboGears 1.1 branch, which is the evolution of the TurboGears 1 codebase. The 1.1 branch now uses SQLAlchemy as the default database layer and Genshi as the standard templating engine but is 100 percent compatible with applications built on TurboGears 1.0."

Full Story (comments: none)

Miscellaneous

Orocos Bayesian Filtering Library 0.7.0 released

Version 0.7.0 of the Bayesian Filtering Library from the Orocos robotics control system has been announced. "This release includes support for lti, boost and newmat as matrix library and lti and boost as random number generator. New features include: * RTT toolkit for BFL (now supporting boost) * uniform probability density functions * mixture probability density functions * histogram filters * mixture particle filters".

Comments (none posted)

Desktop Applications

Audio Applications

Amarok 2.2 "Sunjammer" released (KDE.News)

KDE.News covers the release of the Amarok 2.2 music player. "Many weeks have passed since our last version, and so many changes and improvements have found their way into version 2.2. Over all, the team is quite proud of all the improvements and was lucky to be able to plan and coordinate those in two developer sprints, one in Berlin and one during the Gran Canaria Desktop Summit, made possible by your support for Amarok and KDE. To put this into perspective: In the last three and a half months we closed 654 bugs, made close to 2200 commits to the code, of which more than a hundred were made in the first 24 hours after the release of version 2.1.1. The code statistics show that we changed a total of 1935 files, wrote 101693 new lines, and removed 73774 obsolete lines of code."

Comments (none posted)

Data Visualization

python-graph 1.6.2 released

Version 1.6.2 of python-graph has been announced. "The 1.6.x series is our refactoring series. Along the next releases, we'll change the API so we can better prepare the codebase to new features. If you want a softer, directed transition, upgrade your code to every release in the 1.6.x series. On the other hand, if you'd rather fix everything at once, you can wait for 1.7.0."

Full Story (comments: none)

Desktop Environments

Back on GNOME Bugzilla: weekly-bug-summary, describeuser

Some GNOME reports have been relaunched. "Thanks to Frederic Peters, we have the following reports again: 1. https://bugzilla.gnome.org/page.cgi?id=weekly-bug-summary... This URL has changed as it is now an extension. 2. https://bugzilla.gnome.org/page.cgi?id=describeuser.html This URL has changed as it is now an extension. Every mailto: link on show_bug.cgi (and so on) links to above report. 3. Patch report is now linked from browse.cgi."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

KDE 4.3.2 is available (KDEDot)

KDE.News has announced the release of KDE 4.3.2. "KDE 4.3.2 brings a nice number of bug fixes including crashers. UI issues have been ruled out in KMail, and KWin effects have become more stable. There is also a good number of fixes in KDE's core libraries, which are beneficial to all applications using KDE libraries."

Comments (none posted)

KDE Software Announcements

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)

Xorg Software Announcements

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

AsciiDoc 8.5.0 released

Version 8.5.0 of AsciiDoc, an uncomplicated text document format for writing articles, documentation, manuals, books and UNIX man pages, has been announced. "This release includes lots of enhancements, but the big news is that the a2x toolchain wrapper has been rewritten in Python and now supports the EPUB e-book standard."

Full Story (comments: none)

Encryption Software

python-gnupg 0.2.2 released

Version 0.2.2 of python-gnupg has been announced. "A new version of the Python module which wraps GnuPG has been released. This is a minor bug-fix release."

Full Story (comments: none)

Financial Applications

Gnucash 2.3.7 released

Version 2.3.7 of Gnucash has been announced. "The GnuCash development team proudly announces GnuCash 2.3.7, the eighth of several unstable 2.3.x releases of the GnuCash Free Accounting Software which will eventually lead to the stable version 2.4.0. With this new release series, GnuCash can use an SQL database using SQLite3, MySQL or PostgreSQL."

Full Story (comments: none)

SQL-Ledger 2.8.25 released

Version 2.8.25 of SQL-Ledger, a web-based double entry accounting/ERP system, has been announced. Changes include: "1. Version 2.8.25 2. added customer and vendor import function 3. added variables for remittance forms and reminder notices 4. added companyemail and companywebsite variables 5. fixed internal notes display for new transactions 6. added modulo calculation for spoolfiles 7. import payments with DCN for open and closed transactions 8. added message handling for admin locks 9. fixed emtpy line issue with template editor".

Comments (none posted)

Games

Humerus 2.1 released

Version 2.1 of Humerus has been announced, it includes some code rework. "Humerus is a companion to the Albow widget library for PyGame. It provides a framework for games made up of a sequence of levels, including user interface and back-end logic for saving and restoring game state, loading levels, and sundry other details. There is also optional support for a built-in level editor, including code for loading and saving levels to be edited, and asking whether to save modified levels."

Full Story (comments: none)

Mail Clients

Stresstesting IMAP clients (Hackvalue)

Over at the Hackvalue weblog, Armijn Hemel compares IMAP client performance. He created 12,000 test emails and then looked at how well several clients (Evolution, KMail, Thunderbird, and Claws Mail) could download the messages as well as how they performed moving them between accounts. "In the past I have had to move quite a bit of mail around between IMAP servers, which usually worked just fine, apart from taking some resources. Other people I talked to had different experiences, including crashes and suspicions of emails being lost. This triggered the idea of testing a few graphical email programs for IMAP performance: how would they behave if you had a huge amount of mails that you wanted to move to a different account?"

Comments (46 posted)

Multimedia

liboggz 1.0.1 released

Version 1.0.1 of liboggz has been announced. "This release corrects timestamp calculation for Theora files with duplicate frames, which are produced by the recently-released libtheora-1.1 encoder."

Full Story (comments: none)

Music Applications

csound ifn parser and tools 1.04 released

Version 1.04 of csound ifn parser and tools has been announced. "ifn parser is a parser to help in combing csound instruments also tools that may be usefull for code editors including a ifn number locater and a depreceated csound command locater. The ifn number, and depreceated number list may be usefull regardless of the programming language".

Full Story (comments: none)

Office Suites

OpenOffice.org Newsletter

The September, 2009 edition of the OpenOffice.org Newsletter is out with the latest OO.o office suite articles and events.

Full Story (comments: none)

Miscellaneous

BleachBit 0.6.5 released

Version 0.6.5 of BleachBit has been announced. "BleachBit (pure PyGTK) deletes traces of online activity, and you may be surprised how much disk space it frees up. Highlight of changes since 0.6.4: * Vacuum Google Chrome * Delete Google Chrome 3 browsing history * Add portable app for Windows * Introduce the bonus cleaners package with 9 cleaners * Update translations * Fix bugs"

Full Story (comments: none)

Languages and Tools

C

GCC Link Time Optimization branch merged

The Gnu Compiler Collection project has announced the merge of the Link Time Optimization branch. "Link Time Optimization (LTO) gives GCC the capability of dumping its internal representation (GIMPLE) to disk, so that all the different compilation units that make up a single executable can be optimized as a single module. This expands the scope of inter-procedural optimizations to encompass the whole program (or, rather, everything that is visible at link time)."

Comments (2 posted)

GCC 4.5 Status Report

The October 1, 2009 edition of the GCC 4.5 Status Report has been published. "The trunk is in Stage 3. Stage 3 will end on Nov 30th after which the trunk will be open for regression and documentation fixes only. Stage 3 is for general bugfixing, what is considered a bugfix is up to the maintainers. At the discretion of the maintainers patches that were finished during Stage 1 but have not yet been reviewed or committed may be still applied. Please have the release quality in mind when approving late patches."

Full Story (comments: none)

Caml

Caml Weekly News

The October 6, 2009 edition of the Caml Weekly News is out with new articles about the Caml language.

Full Story (comments: none)

Perl

Perl 5.11.0 now available

Version 5.11.0 of Perl has been announced. "Perl 5.11.0 is a DEVELOPMENT release. We're making it available to you today to make it easy for you to test your software on what will eventually become Perl 5.12. This release is the result of over two years of development by a global community of developers."

Full Story (comments: 5)

Python

doit 0.4.0 released

Version 0.4.0 of doit has been announced. "doit comes from the idea of bringing the power of build-tools to execute any kind of task. It will keep track of dependencies between "tasks" and execute them only when necessary. It was designed to be easy to use and "get out of your way". doit is written in Python. "tasks" can be defined in python or shell scripts. doit can be used as a build-tool or just a nice way to organize your scripts."

Full Story (comments: none)

M2Crypto 0.20.2 released

Version 0.20.2 of M2Crypto has been announced. "M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA, DSA, DH, HMACs, message digests, symmetric ciphers (including AES); SSL functionality to implement clients and servers; HTTPS extensions to Python's httplib, urllib, and xmlrpclib; unforgeable HMAC'ing AuthCookies for web session management; FTP/TLS client and server; S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An S/MIME messenger for Zope. Smartcards supported with the Engine interface."

Full Story (comments: none)

Python 2.6.3 released

Version 2.6.3 of Python has been announced. "This is the latest production-ready version in the Python 2.6 series. Somewhere near 100 bugs have been fixed since Python 2.6.2 was released in April 2009."

Full Story (comments: 2)

stdeb 0.3.2 and 0.4.1

Versions 0.3.2 and 0.4.1 of stdeb have been announced. "stdeb produces Debian source packages from Python packages via a new distutils command, sdist_dsc. Automatic defaults are provided for the Debian package, but many aspects of the resulting package can be customized via a configuration file. An additional command, bdist_deb, creates a Debian binary package, a .deb file."

Full Story (comments: none)

Libraries

Fast decimal arithmetic module released

A set of fast decimal arithmetic modules have been released. "Libmpdec is a C (C++ ready) library for arbitrary precision decimal arithmetic. It is a complete implementation of Mike Cowlishaw's General Decimal Arithmetic specification. Fastdec.so is a Python C module with the same functionality as decimal.py. With some restrictions, code written for for decimal.py should work identically. deccheck.py performs redundant calculations using both decimal.py and fastdec.so. For each calculation the results of both modules are compared and an exception is raised if they differ."

Full Story (comments: none)

Page editor: Forrest Cook

Announcements

Non-Commercial announcements

FSF offers "GNU Bucks" for finding nonfree works in free distributions

The Free Software Foundation has announced its new "GNU Bucks" bounty program. The Free Software Foundation (FSF) today announced that it will begin rewarding those who find and report any nonfree components in free software operating system distributions with public recognition and "GNU Bucks." The FSF maintains a list of guidelines covering what it means to be a free distribution, and endorses distributions that commit to meeting those guidelines. "By spurring users to find and report problems, this new awards program will help make sure that the FSF-endorsed free distributions of GNU/Linux stay really and truly free," said FSF executive director Peter Brown."

Full Story (comments: 92)

FSFE to EC: Don’t waste an opportunity with a hasty deal

The FSFE's Karsten Gerloff blogs about two EU antitrust cases involving Microsoft. "High Noon in Brussels. At the end of her term, competition Commissioner Neelie Kroes is wrapping up two open cases against Microsoft. The company offered to settle in July 2009. FSFE is involved in both of cases. We are concerned that the Commission may end up reversing years of successful antitrust work if Neelie Kroes settles for far too little in order to close a deal, any deal. That would mean that Europeans remain stuck with the present Microsoft monopoly in most areas of the desktop."

Comments (none posted)

OW2 Consortium and Open Solutions Alliance announce merger

The OW2 Consortium and Open Solutions Alliance have announced a merger. "Two prominent open source organizations - the OW2 Consortium and the Open Solutions Alliance (OSA) - representing developers, vendors, consumers, and communities throughout the world plan to merge to constitute a global platform for supporting research, development, distribution, and adoption of open source software at all levels of the information systems stack."

Full Story (comments: none)

Commercial announcements

Netgear's open-source router

Netgear has announced the availability of its WNR3500L router - a device which has been designed to be hackable from the outset. "The RangeMax Wireless-N Gigabit Router with USB is also designed to serve as a reliable, high-performance open source Linux platform supporting a wide variety of applications created by multiple development partners and the dedicated open source community." There's even instructions on how to recover a bricked router - using Windows.

Comments (39 posted)

Welte: Netgear trying to fool their users with "Open Source Router"

Harald Welte is not impressed with Netgear's "open source router," which includes binary-only kernel modules. "Netgear as the vendor is simply relying on the fact that none of the authors who have written parts of the kernel against which their binary-only module links will ever make copyright claims against them. One would have hoped that Netgear did thoroughly study the Open Source market that they're trying to address. Apparently they either did not do that, or they chose to ignore the values/rules by which this community works, or they had somebody with limited understanding to advise them on this."

Comments (18 posted)

Legal Announcements

FSF files brief in Bilski case

The Free Software Foundation has filed an amicus curiae brief in the "in re Bilski" case, asking the court to affirm that software ideas are not patentable. "End Software Patents (ESP) executive director Ciaran O'Riordan explained, 'Every software patent is a restriction on software developers and users of computers, and there are currently 200,000 software patents in the USA. As well as being an unjust restriction on a common household tool, time has now also proven software patents to be an economic failure and a hindrance to the progress of the useful arts. This means they've failed their constitutional mandate and have no legal legitimacy. The Supreme Court has itself never authorized the patenting of software ideas, so there's real hope that this problem can finally be solved.'"

Full Story (comments: none)

Red Hat Asks Supreme Ct. to Exclude Software From Patentability (Groklaw)

Groklaw covers a Red Hat filing in the Bilski case. "Red Hat has just filed its brief in Bilski, and it's saying things you certainly have been hoping someone would express to the Supreme Court. For one thing, they explain the tech, how programs are algorithms, and thus they should not be patentable. The brief asks the Supreme Court to adopt the lower court's machine-or-transformation test, but also -- yay! -- to exclude software from patentability!"

Comments (26 posted)

Articles of interest

Garmin Takes a New Tack With Linux-Based Nav Phone (LinuxInsider)

LinuxInsider looks at the Garmin Nuvifone G60. "Is there a market for a $300 proprietary Linux-based navigation device with phone capabilities? Garmin's Nuvifone will put that question to the test. Known for its navigators, Garmin might be following Palm's playbook by adding phone capabilities. Given the popularity of the iPhone, the advance of the Androids, Palm's struggle to push the Pre -- can the Nuvifone find a niche?"

Comments (22 posted)

Laptops for all (Economist)

The Economist looks at the OLPC deployment in Uruguay. "Nearly all of Uruguay’s 380,000 primary-school pupils have now received a simple and cheap XO laptop, a model developed by One Laptop Per Child, an NGO based in Massachusetts. The government hopes this will help poorer and disadvantaged children do better in school while also improving the overall standard of education. These ambitions will be tested for the first time later this month when every Uruguayan seven-year-old will take online exams in a range of academic subjects. The rest of the world should be intrigued: the first country in Latin America to provide free, compulsory schooling will become the first, globally, to find out whether furnishing a whole generation with laptops is a worthwhile investment."

Comments (none posted)

The OpenBlockS 600 is a Linux server that fits in your palm (ComputerWorld)

Eric Lai takes a look at a palm-sized Linux server. "It comes installed with Plat'Home's own embedded SSD/Linux distribution by default, though customers can also request others such as Debian, Ubuntu, Fedora, Java SE for Embedded and NetBSD."

Comments (14 posted)

Open Source Initiative loses corporate status

The 451 Group reports that the Open Source Initiative failed to get its paperwork together in time, so the corporation has been suspended by the state of California. "We are concerned about the impact that the suspension of the Open Source Initiative could have on open source developers, users, projects, and associated investors and vendors. The 451 Group has clients in all of the above categories so we believe it is appropriate to inform them of the suspension of the Open Source Initiative's legal status and how it might impact them. We are in the process of creating a formal analysis of the situation for 451 Group clients. We also believe that the potential impact is significant enough that, while the bare facts are already public, the issue deserves to be brought to the attention of the wider open source community. We will let the members of that community come to their own conclusions about what it means to them." Your editor is still struggling to figure out whether there will be any "impact" at all.

Comments (25 posted)

Linux saves Aussie electrical grid (the Inquirer)

the Inquirer covers an instance of emergency Linux adoption by Australia's Intergral Energy. "QUICK THINKING open sourcerers might have saved an Australian power supply system after its electrical grid control room network got infected with a virus. A Windows virus hit the networks of Intergral Energy and, according to a submission to Slashdot, the virus managed to spread to the operator display consoles in the control room. Quick thinking techies in the control systems department of the utility swapped the infected Windows boxes for machines running Linux that they were using for development. The move prevented the virus from taking over all the operator displays in the control room."

Comments (21 posted)

New Books

Programming in Python 3 (Second Edition) released

The book Programming in Python 3 (Second Edition) by Mark Summerfield has been published.

Full Story (comments: none)

Resources

FOSS: War is over (if you want it) (451 CAOS)

The 451 CAOS site has posted an analysts view of the state of open source. "In 2009 we have seen signs of push back from FOSS advocates in resistance to what they see as dilution of the open source brand. We are seeing increasing demands for the Open Source Definition, which defines open source licenses, to be applied also to development models and business and end user licensing strategies. A software project might be licensed under an OSI-approved license, but if 98% of the developers are employees of a single company there is a valid question as to whether that is truly an open source development project."

Comments (3 posted)

Linux Gazette #167 is out!

This issue of the Linux Gazette covers QQ on Linux, by Silas Brown; Some notes on running the popular Chinese instant messaging, software; Away Mission - SecureWorld Expos, by Howard Dyckoff; Away Mission - Upcoming in October, by Howard Dyckoff; A Quick-Fire chroot Environment, by Ben Okopnik; Setting up a private login environment for multiple users; Two is better than one!, by Dr. S. Parthasarathy; Using Linux to Teach Kids How to Program, 10 Years Later (Part II), by Anderson Silva; and much more.

Full Story (comments: none)

Contests and Awards

EFF announces awards

The Electronic Frontier Foundation has announced the winners of its Pioneer Awards: "hardware hacker Limor "Ladyada" Fried, e-voting security researcher Harri Hursti, and public domain advocate Carl Malamud. The award ceremony will be held at 7 p.m., October 22nd, at the Westin San Francisco in conjunction with the Web 2.0 Summit, co-produced by O'Reilly and TechWeb. LinkedIn founder Reid Hoffmann will keynote the event."

Full Story (comments: none)

Call for award nominations: Government Open Source Conf.

A call for award nominations has gone out for the Government Open Source Conference, the event takes place in Washington, D.C. on November 5, 2009. Nominations are due by October 23. "Nominationsare now being accepted for the 2009 "Excellence Awards for Open Source Business Use in Government". The Awards will recognizegovernment employees who have made significant accomplishments in theapplication of Open Source Technology to meet government business or mission requirements."

Full Story (comments: none)

Calls for Presentations

CFP reminder: GROW'10 - 2nd Workshop on GCC research opportunities

A call for papers has gone out for GROW'10. The event takes place in Pisa, Italy on January 23, submissions are due by November 13. "GROW workshop focuses on current challenges in research and development of compiler analyses and optimizations based on the free GNU Compiler Collection (GCC). The goal of this workshop is to bring together people from industry and academia that are interested in conducting research based on GCC and enhancing this compiler suite for research needs. The workshop will promote and disseminate compiler research (recent, ongoing or planned) with GCC, as a robust industrial-strength vehicle that supports free and collaborative research. The program will include an invited talk and a discussion panel on future research and development directions of GCC."

Full Story (comments: none)

Upcoming Events

Akademy 2010 dates announced (KDEDot)

The Akademy 2010 dates have been announced. "Together with the local team possible dates for the conference were discussed. After taking in to account local constraints the dates of Sat 3rd - Sat 10th July were decided to be most appropriate, with Friday the 2nd July being the main day for arriving."

Comments (none posted)

Linux Foundation announces End User Summit

The second annual Linux Foundation End User Summit has been announced. "The Summit is a unique opportunity for corporate end users to learn and interact with leaders from within the Linux community, including the highest-level maintainers and developers. The Summit will take place November 9-10, 2009 at the Hyatt Jersey City on the Hudson and will provide end users and kernel developers a direct connection to one another for advancing the features most critical to using Linux in the enterprise. Located just off the Exchange Place Path Station, corporate Linux users from financial services, healthcare, energy, and government will have quick access to the event from east coast hubs."

Comments (none posted)

End Users Meet Year End (Linux Journal)

Linux Journal looks forward the the Linux Foundation End User Summit. "The Summit takes place over two days, comprising keynote addresses, panels, and topic-specific tracks. This year's conference will convene November 9 - 10 in Jersey City, New Jersey."

Comments (none posted)

Come to Italy for the OpenOffice.org Annual Conference

Registration is open for the OpenOffice.org annual conference. "Registration officially opens today for the OpenOffice.org annual international conference 2009 (OOoCon), to be held in the beautiful and historic city of Orvieto, Umbria, Italy. Following pre-conference meetings on Nov.3rd, the main OOoCon events run from Nov 4th-6th. The Conference will include presentations not only from OpenOffice.org individual contributors, but also from the main commercial players in the OpenOffice.org / OpenDocument Format (ODF) world, including Sun Microsystems, IBM, Redflag 2000, Novell, and Microsoft."

Full Story (comments: none)

SciPy India conference announced

SciPy India has been announced. "The first "Scientific Computing with Python" conference in India will be held from December 12th to 17th, 2009 at the Technopark in Trivandrum, Kerala, India. The theme of the conference will be "Scientific Python in Action" with respect to application and teaching. We are pleased to have Travis Oliphant, the creator and lead developer of numpy as the keynote speaker."

Full Story (comments: none)

YAPC::Brasil 2009 announced (use Perl)

use Perl has announced YAPC::Brasil 2009. "nuba writes "We are proud to announce the YAPC::Brasil 2009, to be held from 30/October to 1/November in Niterói, Rio de Janeiro, Brazil. We have humble goals this year: to put forth the greatest YAPC::Brasil ever, celebrate the Joy of Perl among ourselves, and tempt everyone else to join us in developing the programming language that has the happiest users!"

Comments (none posted)

Events: October 15, 2009 to December 14, 2009

The following event listing is taken from the LWN.net Calendar.

Date(s)EventLocation
October 15
October 16
Embedded Linux Conference Europe 2009 Grenoble, France
October 16
October 17
Pycon Poland 2009 Ustron, Poland
October 16
October 18
Pg Conference West 09 Seattle, WA, USA
October 16
October 18
German Ubuntu conference Göttingen, Germany
October 18
October 20
2009 Kernel Summit Tokyo, Japan
October 19
October 22
ZendCon 2009 San Jose, CA, USA
October 21
October 23
Japan Linux Symposium Tokyo, Japan
October 22
October 24
Décimo Encuentro Linux 2009 Valparaiso, Chile
October 23
October 24
Ontario GNU Linux Fest Toronto, Ontario, Canada
October 23
October 24
PGCon Brazil 2009 Sao Paulo, Brazil
October 24 Florida Linux Show 2009 Orlando, Florida, USA
October 24 LUG Radio Live Wolverhampton, UK
October 24
October 25
PyTexas Fort Worth, TX, USA
October 24
October 25
FOSS.my 2009 Kuala Lumpur, Malaysia
October 25 Linux Outlaws and Ubuntu UK Podcast OggCamp Wolverhampton, UK
October 26
October 28
Techno Forensics and Digital Investigations Conference Gaithersburg, MD, USA
October 26
October 28
GitTogether '09 Mountain View, CA, USA
October 26
October 28
Pacific Northwest Software Quality Conference Portland, OR, USA
October 27
October 30
Linux-Kongress 2009 Dresden, Germany
October 28
October 30
Hack.lu 2009 , Luxembourg
October 28
October 30
no:sql(east). Atlanta, USA
October 29 NLUUG autumn conference: The Open Web Ede, The Netherlands
October 30
November 1
YAPC::Brasil 2009 Rio de Janeiro, Brazil
October 31 Linux theme day with ubuntu install party Ede, Netherlands
November 1
November 6
23rd Large Installation System Administration Conference Baltimore, MD, USA
November 2
November 6
ApacheCon 2009 Oakland, CA, USA
November 2
November 6
Ubuntu Open Week Internet, Internet
November 3
November 6
OpenOffice.org Conference Orvieto, Italy
November 4
November 5
Linux World NL Utrecht, The Netherlands
November 5 Government Open Source Conference Washington, DC, USA
November 6
November 7
PGDay.EU 2009 Paris, France
November 6
November 8
WineConf 2009 Enschede, Netherlands
November 6
November 10
CHASE 2009 Lahore, Pakistan
November 7
November 8
OpenFest 2009 - Biggest FOSS conference in Bulgaria Sofia, Bulgaria
November 7
November 8
OpenRheinRuhr Bottrop, Germany
November 7
November 8
Kiwi PyCon 2009 Christchurch, New Zealand
November 9
November 13
ACM CCS 2009 Chicago, IL, USA
November 10
November 11
Linux Foundation End User Summit Jersey City, New Jersey
November 12
November 13
European Conference on Computer Network Defence Milan, Italy
November 13
November 15
Free Society Conference and Nordic Summit Göteborg, Sweden
November 14 pyArkansas Conway, AR, USA
November 16
November 19
Web 2.0 Expo New York, NY, USA
November 16
November 20
INTEROP New York, NY, USA
November 16
November 20
Ubuntu Developer Summit for Lucid Lynx Dallas, TX, USA
November 17
November 20
DeepSec IDSC Vienna, Austria
November 19
November 20
CONFIdence 2009 Warsaw, Poland
November 19
November 21
Firebird Conference 2009 Munich, Germany
November 19
November 22
Piksel 09 Bergen, Norway
November 20
November 21
PostgreSQL Conference 2009 Japan Tokyo, Japan
November 21 Baltic Perl Workshop 2009 Riga, Latvia
November 25
November 27
Open Source Developers Conference 2009 Brisbane, Australia
November 27
November 29
Ninux Day 2009 Rome, Italy
December 1
December 5
FOSS.IN/2009 Bangalore, India
December 4 Italian PostgreSQL Day 2009 Pisa, Tuscany, Italy
December 5
December 7
Fedora Users and Developers Conference Toronto, Canada
December 7
December 11
Annual Computer Security Applications Conference Honolulu, HI, USA
December 7
December 13
Make Art 2009 Poitiers, France
December 12 BSD community day Utrecht, The Netherlands
December 12
December 13
Django Development Sprint Dallas, TX, USA
December 12
December 17
SciPy India 2009 Kerala, India

If your event does not appear here, please tell us about it.

Page editor: Forrest Cook

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds