LWN.net Weekly Edition for July 27, 2006
The 2006 Ottawa Linux Symposium
Your editor has, once again, had the opportunity to add to his collection of Ottawa Linux Symposium T-shirts. OLS2006 was a fun and interesting event, a testament to the increasing professionalism of its organizers, speakers, and attendees. And also, of course, to the energy and vitality which drives the Linux community.Interesting things can be seen by looking at the the people who attend an event like this one. Not that long ago, the preferred attire was a shirt from a Linux event - the older, the better. While those shirts are still very much in evidence, shirts of the button-down variety are on the rise. Fortunately, there are still very few neckties to be seen (James Bottomley - next year's OLS keynote speaker - being the exception that proves the rule in this regard). There were also quite a few attendees who had clearly made the trip from Asia.
LinuxWorld may be the place to go to see what companies are doing, but OLS has clearly established itself as the event to attend to learn about what the development community - and the kernel development community in particular - is up to.
This year's schedule reveals some things about what the community is interested in. Virtualization remains a hot topic, but the emphasis has changed: Xen, the king of paravirtualization, was well represented, but was far from the whole story. Ian Pratt's Xen talk was held in one of the smaller rooms this year. The hotter topic appeared to be containers - lightweight virtualization which runs under the same kernel as the host. There is a lot of development activity around containers at the moment, and many of the people involved were at OLS to talk about it.
Last year's schedule featured exactly one filesystem talk - an update on ext3. This year, a quick scan shows no less than nine filesystem talks, plus a few on related topics (shared subtrees, for example). Expect to see some interesting development work in the filesystems area in the coming years.
This year's keynote speaker was Greg Kroah-Hartman. Greg has posted the text
of his talk along with the slides; it is such a clear representation of
what was said that your editor sees no point in writing up a separate
summary. The talk covered topics like hardware support (Linux is now
second to none, says Greg), the illegal and unethical nature of closed
source kernel modules, various aspects of the kernel development process,
and more. The talk is very much worth a read.
For those who have not seen the article by Arjan van de Ven mentioned in Greg's talk: Arjan's doomsday scenario is also worth reading.
For the curious, the slides from LWN editor Jonathan Corbet's talk are available.
OLS has always been a kernel-oriented event, and the 2006 version was perhaps the most kernel-heavy yet. A look at the schedule shows almost no non-kernel talks - and most of the exceptions were concerned with the git and mercurial source control systems. The Desktop Developers' Conference was held immediately before OLS (at the same time as the Kernel Summit), but speakers from that conference did not speak at OLS. Their presence was very much felt, however, and there were some good conversations held between developers responsible for various levels of the full Linux system. Next year, however, it would be nice to hear more from the desktop people at OLS.
The fact that such a small complaint is the first that comes to mind speaks loudly. OLS remains a top-notch technical conference with interesting speakers, good organization (even the traditionally late final keynote almost started on time this year), great conversations, and a murderous closing party. The annual Ottawa pilgrimage remains an important event for many in the development community.
OLS: On how user space sucks
Dave Jones's OLS talk, titled "Why user space sucks," was certain to be popular at a setting like this. So many of the people in the standing room only crowd might well have wondered why this talk was not scheduled into the larger room. Perhaps the powers that be feared that a non-kernel talk would not have a large audience - even when it is given by a well-known kernel hacker.Dave set out to reduce the time it took his Fedora system to boot. In an attempt to figure out what was taking so long, he instrumented the kernel to log certain basic file operations. As it turned out, the boot process involved calling stat() 79,000 times, opening 27,000 files, and running 1382 programs. That struck him as being just a little excessive; getting a system running shouldn't require that much work. So he looked further. Here are a few of the things he found:
- HAL was responsible for opening almost 2000 files. It will read
various XML files, then happily reopen and reread them multiple
times. The bulk of these files describe hardware which has never been
anywhere near the system in question. Clearly, this is an application
which could be a little smarter about how it does things.
- Similar issues were found with cups, which feels the need to open the
PPD files for every known printer. The result: 2500 stat()
calls and 400 opens. On a system with no attached printer.
- X.org, says Dave, is "awesome." It attempts to figure out where a
graphics adapter might be connected by attempting to open almost any
possible PCI device, including many which are clearly not present on
the system. X also is guilty of reopening library files many times.
- Gamin, which was written to get poll() loops out of
applications, spends its time sitting in a high-frequency
poll() loop. Evidently the real offender is in a lower-level
library, but it is the gamin executable which suffers. As Dave points
out, it can occasionally be worthwhile to run a utility like
strace on a program, even if there are no apparent bugs. One
might be surprised by the resulting output.
- Nautilus polls files related to the desktop menus every few seconds,
rather than using the inotify API which was added for just this
purpose.
- Font files are a problem in many applications - several applications
open them by the hundred. Some of those applications never present
any text on the screen.
- There were also various issues with excessive timer use. The kernel blinks the virtual console cursor, even if X is running and nobody will ever see it. X is a big offender, apparently because the gettimeofday() call is still too slow and maintaining time stamps with interval timers is faster.
There were more examples, and members of the audience had several more of their own. It was all great fun; Dave says he takes joy in collecting train wrecks.
The point of the session was not (just) to bash on particular applications, however. The real issue is that our systems are slower than they need to be because they are doing vast amounts of pointless work. This situation comes about in a number of ways; as applications become more complex and rely on more levels of libraries, it can be hard for a programmer to know just what is really going on. And, as has been understood for many years, programmers are very bad at guessing where the hot spots will be in their creations. That is why profiling tools so often yield surprising results.
Programs (and kernels) which do stupid things will always be with us. We cannot fix them, however, if we do not go in and actually look for the problems. Too many programmers, it seems, check in their changes once they appear to work and do not take the time to watch how their programs work. A bit more time spent watching our applications in operation might lead to faster, less resource-hungry systems for all of us.
OLS: GCC: present and future
The GNU Compiler Collection (GCC) is a fundamental part of our free operating system. Licenses may make the software free, but it's GCC which lets us turn that software into something our computers can run. GCC's strengths and weaknesses will, thus, influence the quality of a Linux system in a big way. GCC is, however, an opaque tool for many Linux users - and for many developers as well. It is a black box, full of compiler magic, which, one hopes, just works. For those interested in looking a little more deeply into GCC, however, Diego Novillo's OLS talk was a welcome introduction.According to Diego, GCC has been at a bit of a turning point over the last couple of years. On one hand, the software is popular and ubiquitous. On the other, it is a pile of 2.2 million lines of code, initially developed by "people who didn't know about compilers" (that comment clearly intended as a joke), and showing all of its 15 years of age. The code is difficult to maintain, and even harder to push forward. Compiler technology has moved forward in many ways, and GCC is sometimes having a hard time keeping up.
The architecture of GCC has often required developers to make changes throughout the pipeline. But the complexity of the code is such that nobody is really able to understand the entire pipeline. There are simply too many different tasks being performed. Recent architectural improvements are changing that situation, however, providing better isolation between the various pipeline stages.
GCC has a steering committee for dealing with "political stuff." There is, at any given time, one release manager whose job is to get the next release together; it is, says Diego, a thankless job. Then, there is a whole set of maintainers who are empowered to make changes all over the tree. The project is trying to get away from having maintainers with global commit privileges, however. Since building a good mental model of the entire compiler is essentially impossible, it is better to keep maintainers within their areas of expertise.
The (idealized) development model works in three stages. The first two months are for major changes and the addition of major new features. Then, over the next two months, things tighten down and focus on stabilization and the occasional addition of small features. Finally, in the last two months, only bug fixes are allowed. This is, Diego says, "where everybody disappears" and the release manager is force to chase down developers and nag them into fixing bugs. Much of the work in this stage is driven by companies with an interest in the release.
In the end, this ideal six-month schedule tends to not work out quite so well in reality. But, says Diego, the project is able to get "one good release" out every year.
GCC development works out of a central subversion repository with many development branches. Anybody wishing to contribute to GCC must assign copyrights to the Free Software Foundation.
The compiler pipeline looks something like this:
- Language-specific front ends are charged with parsing the input
source and turning it into an internal language called "Generic."
The Generic language is able to represent programs written in any
language supported by GCC.
- A two-stage process turns Generic into another language called
Gimple. As part of this process, the program is simplified in a
number of ways. All statements are rewritten to get to a point where
there are no side effects; each statement performs, at most, one
assignment. Quite a few temporary variables are introduced to bring
this change about. Eventually, by the time the compiler has
transformed the program into "low Gimple," all control structures have
been reduced to if tests and gotos.
- At this point, the various SSA ("single static assignment") optimizers
kick in. There are, according to Diego, about 100 passes made over
the program at this point. The flow of data through the program is
analyzed and used to perform loop optimizations, some vectorization
tasks, constant propagation, etc. Much more information on SSA can be
found in this LWN article
from 2004.
- After all this work is done, the result is a form of the program
expressed in "register transfer language" or RTL. RTL was originally
the only internal language used by GCC; over time, the code which uses
RTL is shrinking, while the work done at the SSA level is growing.
The RTL representation is used to do things like instruction
pipelining, common subexpression elimination, and no end of
machine-specific tasks.
- The final output from gcc is an assembly language program, which can then be fed to the assembler.
The effect of recasting GCC into the above form is a compiler which is more modular and easier to work with.
Future plans were touched on briefly. There is currently a great deal of interest in static analysis tools. The GCC folks would like to support that work, but they do not want to weigh down the compiler with a large pile of static analysis tools. So they will likely implement a set of hooks which allow third party tools to get the information they need from the compiler. Inevitably, it was asked what sort of license those tools would need to have to be able to use the GCC hooks; evidently no answer to that question exists yet, however.
Another area of interest is link-time optimization and the ability to deal with multiple program units as a whole. There is also work happening on dynamic compilation - compiling to byte codes which are then interpreted by a just-in-time compiler at run time. Much more information on current GCC development can be found on the GCC wiki.
This session was highly informative. Unfortunately, its positioning on the schedule (in the first Saturday morning slot, when many of those who participated in the previous evening's whiskey tasting event were notably absent) may have reduced attendance somewhat. This was, however, a talk worth getting up for.
Security
ScatterChat for encrypted instant messaging
Usage of instant messaging (IM) is growing rapidly to facilitate real-time communication across the internet. Unfortunately, it provides the illusion of privacy which can fool users into chatting about subjects that they would not normally discuss in public. A new tool, ScatterChat has recently been released that provides a cross-platform solution for encryption over the public IM networks. Using it provides actual privacy for IM conversations without much additional burden for the user.
ScatterChat is a 'friendly fork' of the Gaim IM client that adds encrypted chat, key management, and encrypted file transfer for many of the IM protocols supported by Gaim. In addition, ScatterChat optionally interfaces to Tor to provide traffic analysis resistance for additional privacy. It is available in source form for Linux and MacOS as well as Windows binaries.
In order to use ScatterChat, a user first generates a public/private key pair that gets associated with a particular IM screen name. Once that is complete, the program logs the user into the IM network and provides the same basic interface as Gaim. A user can then choose a buddy to chat with and ScatterChat provides an extra button in the chat window to request encryption. If necessary, a key exchange is done between the user and their buddy, but one can always refuse encryption and the key exchange protocol will be silently ignored. This ability allows users to control who knows that they are using ScatterChat; if they refuse the key exchange, it will look no different than someone who is using a standard IM client.
Once an encrypted session has been established (verified by the now familiar padlock icon), it works just like an unencrypted session. Users can type back and forth to each other but any intermediary will not be able to decrypt the traffic without compromising the keys. Even if the conversation is recorded, it cannot be decrypted without compromising the private keys at both ends of the conversation, providing 'perfect forward security'. Of course, one must be careful that the other end is not logging the conversation as that would store an unencrypted version of the conversation on the hard drive of the logger.
ScatterChat seems to have a well thought out architecture and philosophy. Users are not allowed to choose encryption methods, key lengths or any of the other technical parameters that often accompany encryption tools. The choices made by the ScatterChat developers are very strong (2048-bit El Gamal public/private key with 256-bit AES symmetric encryption) and removing those kinds of choices makes it a much simpler solution to deploy for non-technical users. The developers also have chosen to use existing encryption code (libgcrypt) rather than creating yet another encryption library that needs to be audited.
ScatterChat is targeted for human rights activists and dissidents who may be communicating through internet servers that are or can be subverted by oppressive governments. It may also be useful for those living in supposedly free countries whose governments have recently determined that spying on its citizens leads to better national security. A great deal of communication of a sensitive nature is done via IM these days and companies may wish to use this tool to secure chats between their employees to protect trade secrets and the like. Many IM users will not have any need for the capabilities provided by ScatterChat, as the NSA is probably uninterested in teenage dating gossip and the like, but for those who do, ScatterChat is an essential tool.
New vulnerabilities
fbi: incorrect filtering
| Package(s): | fbi | CVE #(s): | CVE-2006-3119 | ||||||||
| Created: | July 24, 2006 | Updated: | August 24, 2006 | ||||||||
| Description: | Toth Andras discovered that the fbgs framebuffer postscript/PDF viewer contains a typo, which prevents the intended filter against malicious postscript commands from working correctly. This might lead to the deletion of user data when displaying a postscript file. | ||||||||||
| Alerts: |
| ||||||||||
hiki: denial of service
| Package(s): | hiki | CVE #(s): | CVE-2006-3379 | ||||
| Created: | July 24, 2006 | Updated: | July 26, 2006 | ||||
| Description: | Akira Tanaka discovered a vulnerability in Hiki Wiki, a Wiki engine written in Ruby that allows remote attackers to cause a denial of service via high CPU consumption using by performing a diff between large and specially crafted Wiki pages. | ||||||
| Alerts: |
| ||||||
kdelibs: denial of service
| Package(s): | kdelibs | CVE #(s): | CVE-2006-3672 | ||||||||
| Created: | July 21, 2006 | Updated: | July 26, 2006 | ||||||||
| Description: | KDE Konqueror 3.5.1 and earlier allows remote attackers to cause a denial of service (application crash) by calling the replaceChild method on a DOM object, which triggers a null dereference, as demonstrated by calling document.replaceChild with a 0 (zero) argument. | ||||||||||
| Alerts: |
| ||||||||||
libdumb: arbitrary code execution
| Package(s): | libdumb | CVE #(s): | CVE-2006-3668 | ||||||||||||
| Created: | July 24, 2006 | Updated: | August 9, 2006 | ||||||||||||
| Description: | Luigi Auriemma discovered that DUMB, a tracker music library, performs insufficient sanitizing of values parsed from IT music files, which might lead to a buffer overflow and execution of arbitrary code if manipulated files are read. | ||||||||||||||
| Alerts: |
| ||||||||||||||
mysql: format string bug
| Package(s): | mysql | CVE #(s): | CVE-2006-3469 | ||||||||||||
| Created: | July 21, 2006 | Updated: | July 30, 2008 | ||||||||||||
| Description: | Jean-David Maillefer discovered a format string bug in the date_format() function's error reporting. By calling the function with invalid arguments, an authenticated user could exploit this to crash the server. | ||||||||||||||
| Alerts: |
| ||||||||||||||
Net::Server: format string vulnerability
| Package(s): | libnet-server-perl per-net-server | CVE #(s): | CVE-2005-1127 | ||||||||||||||||
| Created: | July 24, 2006 | Updated: | August 11, 2006 | ||||||||||||||||
| Description: | Peter Bieringer discovered that the Perl Net::Server, is vulnerable to a format string attack which may be exploitable by remote attackers. Among others, the "postgrey" utility is affected by this vulnerability. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
ruby: multiple vulnerabilities
| Package(s): | ruby | CVE #(s): | CVE-2006-3694 | ||||||||||||||||||||||||||||||||
| Created: | July 24, 2006 | Updated: | August 28, 2006 | ||||||||||||||||||||||||||||||||
| Description: | Multiple unspecified vulnerabilities in Ruby before 1.8.5 allow remote attackers to bypass "safe level" checks via unspecified vectors involving the alias function and "directory operations". | ||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||
shiela:arbitrary code execution
| Package(s): | shiela | CVE #(s): | CVE-2006-3633 | ||||
| Created: | July 25, 2006 | Updated: | July 26, 2006 | ||||
| Description: | Brian Caswell discovered vulnerabilities in OSSP Shiela, a CVS repository access control and logging extension. The vulnerabilities allow arbitrary code execution during CVS file commits if a filename is specially crafted to contain shell commands. | ||||||
| Alerts: |
| ||||||
Page editor: Jonathan Corbet
Kernel development
Brief items
Kernel release status
The current stable 2.6 kernel is 2.6.17.7, released on July 24. This one adds a relatively long list of fixes for problems with networking, sound, and several other areas.The current 2.6 prepatch remains 2.6.18-rc2. Fixes continue to accumulate in the mainline git repository, and the -rc3 release can be expected sometime soon.
There have been no -mm releases since 2.6.18-rc1-mm2 on July 14.
Kernel development news
Quote of the week
-- Hans Reiser
Reconsidering network channels
When Van Jacobson presented his network channels idea at linux.conf.au last January, he set a bit of a fire in the Linux networking community. By making some significant changes to the processing path for incoming packets, and by pushing most of the work as close as possible to the destination application, Van was able to achieve significant performance improvements - eliminating as much as 80% of the processing overhead on multiprocessor systems. With numbers like that, it seemed like the question of whether Linux would incorporate channels need not even be asked.Since then, however, reality has begun to make itself felt - something which reality is wont to do, sooner or later. Which is why David Miller's latest pronouncement on network channels reads like this:
The issue at hand had to do with the integration of channels and netfilter. The hope had been that packets could be identified and sorted into their respective channels before the netfilter (firewall) processing was done. Then said processing could be performed close to the application, on the same processor. It turns out, however, that netfilter can change the real destination of the packet. So packets must be filtered before entering a channel, and much of the performance benefit of using a channel is lost.
Alexey Kuznetsov has posted a detailed criticism of channels, asserting that most of the claimed benefits are illusory. Says Alexey:
Finally, it seems that many of the benefits of channels can be had by carefully taking advantage of the capabilities of modern hardware. In particular, an increasing number of devices can perform simple packet classification and (via targeted interrupts) direct packets to the CPU where the destination application is running. That technique will get rid of the cache misses caused by performing interrupt processing on one processor and protocol processing on another.
In the end, it appears that yet another seemingly bright scheme may not
make the transition into real-world deployments. Some of its core
concepts, such as using cache-friendly data structures and trying (even
harder) to improve cache locality, will likely influence the future
direction of the network stack, however. So, while there may not be a
revolutionary new mechanism in the network stack's future, some of the
promised performance improvements should eventually be realized anyway.
And, as David says, "At least, there
is less code to write.
"
revoke() and frevoke()
A system call found in some Unix variants is revoke():
int revoke(const char *path);
This call exists to disconnect processes from files; when called with a given path, it will shut down all open file descriptors which refer to the file found at the end of that path. Its initial purpose was to defeat people writing programs that would sit on a serial port and pretend to be login. As soon as revoke() was called with the device file corresponding to the serial port, any login spoofer would find itself disconnected from the port and unable to fool anybody. Other potential uses exist as well; consider, for example, disconnecting a process from a file which is preventing the unmounting of a filesystem.
Linux has never had this system call, but this situation could change before too long; Pekka Enberg has posted an implementation of revoke() for review. Pekka has also added a second version:
int frevoke(int fd);
This version, of course, takes an open file descriptor as its argument. In either case, the calling process must either own the file, or it must be able to override file permissions. So revoke() gives a process the ability to yank an open file out from underneath processes owned by other users, as long as that process owns the file in question.
Getting this operation right can be a little tricky, with the result that the current implementation makes some compromises which may not sit well with other developers. The process, simplified, is this:
- The code loops through every process on the system; for each process,
it iterates through the open file table looking for file descriptors
corresponding to the file being revoked. Every time it finds one, it
zeroes out the file descriptor entry (making that descriptor
unavailable to its erstwhile owner). The file is not actually closed,
however; instead, a list of files to be closed is created for later
action.
All of this will be rather slow, but that should not be a huge problem: revoke() is not a performance-critical operation. The memory allocation (to add an entry to the list of files to close) is a bit more problematic; if it fails, revoke() will abort partway through, having done an unknown amount of damage without having accomplished its goal.
- Once all open file descriptors have been shut down, the files
themselves can be closed. So revoke() steps through the list
it created, closing each open file.
- There is one sticky little problem remaining: some processes may have
used mmap() to map the file into their address spaces. The
revoke() call clearly has to do something about those memory
areas, or it will not have completed the job. So a pass through all
of the virtual memory areas associated with the file is required; for
each one, the nopage() method is set to a special version
which returns an error status.
That change will keep a process from faulting in new pages from the revoked file, but does nothing about the pages which are already part of the process's address space. To fix those, it is necessary to wander through the page tables of each process having mapped the file, clearing out any page table entries referring to pages from that file.
An alternative approach can be seen in the forced unmount patch by Tigran Aivazian, which has been touched by a number of other developers over its fairly long history (its comments include a credit for the port to the 2.6 kernel). This patch has a different final goal - being able to unmount a filesystem regardless of any current activity - but it must solve the same problem of revoking access to all files on the target filesystem. Rather than clearing out file descriptors, this patch replaces the underlying file structure with a new one from the "badfs" filesystem. After this change, any attempted operations on the file will return EIO. Memory mappings are cleared with a direct call to munmap().
The final form of the patch may well be a combination of the two, providing both forced unmount and revoke() functionality. In the process, some of the remaining issues (such as how to perform safe locking without slowing down the highly-optimized read() and write() paths) will need to be worked out. But there is clearly demand for these features, so this work will probably proceed to eventual inclusion in the mainline.
OLS: A proposal for a new networking API
Ulrich Drepper has been the maintainer of the core glibc library since 1995; he also represents the community to the POSIX standardization effort. So, when Ulrich proposes a new user-space API, more than the usual number of people are likely to listen. Ulrich has been putting his mind to the problems of high-performance network I/O; the results were presented at his Ottawa Linux Symposium talk.The current POSIX APIs are, increasingly, not up to the task. The socket abstraction has served us for a long time, but it is a synchronous interface which is not well suited to zero-copy I/O. POSIX does provide an asynchronous I/O interface, but it was never intended for use with networking, and does not provide the requisite functionality. So it has been clear for a while that something better is needed; the developers working on network channels have also been talking about the need for a new networking API.
There are three components to a new networking API, all of which will lead to a more complex - but much more efficient - interface for high-performance situations. The first of those is to address the need for zero-copy I/O. As the data bandwidth through the system increases, the cost of copying data (in CPU utilization and cache pressure) increase. Much of this cost can be avoided by transferring data directly between the network interface and buffers in user space. Direct user-space I/O requires cooperation from both the kernel and the application, however.
Ulrich proposes the creation of an interface for the explicit management of user-space DMA areas. Such an area would be created with a call that looks something like:
int dma_alloc(dma_mem_t *handle, size_t size, int flags);
If all goes well, the result would be a memory area of the given size, suitable for DMA purposes. Note that user space gets an opaque handle type in return - there is, at this point, no virtual address which is directly accessible to the application.
To use a DMA area for network I/O, the application must associate it with a socket. The call for this operation would look like:
int dma_assoc(int socket, dma_mem_t handle, size_t size, int flags);
There is still the issue of actually managing memory within this DMA area. An application which is generating data to send over the net would request a buffer from the kernel with a call like:
int sio_reserve(dma_mem_t handle, void **buffer, size_t size);
If all goes well, the result will be a pointer (stored in *buffer) to an area where the outgoing data can be constructed. For incoming data, the application will receive a pointer to the buffer from the kernel (just how is something we'll get to shortly); the application will own the given buffer until it returns it to the kernel with:
int sio_release(dma_mem_t handle, size_t size);
Before an application can start to use asynchronous network I/O, however, it must have a way to learn about the results of its operations. To that end, Ulrich proposes the addition of an event reporting API to the kernel. This mechanism, which he calls "event channels," would have an interface like:
ec_t ec_create(int flags); /* Create a channel */
ec_next_event(); /* Get the next event */
ec_to_fd(); /* Send events to a file descriptor */
ec_delay(); /* Wait for an event directly */
The exact form of this interface (like all of those discussed here) is subject to change. But the core idea is that it is a quick way for the kernel to return notifications of events (such as I/O completions) to user space. Most applications would be likely to use the file descriptor interface, which would allow events to enter an application's main loop via poll() or epoll_wait().
The final step is to make some extensions to the existing POSIX asynchronous I/O interface. The aiocb structure would be extended to include an event channel descriptor; that channel would be used to report the results of asynchronous operations back to user space. Then, an application could initiate data transmission with a call like:
int aio_send(int socket, void *buffer, size_t size, int flags);
(One presumes there would be an aiocb argument as well, but Ulrich's slides did not show one). This call would start the process of transmitting data from the given buffer, with completion likely happening sometime after the call returns. For data reception, the call would look like:
int aio_recv(int socket, void **buffer, size_t size, int flags);
The relevant point here being that buffer is a double pointer; the kernel would pick the actual destination for the data and tell the calling application where to look.
The result of all these changes would be a complete programming interface for high-performance, asynchronous network I/O. As an added bonus, the use of an event channel interface would simplify the work of porting applications from other operating systems.
All of these interfaces, says Ulrich, are simply a proposal and subject to massive change. The core purpose is to allow applications to get their work done while giving the kernel the greatest possible latitude to optimize the data transfers. This proposal is not the only one out there; Evgeniy Polyakov's kevent proposal is similar in many ways, though it does not have the explicit management of DMA areas. It may be some time before something is actually adopted - a new API will stay around for many years and should not be added in haste - but the discussion is getting started in earnest.
Patches and updates
Kernel trees
Core kernel code
Development tools
Device drivers
Documentation
Filesystems and block I/O
Janitorial
Networking
Security-related
Miscellaneous
Page editor: Jonathan Corbet
Distributions
News and Editorials
Linux From Scratch and Beyond
The Linux From Scratch Project has been around for quite a while. So most readers are already aware that this project teaches people about how Linux works and how it can help you build a customized system. But if you haven't looked at it lately, you may not be aware of all that it has to offer these days.Linux From Scratch (LFS) provides a book of instructions for building a system. The stable version of this book is currently at version 6.1.1 and it covers everything you need to know about building a minimal Linux system, from creating a new partition for your system to making your system bootable. The development version of the book is available through Subversion and the second pre-release has been announced.
Once you have a system, you can use Beyond Linux From Scratch (BLFS) to help you flesh it out. This book covers things like adding software and setting up networking, with a look at servers and several chapters on desktop software.
Suppose that you've built your system before. You know what you want and how to go about it. Then you're ready for Automated Linux From Scratch, (ALFS) a project that creates the generic framework for an extendable system builder and package installer. The current implementation of ALFS is nALFS, a C program that parses an XML profile that contains information concerning the LFS build process into a series of internal commands. It can then execute these at your discretion, automating the compilation of LFS. Recently a new implementation of ALFS called jhalfs has announced its 1.0 release.
Cross Linux From Scratch (CLFS) teaches you how to make a cross-compiler and the necessary tools, to build a basic system on a different architecture. For example you would be able to build a Sparc toolchain on an x86 machine, and utilize that toolchain to build a Linux system from source code. Currently supported architectures include x86, x86_64, sparc, mips, powerpc and alpha.
For the security conscious Hardened Linux From Scratch (HLFS) is a project that provides you with step-by-step instructions for building your own customized and hardened Linux system entirely from source.
Of course there's the Linux From Scratch LiveCD project. The LFS Live CD is geared toward providing a reliable host system for building your LFS system and doubles as a rescue system.
All these projects are represented in the wiki pages as well as from the main LFS site. So if the available Linux distributions aren't providing quite what you want, or you just want to know more about Linux internals, LSF could be just what you are looking for.
New Releases
Ubuntu "edgy eft" Knot 1 released
During the development cycle of Ubuntu 6.10 (aka Edgy Eft) there will be several milestone CD images released for Ubuntu, Kubuntu, Xubuntu and Edubuntu. The first of these is Knot-1, available now in all flavors.Pie Box Enterprise Linux 3 Update 8 now available
Pie Box Enterprise Linux 3 now has an eighth update available. This update includes new and enhanced kernel features, driver additions, security updates and much more. "Pie Box Enterprise Linux 3 is aimed at people who need a stable OS with a long lifespan but don't want an expensive bundled support contract. It is derived from open source software with only four packages modified in order to replace trademarks and logos with our own. Features of Pie Box Enterprise Linux 3 include the Linux 2.4 kernel, GNOME, Apache 2, Samba 3 and Logical Volume Manager."
Musix 0.50 released
The Musix project has released Musix 0.50. "Musix 0.50 can be consider the more stable and functional Musix version until now, also, 0.50 can update old Musix versions, as instance Musix 0.40 could be updated without re-install all the system."
Distribution News
Upcoming Release of Debian GNU/Linux 4.0
The Debian project plans to release Debian GNU/Linux 4.0 (alias 'etch') in December of 2006. "This will be the first official release to include the AMD64 architecture. The distribution will be released synchronously for 11 architectures in total."
Fedora Legacy end-of-life announcements
The Fedora Legacy project has sent out some end-of-life announcements. For users of Fedora Core 1 and 2, the deadline is close: support will be withdrawn as of July 26. Those using Red Hat Linux 7.3 and 9.0 (and such people do exist) have a little longer: bugs in those distributions will be fixed through the end of this year.Fedora Project Board Update
The meeting summary for the July 18, 2006 meeting of the Fedora Board is available. Topics discussed include RPM, which needs continued followup and discussion with the community, Fedora Bugs (bugzilla.redhat.com), Fedora Core, the package set, and the schedule for fc6, File Systems and Fedora, Various legal issues and Logo and Trademark.SUSE Linux 9.1 is done
The last update for SUSE Linux 9.1 was released today (quagga). Click below for a small summary of the YOU patches released for SUSE Linux 9.1.Ubuntu edgy `Breaks' dependency field
Ian Jackson looks at a new kind of dependency relationship called `Breaks'. "This is like `Conflicts' but doesn't cause the deinstallation of the broken packages, merely their deconfiguration (to note that they're broken)."
New Distributions
Via-specific Linux distro eyes UMPCs (LinuxDevices)
LinuxDevices introduces EpiOS, a Gentoo-based Linux distribution for Via Epia mini-ITX boards. "EpiOS is a hardware-specific Linux distribution for Via Epia boards. It is based on Gentoo and KDE, and aims to support traditionally problematic Via processor features, such as hardware MPEG and cryptography acceleration, "out-of-the-box." For example, the project relies on software from the OpenChrome project, in order to support Via's advanced graphics features."
Distribution Newsletters
Debian Weekly News
The Debian Weekly News for July 25, 2006 covers the package overview page, the move to Subversion, consolidating SSL certificates, dealing with documentation issues in stable, a constitutional amendment on the handling of assets, etch release status, and much more.Fedora Weekly News Issue 56
This edition of the Fedora Weekly News covers FC6 Test2 Freeze Slip End of Life times for FC1, FC2, RHL7.3 and RHL9, Introducing Fedora Women, Fedora at O'Reilly OSCON 2006, Kernel Privilege Escalation Exploit for CVE-2006-3626, and several other topics.Gentoo Weekly Newsletter
The Gentoo Weekly Newsletter for July 24, 2006 looks at a donation of hardware from Sun, Ethereal gets a new name, User Representatives election are open, the Deletion of Inactive user accounts, and several other topics.DistroWatch Weekly, Issue 161
The DistroWatch Weekly for July 24, 2006 is out. "This week started a bit slow, but fortunately things picked up. Debian announced their updated release goal sheet with version information. The Fedora Core 6 test2 was delayed by a week. Mandriva has also been suffering delays due to extremely warm temperatures. This week we bring you a guest columnist comparing and contrasting the differing apt-get front ends. I took a quick look at some of the new live cds released this week."
Package updates
Fedora updates
Updates for Fedora Core 5: sendmail (bug fixes), tcsh (bug fix).Updates for Fedora Core 4: sendmail (bug fix).
Mandriva update to imlib2
Mandriva has fixed an x86_64 tiff loader bug in imlib2 for Mandriva Linux 2006.0.rPath update to conary conary-build conary-repository
rPath has updated conary, conary-build and conary-repository to the Conary 1.0.24 maintenance release.Trustix update
Trustix has fixed various bugs in cpio and gawk for TSL 3.0.
Newsletters and articles of interest
VPSLink Launches Gentoo Linux (WHIR News)
WHIR News reports that web hosting provider VPSLink has added Gentoo Linux to its virtual private server product line. "VPSLink is a wholly owned subsidiary of Spry Hosting. It is designed specifically for Linux power users and provides budget VPS Web hosting solutions from its data center in Seattle, Washington."
Distribution reviews
Ubuntu Linux 6.06 review (Jem Report)
Here's a review of Ubuntu Dapper on the Jem Report; it shows that we clearly are not all looking for the same thing in a Linux distribution. "I figured I'd do some Java programming exercises while I tested Ubuntu, but I couldn't find a Java Development Kit in either of the package managers. There was a Java 5.0 Runtime Environment, but no JDK -- or at least, searches for 'jdk' and 'java' didn't turn up anything in Synaptic. To top it all off, Ubuntu 6.06 comes with a fake Java installed -- GIJ. I want the real Java, or I want nothing so that I can install the real Java properly; I do not want a half-hearted, half-working Java facsimile that doesn't even have a browser plugin."
Review: Xandros Server (Linux.com)
Linux.com reviews Xandros Server. "Long known for its desktop distribution, Xandros is now getting into the server act with the release of Xandros Server 1.0. One might wonder, what's the point of yet another server-oriented distro when the server market is already well-served? Xandros Server offers a GUI-oriented approach to system administration that should do well with admins familiar with Windows server products."
Page editor: Rebecca Sobol
Development
Optimizing Linker Load Times
Everyone wants their computer to start faster. Distribution maintainers are thus always looking for things to decrease boot time and program load time, using mechanisms such as readahead, boot reordering, even parallel init to more efficiently distribute CPU and disk I/O and get the user to the login screen faster.
One such tool used to decrease boot time and program load time is prelink [PDF], developed by Jakub Jelínek at Red Hat and discussed in an earlier LWN article. Prelinking is not the only way to improve start-up times, however; there are also a number of existing and developing optimizations the GNU linker can apply to give substantial gains. Besides existing GNU linker hash table optimizations, Michael Meeks has done substantial works on three separate optimizations in the GNU linker in a quest to make OpenOffice.org load quickly [PDF].
1.0 The -Wl,-O1 Linker Options
In typical operation, symbols are stored in hash tables in ELF binaries; these hash tables are kept small, and symbols that fall into the same bucket—hash to the same value—are compared by a simple string comparison. Unfortunately, symbols in the same bucket with the same prefix will need a long string comparison, which can be slow; if there are lots of symbols in the same bucket, then the dynamic linker has to string compare with each of them until it finds a match (Fig. 1.0-1).
![]()
Fig. 1.0-1: A hash table of symbols in a library. The bucket 0x00b1 contains three symbols; the red characters will have to be tested against the symbol name before the symbol 'foodragon' is resolved.
It was recommended in a paper [PDF] by Ulrich Drepper to utilize a GNU linker optimization that focuses more on producing short hash chains than a small hash table size. Although the hash table may grow by a few kilobytes, the shortened length of hash chains means that symbol look-ups do not have to perform as many string comparisons. Further, the chances of symbols sharing long prefixes landing in the same bucket are greatly reduced, making walking the chains faster (Fig. 1.0-2).
![]()
Fig. 1.0-2: A hash table of symbols in a library. This table is optimized, so symbols hash to buckets containing shorter hash chains; this reduces the number of string comparisons done. The table is a bit bigger, though.
This linker optimization can be activated by passing -Wl,-O1 to gcc at link time. This flag can also be passed during any compilation; however, optimizing hash tables can be slow, and there are no benefits to doing this when creating object files that are just going to be linked into a main executable or shared object.
Currently this linker optimization is used by GNOME in its official builds. It has also been discussed on the Gentoo forums; and is used by the Ubuntu distribution, to name a few. An old but good technique.
2.0 -Bdirect Linking
Michael Meeks also proposed an optimization to GNU binutils and glibc which functions similar to direct binding in Solaris. By passing -Bdirect at link time, the build process can cause many symbols to be directly linked, allowing the dynamic linker to severely decrease the search space during lookup.
Libraries have unresolved symbols when they use functions or global variables from other libraries; these symbols are resolved during dynamic linking. The dynamic linker locates every unresolved symbol each library needs by searching the symbol table of each loaded library in order from first loaded to last loaded. This can become quite time consuming, especially in cases such as GNOME or OpenOffice.org where 50-150 libraries are loaded and up to 200,000 symbols must be resolved.
![]()
Fig. 2.0-1: Normal binding is done by checking through all libraries until the symbol is found.
Direct binding shortens the path the linker has to take to resolve a symbol by drawing it straight from whatever ELF object needs the symbol to the ELF object containing the symbol. A section is added to the ELF header which associates each symbol with an entry in the DT_NEEDED table—the list of libraries needed by the ELF object. The linker uses this information to go straight to the library containing the symbol and search only there, instead of searching through each library sequentially.
![]()
Fig. 2.0-2: Direct binding is done by checking the library that the symbol table says the binding is located in. This gives a much shorter path for any symbol lookup; three are shown above.
Meeks' -Bdirect linking method operates slightly differently from Solaris direct binding. With the Solaris linker, direct binding binds all symbols directly to the relevant libraries. With Michael Meeks' implementation of -Bdirect linking, vague symbols are detected and linked as normal. This is particularly important with C++, as vague C++ symbols are fairly common. It is not possible to guarantee that a vague symbol is linked to a specific library, so direct binding of vague symbols is not technically feasible.
-Bdirect binding can, to a degree, work with shared objects that are loaded with dlopen() rather than run-time linking; this is reported to greatly aid with OpenOffice.org and KDE start-up times. This is interesting because the performance improvements per library are comparable to but not quite as substantial as prelink, which does not affect libraries loaded in this manner.
The current implementation unfortunately has a few rough edges. Some areas could be better optimized; and there is an issue with certain libraries and programs breaking due to direct binding. Sometimes multiple libraries supply the same symbol, and the first loaded is the one used; this is called interposing, and is the reason why Meeks' -Bdirect linking patch does not optimize vague symbols. When direct binding is used, the symbol is chosen by the GNU linker at link time rather than by the dynamic linker at run time. This can be both a good and a bad thing, depending on the situation.
In most cases direct binding is a good thing, as it guarantees that libraries dependent on other libraries will always find the proper symbols, even if multiple libraries are loaded with the same symbols. Unfortunately, sometimes this very functionality also changes the way existing programs link, which just happen to work fine based on using the symbol from the first library supplying it. This is usually disastrous, as the symbol now used is typically a variable or function meant for a different purpose; the program no longer does what the programmer intended, and likely ends up simply crashing.
Not everybody believes that the use of interposing is the right thing to do. Still, getting things like this working would really require finding a work-around that does not break compatibility with existing code. Michael Meeks suggested during e-mail discussion a link-map extension to handle direct binding per symbol:
I would instead say: writing code that explicitely relies on interposing is not sensible. However - to make this work all that is needed is to implement an extension to link-maps (as done in the Solaris linker) to allow certain symbols to be marked as interposers (and hence not direct linked). That's most useful for (eg.) in glibc's use of pthreads - done by interposing.
This would allow direct binding to be used with libraries that currently fail with it, by only doing a long symbol search for vague symbols. Further, Meeks' finterpose tool can be used to find interposers between libraries; this not only shows where -Bdirect binding may fail, but also has exposed a few bugs in software such as GTK+ and gstreamer. The unfortunately large number of interposers presents a slight roadblock, but should not stop Meeks' -Bdirect linking from eventually becoming fully functional.
This optimization has an uncertain future, however. Relevant glibc code has so far been rejected by Ulrich Drepper. Despite this, -Bdirect linking has already found uses in Gentoo (with a portage overlay), Pardus Linux, and Solaris/OpenSolaris. The patch has also been committed to OpenSUSE, although it is uncertain if it will be used to build upcoming OpenSUSE releases.
3.0 dynsort
Another optimization posted by Michael Meeks adds the dynsort keyword to the GNU linker. By passing -zdynsort at link time, the .dynsym and .dynstr sections as well as relocations are all sorted by ELF hash and by the position where they land in the hash bucket.
When symbols are looked up in an ELF object, a hash table has to be searched. Hash collisions are effectively stored as a linked list, which then has to be walked to find the appropriate entry. With dynsort, the symbols that have to be examined while walking a bucket are all adjacent to each other. This reduces the number of L1 and L2 cache misses, allowing the CPU to utilize its facilities much more efficiently during dynamic linking.
The dynsort optimization has gotten a good bit of attention since it was unveiled. Meeks is working on improving it in various ways, such as moving data for undefined symbols away from the rest of the data. It was this patch that got Meeks offered a branch in binutils cvs, although as of this writing one hasn't been set up. It can be used in Gentoo with an overlay, but may soon be available everywhere via the --hash-style option.
4.0 Precomputed Hash Values
A few weeks after the dynsort patch, Meeks posted another optimization the binutils mailing list. This one adds pre-computed ELF hash values to the elf header when the -hashvals switch is given. Normally the dynamic linker has to compute a hash value of a symbol and then use that to find the index in the symbol tables of the other libraries. The -hashvals optimization pre-computes these, removing a series of cache misses and mathematical computations from the process.
The visible effect of the -hashvals switch is a large speedup in symbol look-up; Meeks measured dlopen() on libsvx as requiring 40% less time, and in some places a 51% reduction was realized. This is due not only to avoiding the calculation of symbol hash values; but also to much more efficient L2 cache utilization. Only a single 32-bit value is accessed for each symbol, rather than a long string; and locality is increased, since only the .hashvals section is accessed instead of both .dynsym and .dynstr, which reduces L2 cache misses.
This patch has a very favorable future; it almost immediately gained support for inclusion in upstream binutils. Several months later, a rewrite done by Ulrich Drepper and Jakub Jelínek was posted, implementing sorting and precomputed hashvals via --hash-style. And of course, Gentoo users have had access to it for a while with various portage overlays.
Conclusion
There are a lot of optimizations possible to reduce dynamic linking time, creating substantial gains in application load time. Future versions of the GNU linker and glibc may allow distributions to boot and load programs much faster, getting users to the desktop and on their applications in substantially less time.
System Applications
Audio Projects
Rivendell v0.9.69 is available
Version 0.9.69 of Rivendell, a radio station automation system, is out. "This release, featuring the debut of full voicetracking and log customization capabilities, marks a significant milestone for the project, with all modules now feature-complete."
Database Software
pgAdmin III v1.4.3 released
Version 1.4.3 of pgAdmin III, a GUI PostgreSQL administration tool, has been announced. "v1.4.3 is primarily a bug fix release".
DNS Software
dnspython 1.4.0 announced
Version 1.4.0 of dnspython has been announced. "dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG authenticated messages and EDNS0. dnspython provides both high and low level access to DNS. The high level classes perform queries for data of a given name, type, and class, and return an answer set. The low level classes allow direct manipulation of DNS zones, messages, names, and records."
smbind 0.4.4 released (SourceForge)
Version 0.4.4 of smbind, a PHP-based tool for managing DNS zones for BIND via the web, is available. "A number of fixes have been included in this release for both smbind and smbind-slave. A problem with user delegation of zones was fixed (thanks to an anonymous SF user report), along with a minor fix for zone deletion, which wasn't getting committed to the config file as expected. Deleting a user was supposed to transfer ownership from that user over to the admin user, but was broken because of the expected admin user's id in the database. A few documentation updates and grammatical changes have also been made."
Interoperability
Samba 3.0.23a Available for Download
Version 3.0.23a of Samba has been announced. "This is the latest stable release of Samba. This is the version that production Samba servers should be running for all current bug-fixes."
LDAP Software
LAT 1.1.5 is available
Version 1.1.5 of LAT, the LDAP Administration Tool, is available. "This release is the 6th of the 1.1.x development cycle which will eventually become v1.2. If you need a stable release stick with the 1.0 branch."
Printing
Common UNIX Printing System 1.2.2 announced
Version 1.2.2 of CUPS has been announced. "CUPS 1.2.2 fixes several build, platform, notification, and printing bugs."
Security
FTimes 3.7.0 Released (SourceForge)
FTimes version 3.7.0 has been announced. "Version 3.7.0 is a minor release of FTimes, a system baselining and evidence collection tool. The primary purpose of ftimes is to gather and/or develop topographical information and attributes about specified directories and files in a manner conducive to intrusion and forensic analysis."
Sussen 0.26 announced
Version 0.26 of Sussen, a vulnerability and configuration file scanner, is out with new features, code cleanup and bug fixes.
Web Site Development
ASF Announces Apache Geronimo Version 1.1
The Apache Software Foundation has announced the release of Apache Geronimo Version 1.1, an open-source J2EE application server. "Along with many new features, Apache Geronimo Version 1.1 introduces several structural changes designed to improve scalability, portability and overall organization. An easy-to-use configuration and management console provides access to the new innovative plug-in architecture, allowing advanced control over the rich modularity of the Apache Geronimo server as well as simplifying day-to-day operational management tasks."
OpenReports 2.0 Milestone 1 released (SourceForge)
Version 2.0 Milestone 1 of OpenReports has been announced. "OpenReports, the leading open source web reporting solution, is pleased to announce the availability of OpenReports 2.0 Milestone 1. OpenReports 2.0 features new export formats, ChartReports, scheduling improvements, support for JasperReports 1.2.5 and Hibernate 3.1.3, and many other bug fixes and enhancements."
Plone Foundation Announces Plone 2.5
Version 2.5 of the Plone Content Management System has been announced. "With the addition of powerful caching technologies, Plone 2.5 enables websites to run 10 to 40 times faster than in previous versions. Plone 2.5 focuses on streamlining code, strengthening stability, and increasing flexibility. The release incorporates the latest generation of the underlying Zope application server, setting the groundwork for Plone Foundations anticipated 3.0 release, available early 2007. Plone 3.0 will substantially increase ease-of-use and efficiency through user interface improvements."
Web Services
WSMT v1.3 Released (SourceForge)
Version 1.3 of the Web Service Modeling Toolkit (WSMT), a collection of tools for Semantic Web Services intended for use with the Web Service Modeling Ontology, is available. "The main aim of this release has been to improve the functionality of the WSML Text Editor and Reasoner Views with respect to syntax completion. In the previous release only keywords where recommended and this keyword recommendation was not sensitive to the current location in the document. This release sees the addition of full context sensitive syntax completion."
Desktop Applications
Audio Applications
Announcing Jokosher 0.1 (GnomeDesktop)
The initial version 0.1 release of Jokosher, a multi-track audio studio application for GNOME, has been announced. "The Jokosher team are proud to announce our very first 0.1 release of Jokosher, a simple, usability focused Open Source multi-track studio. Since the original design and conception of the project in February, a team of developers, documentation writers, artists, testers and packagers have worked together to create a compelling first release."
Desktop Environments
GNOME 2.15.90 released
GNOME 2.15.90 (otherwise known as the first GNOME 2.16 beta) is out. Click below for download details and pointers to information on what is changing in 2.16.GNOME Software Announcements
The following new GNOME software has been announced this week:- Alacarte 0.9.90 (bug fixes and translation work)
- Dasher 4.1.8 (new features and bug fixes)
- Eye of GNOME 2.15.90 (bug fixes and translation work)
- gcalctool 5.8.19 (bug fixes and translation work)
- GDM2 2.15.7 (unstable development release)
- GLib 2.12.1 (new features, bug fixes and translation work)
- gnome-games 2.15.5 (bug fixes)
- GnomePython 2.15.90 (unstable development release)
- GnomePythonDesktop 2.15.90 (unstable development release)
- gnome-speech-0.4.2 (bug fixes)
- Gnome-utils 2.15.90 (bug fixes)
- GTK+ 2.10.1 (bug fixes)
- Gtk2-Perl 2.15.90 (new features)
- gtkmm 2.9.9 (bug fixes and documentation work)
- Handwriting Recognition Engine 2.1.1 (bug fixes, api changes, demo work)
- Jokosher 0.1 (initial release)
- libgnomeui 2.15.90 (bug fix)
- Metacity 2.15.13 (new features, bug fixes and translation work)
- monotone 0.28 (new features and bug fixes)
- OnTV 2.2.0 (new features and translation work)
- Orca 0.2.7 (new features, bug fixes and translation work)
- XChat-GNOME 0.13 (new features and bug fixes)
- Yelp 2.15.5 (new features, bug fixes and translation work)
KDE Software Announcements
The following new KDE software has been announced this week:- digikam and digikamimageplugins 0.9.0-beta1 (new features and bug fixes)
- digikam-doc and digikamimageplugins-doc 0.8.2 (new features and translation work)
- Dolphin File Manager 0.6.0 (new features and bug fixes)
KDE Commit-Digest (KDE.News)
KDE.News has announced the July 23, 2006 edition of the KDE Commit-Digest. Here is the content summary: "KDevelop gets new configuration framework functionality. The start of a Satellite tracks feature in KStars. Support for PDF data extraction, and speed optimisations in Strigi. New features in KPhotoAlbum (KPhotoAlbum is the new name for KimDaBa). Perspective grid support in Krita, with the implementation of a Bezier tool becoming feature-complete. More work on unit conversions in KRecipes. Porting of KRDC to KDE 4."
Electronics
Covered 0.4.6 released
Version 0.4.6 of Covered, a Verilog code coverage utility, has been announced. "This release contains several bug fixes".
Games
New male media in Ember
The WorldForge game project has announced the creation of a new human male simulation. "Im trying to get a new version of Ember out, hopefully this week. In the meantime I want to show some screenshots of the new male mesh that Jayr has been working on. By using the model definition system in Ember, its possible to define different parts of the model, such as /torso/cloth/green or /torso/cloth/red. These parts use the same submesh (in the example the torso submesh) but with different materials."
Graphics
OpenSceneGraph 1.1 released
Version 1.1 of OpenSceneGraph, an open-source 3D scene graph project based on OpenGL, is available with a long list of new capabilities.
Mail Clients
UI Improvements in Evolution 2.8
Srinivasa Ragavan's GNOME blog covers changes to the Evolution mail client. "Four months, in GNOME 2.16 cycle, We have added a lot of UI improvements to Evolution to make it look much better. Not just features and lot of bug fixes too!!! I have blogged them in parts. Im summarising all of them."
Music Applications
New Colombo hydrogen drumkit
Marcos Guglielmetti has announced a new drum kit sample set for the hydrogen drum machine. "Colombo drums are handcraft drums made in La Plata, Argentina by a man called Colombo."
Office Suites
OpenOffice and ISO distribution with Metalink
OpenOffice.org and other software is now available via Metalink using aria2. "OpenOffice.org is using a new Web/P2P hybrid called Metalink to distribute its free office suite. Other open source software and Linux ISOs are available at Metalink Packages Resources."
Languages and Tools
Python
Crunchy Frog 0.6 released
Version 0.6 of Crunchy Frog has been announced. "Crunchy Frog is an application that transforms an html-based Python tutorial into an interactive session within a browser window."
Tcl/Tk
Dr. Dobb's Tcl-URL!
The July 25, 2006 edition of Dr. Dobb's Tcl-URL! is online with new Tcl/Tk articles and resources.
Page editor: Forrest Cook
Linux in the news
Recommended Reading
On the horizon: an open graphics card (NewsForge)
Joe 'Zonker' Brockmeier takes a look at the Open Graphics Project (OGP). "The goal for the project is to create a video card at a reasonable price that is unencumbered by patents or other intellectual property, that has a fully documented programming interface, supports a full OpenGL implementation, offers good 2-D graphics performance, and supports video playback."
What AMD's ATI acquisition means for Linux (and Macs) (Linux-Watch)
Linux-Watch looks at AMD's acquisition of ATI. "With AMD at the helm, I can envision ATI finally open-sourcing the code to its proprietary drivers. That should quickly result in much better performance for Linux users, and better performance for the Windows and Mac platforms as well."
India rejects One Laptop Per Child (Register)
The Register reports that India has decided not to participate in the One Laptop Per Child project. "The Indian Ministry of Education dismissed the laptop as 'paedagogically suspect'. Education Secretary Sudeep Banerjee said: 'We cannot visualise a situation for decades when we can go beyond the pilot stage. We need classrooms and teachers more urgently than fancy tools.'" The article also notes that Nigeria has ordered one million OLPC systems.
Trade Shows and Conferences
Day one at OSCON (NewsForge)
NewsForge reports from O'Reilly's Open Source Convention (OSCON). "The eight annual O'Reilly Open Source Convention (OSCON) kicked off Monday at the Oregon Convention Center. The first two days at OSCON are all about tutorials, with half-day presentations by key contributors to open source projects discussing how to make use of their tools. OSCON has several tracks, including tracks for Web applications, databases, Perl, JavaScript and AJAX, Ruby, Linux, programming, and business."
OSCON day 2 (NewsForge)
Joe "Zonker" Brockmeier reports from OSCON on NewsForge. "The highlight of the evening was Larry Wall's annual State of the Onion report. Ostensibly meant to be an update on the state of Perl, Wall's talk was about 90% entertainment and 10% status report on Perl 6. Wall noted that Perl was first released in 1987, and says that as Perl is approaching its 20th birthday, the language is 'growing up.' Though the Perl team has been reluctant to give timelines for Perl 6 to be finished, Wall says that we should have 'most of Perl 6' by Christmas. Though it probably won't be a final release, it looks as if Perl 6 might just be ready by the time the language turns 20."
Companies
IBM extends support to Novell's SUSE Linux (CRN India)
CRN India reports on IBM's plans to support SUSE Linux Enterprise 10. "IBM will support Xen technology as part of the Virtualization Engine portfolio on the company's Intel and Opteron processor based server and blade systems. Additionally, IBM has plans to support SUSE Linux Enterprise 10 from Novell across its entire hardware and software portfolio and provide services support."
Linux Adoption
Govt. is the Best Bet For Linux in India, Too (ChannelTimes.com)
ChannelTimes.com reports on the increasing use of Linux in government. "World over, the benefits of the open source system are increasingly being acknowledged by the government sector. In India, Red Hat and Novell, the two major players in open source technology, confirmed the importance of its adoption in the government sector. Sandeep Menon, director-sales, Linux West Asia Business, Novell, said, "Novell benefits whenever an effort is made to promote open source systems because more than half of its large Linux engagements are with the government and public sector.""
Free and Open Source Software at the United Nations (O'ReillyNet)
O'ReillyNet looks at how United Nations agencies use free and open source software. "Advances in technology have revolutionized the way people live, learn and work, but these benefits have not spread around the world evenly. A digital divide exists between communities in their access to computers, the Internet, and other technologies. The United Nations is aware of the importance of including technology development as part of a larger effort to bridge this global digital divide. This article looks at how various United Nations agencies use free and open source software to meet the goal of putting technology at the service of people around the world."
Linux at Work
Linux-powered robots from France? Oui! (LinuxDevices)
LinuxDevices looks at the Aldebaran "Nao" robot. "Aldebaran says its "Nao" household robot will compete with robotic research prototypes in terms of functionality. The walking, talking, WiFi-enabled bot will stand 21.6 inches tall, and will feature 23 "degrees of freedom" of motion -- three more than the 14-inch tall "Choromet" android announced earlier this week by four Japanese companies. Nao's extra degrees of freedom appear to come in the form of gripping hands."
Interviews
An Interview with the Creator of FreeSWITCH (O'ReillyNet)
The O'Reilly Network talks with Anthony Minessale, the developer of the FreeSWITCH telephony application. "Despite the fact that I have contributed a sizeable list of features to Asterisk, working around the politics was almost harder than working around some of the shortcomings in the design. I have raised FreeSWITCH up from scratch in only one-third of the time I had previously spent working on just adding things to a fully-functional Asterisk."
Ubuntu heads for the mainstream (Register)
The Register talks with Mark Shuttleworth. "One of the really interesting questions we got when we made the Sun announcement was, do you think it will hurt your community credentials if you start working with Sun, IBM, HP and so on? So it is very important to our business model that that not be the case. Because much of the value of Ubuntu lies in the fact that it's collaboratively produced with the community."
Jani Monoses (Behind Ubuntu)
Behind Ubuntu interviews Xubuntu hacker Jani Monoses. "Who is the target audience for Xubuntu? Is it mainly for people with older or slower machines also what features do you think might appeal to current Gnome and KDE users? Initially it was meant as a clean and maintainable distro for machines with less memory. However it turned out to be a very good fit for thin client deployments as well. Existing experienced Gnome and KDE users may find its relative speed and simplicity appealing, but this is a matter of taste mostly. The main target are still those machines where KDE and Gnome do not run acceptably well."
Packt Publishing announces Open Source CMS Award (NewsForge)
NewsForge talks with Damian Carvill about Packt Publishing's Open Source CMS Award. "NF: How will the entries be sorted and shortlisted? DC: We want as many open source CMSes to enter as possible through the nomination process. We don't expect the judges to plough through hundreds of nominated entries, which is why only the five with the most nominations will go through to the final. I can see how this can be misconstrued as a popularity contest by default, but we felt that this was the best way to arrange it."
Resources
Rumblings From Studio Dave (Linux Journal)
Dave Phillips rambles about audio and 64-bit Linux. "As I mentioned at the end of my last entry I've preparing myself for my first excursion into the world of 64-bit Linux. After trading some lessons for a motherboard I started collecting parts for a new desktop machine for the studio. 64-bit considerations were new to me so I asked for help on the Linux Audio Users mail list. Some LAU members run 64-bit systems, and I did indeed get the information I needed. I won't detail the engaging traffic that resulted from that thread, you can read it yourself in the LAU list archives (it's titled AMD64 question)."
System Administration: Another Step toward the BIND (Linux Journal)
Linux Journal looks at the named.conf file used by BIND. "As we've said previously, Linux distributions come with BIND, an application that runs the vast majority of all DNS servers. BIND runs a service or daemon called named. It's primary configuration file is called named.conf. (We assume that you know that Linux services or daemon's have configuration files associated with them.)"
System Administration: Another Step toward the BIND (Linux Journal)
Linux Journal presents part 2 and part 3 in a look at BIND. From part 3: "The early information contained in the primary zone file exists to accommodate your secondary or slave server. That's BIND for you. When you look at the SOA entry you will see the information for the secondary server in lines 2 through 6."
Enlightenment 17 QuickStart Guide (HowtoForge)
HowtoForge has published a QuickStart Guide for the Enlightenment 17 window manager. "Enlightenment 17 or E17 as it is generally called, is a cool Window Manager for X. The latest stable version of Enlightenment is E16 (0.16.8.1). In this article we will talk about the latest CVS build available (0.16.999.023)."
Five Power Tips for Thunderbird (Summersault Weblog)
Mark Stosberg was a demanding mutt user. Now he has some tips for switching to Thunderbird. "As an internet professional, I use e-mail constantly. Mutt, a popular e-mail client for command line geeks had been wearing on me. I found Thunderbird 1.5 a capable replacement for my needs, and have since cut the average size of my Inbox in half."
Live migration of Xen domains (Linux.com)
Linux.com shows how to migrate virtual machines while they are running using VM migration. "Virtualization is all the rage these days. Advances in x86 performance, as well as the increasing energy requirements of servers, make efficiently provisioning machines a necessity. Xen, an open source virtual machine (VM) monitor, works with just about any Linux distribution. One useful feature for shops that care about high availability is Xen's ability to migrate virtual machines while they are running. By using VM migration, you can pool computing resources just as you can pool storage. Here's how."
Reviews
What Is Geronimo? (O'ReillyNet)
Kunal Jaggi takes a look at Apache Geronimo, an open-source, Java EE-compatible application server. "Based in an integration of best-of-breed open source technologies, and with a vibrant and thriving community backing a certified open source server, Geronimo is set to take the enterprise market by storm. This article will introduce you to Geronimo and give you the basics you need for developing and deploying a simple Java EE web application on Geronimo."
Taking Microsoft's ODF Plugin for a Spin... Splat (Groklaw)
Groklaw looks at the results of Rob Weir's tests of Microsoft's Open Document Format (ODF) plugin. "To test conversion fidelity, first he created an ODF document in OpenOffice.org. So that's how it's supposed to look. The original as ODF is there on his blog too. Next, he opens this ODF document in Word 2007 using their plugin. Take a look at the results. Look what happened to his poor ODF document in Word 2007. It's an absolute mess. Why? What is Microsoft's excuse for such shoddy output, when they have, right now, all the documentation and even the source code to work with -- their own and everything from the ODF side too?"
Gimmie a new panel prototype (Linux.com)
Linux.com covers Gimmie, Alex Graveley's re-imagined desktop panel project. "Core desktop interface elements such as menus and panels are frequently targets for revision and replacement, owing to their importance and the difficulty of developing a best-fit-for-the-most-users design. In a GUADEC 2006 presentation (the notes for which are available in PDF at the Gimmie Web site), Graveley enumerates some problems marked for attention. Among them are the underutilization of "recently used" lists for applications and documents, the inflexibility of system menus, and the ambiguity of icons -- some are launchers, some are representations of running apps, etc."
WiFi Radar eases connections
Joe Barr reviews WiFi Radar on Linux.com. "WiFi Radar is a handy tool for those who move from one wireless access point (AP) to another. My laptop regularly connects to a wireless AP on my home LAN, to a free wireless service in downtown Austin where we hold our weekly LUG meetings, and to whatever is available at airports and hotels when I'm on the road. WiFi Radar makes it simple to switch connections no matter where I am."
High-speed analog data acquisition module runs Linux (LinuxDevices)
LinuxDevices reviews the Pentland RAD-2 PMC data acquisition board. "Pentland says its RAD-2 PMC features dual-channel, 14-bit resolution, with up to 105MSPS sampling speed and 16 individual down-converter channels. Other features include a 64-bit, 66MHz PCI bus, for high-bandwidth transfers, on-board DMA, and a Xilinx Virtex II FPGA for post-acquisition DSP (digital signal processing)."
Linux on the Nokia 770 Internet Tablet (O'ReillyNet)
O'ReillyNet reviews the Nokia 770 Internet Tablet. "The Nokia 770 is an internet tablet designed to connect to the internet with 802.11b/g WLAN or through a phone with Bluetooth. It has a nice 800 x 480 screen (64k colors) and quite a few apps on board. The underlying OS is the Debian GNU/Linux derivative, BusyBox. As it stands, the device is not a phone."
R Cubed's thin, fast Linux notebook (NewsForge)
NewsForge reviews a Linux powered laptop. "The LS1250-L is a good example of a Linux notebook that is both lightweight and small in size, while having a reasonable heat signature. Anybody that travels knows that weight kills, when it comes to lugging around your suitcase and mobile computer. The R Cubed notebook has just the right amount of heft to make it feel durable. By itself the 11x9x1.5-inch LS1250-L weighs in at a svelte 3.62lbs. Add 14 ounces for the power brick and cord combination, and you have a slim back-friendly Linux computing package."
Miscellaneous
A Galician Government Representative Meets KDE Translators (KDE.News)
KDE.News covers a language translation effort. "Last Saturday, a representative from the Galician Government in Spain met members of the Trasno project. This project includes Free Software volunteer translators for the Galician language, from a wide range of Free software projects including KDE. The government representative was Mr. Antonio Pérez Casas, Adviser for the Information Society of the Industry and Innovation Councillor. Six people came to the meeting from the Trasno team including Xavier García Feal, coordinator of the KDE galician language team, two other KDE translators, a couple of translators from Gnome and the author of the Galician ispell dictionaries."
Page editor: Forrest Cook
Announcements
Non-Commercial announcements
GnuPG and freenigma
Werner Koch has announced the Freenigma service. "Over last months I worked along with another company to setup a project to make email encryption easier for the non tech savvy users. The whole thing will go online in August but it is already possible to register for an invitation. The Freenigma service creates OpenPGP compliant messages much like hushmail does."
EFF: Texas Judge Briefed by EFF Affirms Phone Privacy
The Electronic Frontier Foundation has briefed a Texas judge on the issue of the privacy of data entered on a telephone keypad. "In the first ruling of its kind, a federal magistrate judge has held that the government must obtain a search warrant to collect the content of a telephone call, even when that content is dialed digits like bank account numbers, social security numbers or prescription refills. The decision from Magistrate Judge Smith in Houston closely follows the reasoning outlined in an amicus brief from the Electronic Frontier Foundation (EFF) and the Center for Democracy and Technology (CDT)."
EFF's Spying Case Moves Forward - Judge Denies Government's Motion to Dismiss AT&T Case
The Electronic Frontier Foundation has sent out a media release concerning the status of a legal case involving the EFF vs AT&T. "A federal judge today denied the government's motion to dismiss the Electronic Frontier Foundation's (EFF's) case against AT&T for collaborating with the NSA in illegal spying of millions of ordinary Americans. This allows the case to go forward in the courts."
OpenDocument standard completing i-dotting and t-crossing
David A. Wheeler has announced the release of the OpenDocument 1.0 second edition. "This final i-dotting and t-crossing at the standards level is one of the last steps in the formal standardization process. Users can now know that the OpenDocument 1.0 specification is quite stable, and can deploy OpenDocument with even more confidence."
Commercial announcements
Digium's rPath-based "software appliance"
rPath has sent out a press release announcing a new partnership with Digium. The end result is that Digium will be shipping a version of Asterisk (the "Asterisk Business Edition") which will have an rPath-supplied Linux distribution built into it, eliminating the need to install (and manage) Linux separately.On-Disk.com donates to FSF and OSI
The On-Disk.com Developers Portal is celebrating its first anniversary by donating to the FSF and OSI. "On-Disk.com Developers Portal first anniversary, Webpath Technologies, today announced it will mark the occasion by donating $1 to both the Free Software Foundation and the Open Source Initiative for every disc ordered on August 1."
OSDL Adds New Member as Marketshare for Mobile Linux Continues to Rise
Open Source Development Labs, Inc. has announced the newest member of its Mobile Linux Initiative, a la Mobile. "OSDL membership for a la Mobile comes on the heels of the company's recent launch announcement and introduction of an independent Linux systems platform for mobile phones. Designed to be readily adaptable to wireless handsets, a la Mobile's Convergent Linux Platform enables handset manufacturers to bring Linux-based smartphones and full-feature phones to market rapidly while reducing development, testing and deployment costs."
Panda Software Launches Panda DesktopSecure for Linux
Panda Software has announced the release of Panda DesktopSecure, a security suite for Linux workstations. "The new Panda Software solution includes signature-based detection of malicious code, the Genetic Heuristic Engine -- a new technology capable of detecting more unknown malware than traditional heuristics -- and, unlike similar solutions, it includes a powerful firewall. It also has the advantage that all these features can be controlled simply and intuitively through a single graphic interface."
Socialtext Releases First Commercial Open Source Wiki
Socialtext has announced the release of the Socialtext Open wiki. "Available for immediate download, Socialtext Open is the first open source wiki with a commercial venture as its primary contributor. Over 2,000 businesses run Socialtext Wiki products today as a hosted service or appliance. Based on the same great product, Socialtext Open is released under a standard open source license, and contains all of Socialtext's enterprise grade code aside from enterprise management and enterprise integration tools. Socialtext also announced the availability of its Technical Professional Service, a new SOAP API and the Socialtext Open Roadmap for the next three months."
New Books
Pragmatic Bookshelf releases "Agile Retrospectives"
Pragmatic Bookshelf has published the book Agile Retrospectives by Esther Derby and Diana Larsen.C++ GUI Programming with Qt 4 Published (KDE.News)
KDE.News has announced the publication of the book C++ GUI Programming with Qt 4 by Jasmin Blanchette and Mark Summerfield.Pragmatic Bookshelf releases "Interface-Oriented Design"
Pragmatic Bookshelf has published the book Interface-Oriented Design by Ken Pugh.The Internet: The Missing Manual--O'Reilly's latest release
O'Reilly has published the book The Internet: The Missing Manual by J.D. Biersdorfer and David Pogue.Python in a Nutshell, Second Edition - O'Reilly's Latest Release
O'Reilly has published the book Python in a Nutshell, Second Edition by Alex Martelli.SUSE Linux - O'Reilly's Latest Release
O'Reilly has published the book SUSE Linux by Chris Brown.
Calls for Presentations
Eighth Real-Time Linux Workshop, 2nd CFP
The second Call for Papers has gone out for the Eighth Real-Time Linux Workshop. The event will take place on October 12-15, 2006 in Lanzhou, Gansu, China. Abstracts are due by August 28.O'Reilly ETel 2007: Call for Participation Is Open
A Call for Participation has gone out for the O'Reilly ETel 2007 Emerging Telephony Conference. The event will be held in San Francisco, CA on February 27 - March 1, 2007. Proposals are due by September 26.Leipzig Python Workshop - Deadline for Abstracts Extended
The Leipzig Python Workshop deadline for abstracts has been extended until July 31. The workshop takes place in Leipzig, Germany on September 8, 2006.
Upcoming Events
Akademy 2007 Call for Location and Organisation (KDE.News)
A Call for Location and Organisation has gone out for Akademy 2007. "While preparations for Akademy 2006 are in full swing, next year's annual meeting of the KDE community, Akademy 2007, is sending out a Call for Location and Organisation. Akademy is made possible mainly because of financial contributions by corporations. These corporations prepare their buget for 2007 in autumn of 2006, in order to be able to secure funding for Akademy 2007 we need to start organising Akademy 2007 early to be able to apply for sponsorship soon."
OpenDocument Day at Akademy (KDE.News)
KDE.News has announced the OpenDocument Day at the Akademy conference. "This year at Akademy, Tuesday 26th September will be OpenDocument Day. The OpenDocument format (ODF) is a Free document file format for saving and exchanging office documents. KOffice was the first office suite to support OpenDocument and other programs have been following suit. OpenDocument Day at Akademy offers software developers interested in ODF to exchange ideas, build relations and collaborate on all things ODF in an informal setting."
CMP Technology announces Boston Embedded Systems Conference
CMP Technology has announced the next Embedded Systems Conference. The event takes place in Boston, MA at the Hynes Convention Center on September 25-28, 2006.Represent KDE at Linuxtagen in Essen (KDE.News)
KDE.News has posted a call for volunteers for the Essener Linuxtage. "On September the 9th and 10th (Saturday and Sunday) the Essener Linuxtage will take place in the University of Essen in Germany. KDE will have a stall there, but needs more representatives. If you are interested in helping us man a stall or giving a talk, then please contact us."
Healthcare IT and Open Source to be Spotlighted at LinuxWorld SF
OSDL has announced a Healthcare Day, to be held at the LinuxWorld Conference & Expo in San Francisco, CA on August 15. "The event is in response to an expected increase in healthcare IT spending in the near term and the growing role of open source software in the healthcare industry."
OpenOffice.org Annual Conference Program Published
The conference program for the annual OpenOffice.org Conference has been published. The event takes place in Lyons, France from September 11-13, 2006. "Conference highlights include keynote speakers from Novell and Google, and a panel discussion with representatives from Sun Microsystems, IBM, and OpenOffice.org. Over the three days, the conference streams cover topics of interest to developers and users, newcomers and veterans alike. There will be a particular focus on this year on OpenOffice.org and Open Document Format (ODF), following ODF's ratification as the international standard for office documents (ISO/IEC 26300)"
Ireland PyPy sprint
The Ireland PyPy sprint has been announced. "The next PyPy sprint will happen in the nice city of Limerick in Ireland from 21st till 27th August. The main focus of the sprint will be on JIT compiler works, various optimization works, porting extension modules, infrastructure works like a build tool for PyPy, or extended (distributed) testing."
Events: July 27 - September 21, 2006
| Date | Event | Location |
|---|---|---|
| July 27 - 28, 2006 | O'Reilly Open Source Convention(OSCON 2006) | Portland, Oregon |
| July 29 - August 3, 2006 | Black Hat USA 2006 Briefings and Training | (Caesars Palace)Las Vegas, NV |
| July 30 - August 3, 2006 | SigGraph 2006 | (Boston Convention and Exposition Center)Boston, MA |
| August 4 - 6, 2006 | DEF CON 14 | (Riviera Hotel)Las Vegas, NV |
| August 4 - 6, 2006 | Wikimania | (Harvard Law School)Cambridge, MA |
| August 4 - 6, 2006 | Vancouver Python Workshop | Vancouver, BC, Canada |
| August 8 - 10, 2006 | Flash Memory Summit | (Wyndham Hotel)San Jose, CA |
| August 14 - 17, 2006 | LinuxWorld San Francisco 2006 | (Moscone Center)San Francisco, CA |
| August 14 - 17, 2006 | ApacheCon Asia | (Trans Asia Hotel)Colombo, Sri Lanka |
| August 17 - 18, 2006 | Python for Scientific Computing(SciPy2006) | (Caltech)Pasadena, CA |
| August 18 - 19, 2006 | The Ubucon Conference | (Google headquarters)Mountain View, CA |
| August 21 - 27, 2006 | Ireland PyPy sprint | (University of Limerick)Limerick, Ireland |
| August 28 - 31, 2006 | Bellua Cyber Security Asia 2006 | (Jakarta Convention Center)Jakarta, Indonesia |
| September 8, 2006 | Leipzig Python Workshop | Leipzig, Germany |
| September 9 - 10, 2006 | Linuxtage in Essen | (University of Essen)Essen, Germany |
| September 11 - 13, 2006 | OpenOffice.org Conference(OOoConf 2006) | Lyon, France |
| September 12 - 15, 2006 | php|works/db|works 2006 | Toronto, Canada |
| September 13 - 15, 2006 | 2006 WebGUI Users Conference | (The Vegas Club Hotel and Casino)Las Vegas, NV |
| September 14, 2006 | NLUUG najaarsconferentie 2006 | (De Reehorst)Gelderland, The Netherlands |
| September 14 - 16, 2006 | Wizards of OS 4 - Information Freedom Rules | Berlin, Germany |
| September 18 - 21, 2006 | 2006 European Open Source Convention(EuroOSCON) | Brussels, Belgium |
| September 18 - 21, 2006 | New Security Paradigms Workshop(NSPW) | Schloss Dagstuhl, Germany |
Miscellaneous
Linux Quilt
Alan Robertson has a picture of his Linux quilt. What is a Linux quilt? "A Linux Quilt is a T-shirt quilt made from Linux T-shirts, of course..."
Page editor: Forrest Cook
