May 28th marked the official commencement of student projects for the Google Summer of Code (GSoC) 2007. The Ubuntu Linux distribution is among the program's heavyweights, with twenty projects lined up for 2007. Its status as a significant organization is not surprising given the remarkable momentum of the distribution, which has undeniably become a juggernaut in the Free software community after only a few short years of development. The GSoC students and the Ubuntu developer-mentors they are paired with need only work for one season, but their contributions will have lasting value to the Ubuntu distribution, the applications it packages, and, in some cases, other distributions that share the code they write.
Ubuntu's GSoC projects are too numerous to explore comprehensively here. More information on all of them is available at the Ubuntu GSoC page. We contacted students and mentors from five of Ubuntu's GSoC projects and asked them to describe how their initial proposals have evolved to the projects they are now working on, what their work will do for Ubuntu users, and how other distributions may benefit.
Lois Desplat's "Revision Controlled Home Directories" (mentored by Martin Pitt)
Mentor Martin Pitt, a member of the exclusive Ubuntu Core Development Team, describes Desplat's project, dubbed "Mnemosyne," as "a backup system with extra features". Despite any temptations to go wild with the concept of revision control as is applied to code, Pitt is seeking to temper the project for the desktop and guarantee that it is minimally taxing on resources, well integrated, and extensible so that it may work with multiple backend and frontends. The results of the discussion between Pitt and Desplat was compiled into an adjusted Mnemosyne project plan and timeline.
The new plans are a bit more fleshed-out than what is listed on the GSoC project page. Canonical's own Bazaar revision control system will be adopted as the primary backend over SVN. SVN will still be implemented as an optional plugin as a demonstration of backend development. Commits of changed files could be done instantaneously, but to use resources realistically they will probably be done nightly or at some other time interval - as in a traditional backup scheme.
Revision control systems do have advantages over traditional backup schemes and the ubiquitous Recycling Bin system. The system will allow users to revert back to several versions of their files rather than one specific backup. Moreover, the system will facilitate other features typical of code repositories, even if their use for file handling isn't immediately obvious. Users will be able to merge text files, patch binaries, and keep the repository on a remote device. If the entire /home directory is revision controlled, as is planned, this will include both personal documents and configuration files. Mnemosyne will also be designed for easy extension to /etc or elsewhere.
Mnemosyne is being designed as a daemon for committing, a command-line program for configuration and management, frontends for Gnome/KDE, and heavy integration into GNOME's Nautilus file manager (with KDE's Konqueror as a goal). The file manager integration will allow users to selectively omit files from revisioning (so, for instance, a very large file is not revisioned nightly), force commits, or retrieve past versions. These tools will be written in Python, reverting to C++ if necessary to "interface with another application." The tools should all be distribution-agnostic and could very well appear outside of Ubuntu.
Desplat is a software engineering student at San Jose State University. He has experience participating in open source projects with the OGRE rendering engine. He has established a Launchpad site for Mnemosyne where users may keep track of his work. Weekly reports will also be published on the GSoC coordination list. Expect a testable version of the daemon by mid-June and beta .deb packages by early July.
Kévin Dunglas' "Privacy tool(s) for Ubuntu" (mentored by Jani Monoses)
Modeled in the style of Apple's FileVault, Dunglas is building Privacy Tool, a GUI to accomplish three principal privacy goals that he has identified for Ubuntu. His tool will facilitate /home directory encryption, swap partition encryption, and the creation of a "safe deposit box" to secure individual files. He notes that he will also build a temporary file cleanser for Firefox if time allows.
Dunglas has yet to identify the encryption backend he will use for his tool. TrueCrypt and cryptsetup have been named as possibilities. He plans to perform /home directory encryption in-place, via a backend that either encrypts in-place directly or by moving files into the new, encrypted directory. Dunglas has no plans to implement full-filesystem encryption with Privacy Tool, stating that the /home directory and swap are the most critical places for privatizing user data. The safe deposit box will be offered as a mechanism for encrypting additional files.
Privacy Tool will be a Gtk/Gnome application built with Glade and Python. Though Dunglas has no plans to port it beyond Ubuntu, he is conscious of possible ports to other distributions and is building Privacy Tool from widely available packages. He hopes to make an alpha release available towards the end of July.
Dunglas is a computer science student at the Institut Universitaire de Technologie de Lens in France. He has been involved with Ubuntu France for several years. Mentor Jani Monoses is a Romanian computer science engineer strongly involved with the Xubuntu derivative.
Krzysztof Lichota's "Automatic boot and application start file prefetching" (mentored by Tollef Fog Heen)
This project is the continuation of a longstanding effort among Linux distributions to shorten application startup time by techniques such as prefetching. According to Lichota, Windows XP implements a system whereby application and system startup are analyzed to identify files used in the process. Those files can then be "prefetched" into cached memory upon future startups to minimize overall disk access. This technique, in addition to reorganizing these files into sequential, easy-to-access order on the disc may dramatically decrease launch time.
Lichota has made the full text of his Prefetching project application available. In it, he gives detailed analysis of the various prefetching schemes which have already been implemented (including two former GSoC projects) and systematically lists their deficiencies. In short, Lichota hopes that his system will be less RAM-dependent than the Ubuntu Boot Readahead, will be more effective at analyzing application-launch file usage than Preload, and will require less user-interaction and improve on the disk defragmentation capabilities of Pagecache tools.
The key to Lichota's project will be to work at a lower level than previous systems. While the Preload method employs a daemon to periodically invoke prefetching routines, Lichota will hook prefetching into the fundamental Linux exec() function, probably by patching the kernel itself. He hopes to reuse code from these previous projects for prefetching functions where appropriate.
Lichota has already begun writing his tool for reorganizing pre-fetching files on the hard disk. Unfortunately, there are no plans to implement this tool for anything but ext3 filesystems. Lichota believes that his code will apply mostly to the kernel and that it would be fairly easy for other distributions to adopt his work. He hopes to have a working, though untested, version of the prefetching tool in mid-July and an untested version of the disk tool in August. Lichota will also implement an ext3 tool for metadata pre-caching if time permits.
Krzysztof Lichota is a PhD student at Warsaw University who has already earned a Masters degree from their computer science department. He has five years of experience working for the storage industry on cluster solutions. Lichota has been encouraging his own students to participate in the GSoC for two years now and is among several University of Warsaw computer science students who are participating in the 2007 GSoC . Mentor Tollef Fog Heen is a member of the Ubuntu Core Development Team.
Two important resources exist for those interested in Lichota's project. He has constructed a site to track progress on the Prefetching GSoC project and a general site which he would like to become a base for all future Linux prefetching development. Those interested in participating in development are encouraged to join the prefetch-devel mailinglist.
Petter Remen's "Device & Driver Manager for Ubuntu" (mentored by Kyle McMartin)
The inspiration for Remen's project comes from a device manager specification developed by Ubuntu kernel developer Ben Collins. His goal was to implement a GUI Hardware Abstraction Layer (HAL) device manager for GNOME that will allow users to modify driver configuration without touching plaintext configuration files or a command line. Collins warns that the existing GNOME hal-device-manager, which displays a hardware device tree taken from HAL, but does little for user-friendly configuration, will have to be forked and some kernel hacking may be necessary.
Remen clearly outlines his vision for the project's GUI. The tool will immediately present users with a list of hardware categorized by simple terminology, which can also be filtered by user defined criteria. For each listed device, the tool will display the currently enabled driver and allow the user to replace or reconfigure the driver. Furthermore, the tool will facilitate loading drivers from CDs or other user-specified locations and allow users to disable devices. Users will be able to save their configurations in "hardware profiles" to apply upon reboot or implement on another computer.
Remen indicates on his GSoC project page that extensibility will be an objective of his work. He lists X server and CUPS configuration, independent from HAL, as possible future extensions to his project. Although the existing hal-device-manager is cross-platform, Remen will be implementing features that will make his tool Linux-specific. If, indeed, kernel development is necessary for his project, it may be difficult for other distributions to incorporate his work.
Mentoring the project will be Kyle McMartin, employed by Canonical as an Ubuntu kernel hacker and a member of the core development team.
Tomé Vardasca's "Ubuntu bootloader manager" (mentored by Scott James Remnant)
Bootloader configuration functionality has been present in the administration tools of SUSE and Mandriva for several years, but is an element of GUI system configuration conspicuously absent in Ubuntu. Vardasca's project will integrate bootloader configuration into Ubuntu's Ubiquity operating system installer, and duplicate the functionality for a GNOME control center module. The tool is only being designed with the GNU GRUB bootloader in mind.
As outlined in the full Ubuntu bootloader manger specification, users will be able to edit the list of operating systems presented by the bootloader and their ordering, configure kernel options, set passwords for the console and operating systems, and theme the bootloader. The tool will keep a copy of the configuration in an XML file in case replacement is necessary, along with a backup to use in case of user input error.
Theming options will play a major role in Vardasca's tool. It will include an interface for installing GfxBoot, and an enhanced version of GRUB designed for aesthetics. Alternatively, the tool will enable theming vanilla GRUB with a splash screen and a custom color scheme. A theme editor will be provided for this purpose. The configuration tool will include a preview window with a screenshot of the theme.
Although the code integrated into the Ubiquity installer may be difficult to port, the GNOME control center module will be written in Python and may find its way into other distributions. Vardasca intends to provide an alpha version of the configuration tool at the end of May and complete the integration into Ubiquity and the GNOME control center by the end of July. Those interested in participating should visit the Ubuntu Bootloader Manager Launchpad project page.
Vardasca is a health informatics student at the Superior School of Technology and Management at the Leiria Polytechnic Institute. He became interested in Ubuntu after switching from Windows upon the release of Vista. He says that friends' requests prompted him to develop a bootloader manager: "I guessed I could do it in the Google Summer of Code and, surprisingly, I guessed well." Mentor Scott James Remnant is a member of the Ubuntu Core Development Team.
InteroperabilityThis is the second production release of the Samba 3.0.25 code base and is the version that servers should be run for for all current bug fixes."
Networking ToolsThe netfilter project proudly presents conntrack-tools-0.9.3 The userspace daemon conntrackd covers the specific aspects of stateful Linux firewalls to enable high availability solutions, and can be used as statistics collector of the firewall use as well. The daemon is highly configurable and easily extensible."
Package Managementrpm5.org; it claims to be "the home of the official RPM Package Manager (RPM) code base." This site should not be confused with rpm.org, which is the home of Red Hat's fork of RPM; rpm5 is the Jeff Johnson fork. A RPM5 roadmap has also been posted: "The main RPM development is already focused on the development of the forthcoming RPM 5.0. The primary goals of RPM 5.0 are the additional support for the XML based archiving format XAR, an integrated package dependency resolver, further improved portability and extended cross-platform support."
Printinghas been announced. "This CUPS filter sanitizes the PostScript jobs created by OpenOffice 2.x. It makes the PostScript jobs DSC compliant, thus further processing by the pstops filter works without problems."
Animation SoftwareSynfig irregular news for May 30 is out. For those who have not heard of Synfig before, it is "a powerful, industrial-strength vector-based 2D animation software package, designed from the ground-up for producing feature-film quality animation with fewer people and resources." It was a proprietary product initially, but is now available under the GPL.
Audio ApplicationsBasic keyboard navigation and loop inside a selection have been added." For fftscope: "This release is a major bugfix release and each user is encouraged to upgrade." Faust is a functional programming language for real-time signal processing and synthesis that targets high-performance audio processing applications and plugins. The Faust compiler translates Faust programs into optimized C++ code for a variety of audio platforms : Jack, Alsa, OSS, Ladspa, VST, MaxMSP, Q, PD, SuperCollider, etc." Well, it's been over 2 (3?) years since last release, but rtmix refuses to die ;-). Thanks solely to Robin Gareus and his heroic work in making rtmix gcc4 compliant, I am releasing rtmix version 0.76(b). Apart from compile error fixes (courtesy of Robin), there have been a few cosmetic tweaks, but most notably, the source is now released under a 100% GPL-compliant license." Speex, an open-source patent-free audio compression format designed for speech, is available. Changes include: "The RAM requirement for wideband has gone down drastically (i.e. more than 2x). A new resampler module has been added, providing arbitrary sampling rate conversion -- fast. The echo canceller has also been improved. A bug in 1.2beta1 that made the echo canceller unstable has been fixed. The echo canceller should now converge faster, be robust and tolerant of incorrect capture-playback synchronisation. The preprocessor has also been greatly improved. Not only should the quality be better, but it is now fully converted to fixed-point. At last, early TriMedia support (incomplete) has been merged."
Business ApplicationsKeyJnote is a cross-platform slide presentation application that aims to add style to presentations. "KeyJnote is a program that displays presentation slides. But unlike OpenOffice.org Impress or other similar applications, it does so with style. Smooth alpha-blended slide transitions are provided for the sake of eye candy, but in addition to this, KeyJnote offers some unique tools that are really useful for presentations."
Data Visualizationhas been announced. "MathGL library make wide spectrum of mathematical graphics (plots, surfaces, contours, isosurfaces and so on) in platform independent way. Graphics may be exported to EPS, PNG, JPEG or TIFF formats. Front-end for library is based on OpenGL and GLUT libraries. Also it is possible to draw plot in console regime directly to file (bitmap or PostScript) without using X-server. Output graphics is adopted to use with wxWidgets and FLTK libraries."
Desktop Environmentsroadmap for GNOME 2.20 and beyond. "The GNOME Roadmap is a big-picture view of functionality we expect GNOME to include in short-term and long-term future. The roadmap is based on feedback from current GNOME developers and other community members." has announced a new Bounty program for the Planner application. "Bounties for new features to be added to Planner are being offered by Intouch. Requested features are: 1) Ability to produce variance reports 2) Ability to filter projects by resource 3) Ability to link projects via a milestone 4) Automatic email to resources when a part of their schedule has been changed".
Desktop PublishingAlmost one year in the making, this release brings Scribus to a new plateau in professional print capabilities, innovative features and a completely re-written text layout engine." is out with feature enhancements and minor bug fixes. "WIKINDX is a free single or multi-user research environment storing searchable bibliographies, notes and citations and integrated with a WYSIWYG word processor for the authoring of publication-ready articles automatically formatted to chosen citation styles."
ElectronicsKicad, a printed circuit CAD application, is out with a bug fix for 3D shape display and improvements to the Gerber file viewer. XCircuit, an electronic schematic drawing tool, is out with bug fixes. See the changes document for details.
Financial ApplicationsSQL-Ledger, a web-based accounting system, is out. See the What's New document for change details.
Graphicsmentions a new fund raising effort for Krita, a painting and image editing application for KOffice. "Krita development is in a crucial phase, we are adding fun, useful and amazing stuff at a stunning rate. But there are things that no Krita developer can do, because we lack the proper hardware. Krita's renaissance started with a simple Wacom Graphire tablet, and it led to some great new possibilities. But to implement support for modern tablet features like tilt and stylus rotation we need to buy more advanced tablets and art pens, and to make that possible, we need your help!"
InteroperabilityWine Weekly Newsletter is online with coverage of the Wine project. Topics include: Novell's Patent Fun, ntoskrnl.exe, Gecko Package Update, Making Direct3D Threadsafe, Free Fonts, Keyboard Handling Changes and AppDB Vandalism.
Office Applicationsreviewed here last February) is out. There's a few enhancements, but the more important part of the announcement is the appeal for developers. "BasKet Note Pads has no developer anymore. Without new developers, I'm afraid the project will have to be stopped (and unavailable on KDE 4)." BasKet has some real fans; now is the time for those who would like to see this application make progress to jump in and help.
RSS Softwarehas been announced. "This version includes full smarty template integration, as well as options to embed the articles in another web page, or even to allow the output of the filter as an RSS feed."
Miscellaneoushas been announced. The project description states: "It aims to help in keeping you in the flow of maintaining, developing and releasing, automating whatever tasks can be automated. It allows you to parse DOAP files and submit releases, send release mails, create iCal files and RSS feeds, maintain version control ignore lists, check in based on the latest ChangeLog entry, and more." MultiTail, an enhanced version of the command line tail utility, has been announced. "Merge of last development version with last stable version. Some of the new features are: added support (in color schemes) for alternating colors and attributes can be merged for multiple matching lines, added case insensitive toggle and history to searchfields, colorscheme for motion, Argus, portsentry, mpstat, p0f and strace, added wordwrap-mode, various fixes and updates (man-page/on-line help), conversions and color schemes can use external scripts."
Languages and Tools
Haskellpart one in an O'Reilly article series on Haskell. "Let me start by being perfectly clear: if you are a professional programmer, then Haskell is in your future. In 1987, this statement would have been equally true about Smalltalk. Today, 20 years later, object-oriented programming, class hierarchies, model-view-controller patterns, and other ideas from Smalltalk are now commonplace, even though Smalltalk never saw widespread adoption. Haskell is in a similar situation today. It is an esoteric language, yet stable and reliable enough for serious work."
Rubyonline tutorials on the Ruby language and the Ruby on Rails web platform. (Thanks to Luke).
Cross CompilersSDCC, A C cross-compiler for Intel 8051, Maxim 80DS390, Zilog Z80 and Motorola 68HC08 processors, is out.
LibrariesBurstsort has been announced. "Burstsort is a library for sorting strings, and is currently the fastest algorithm for doing so, being much faster than Quicksort and Radixsort. It has applications to computational linguistics, genomics, and many other areas of science where sorting strings is required." has been announced. "kdtree is a simple, easy to use C library for working with kd-trees. Kd-trees are an extension of binary search trees to k-dimensional data. They facilitate very fast searching, and nearest-neighbor queries. This particular implementation is designed to be efficient and very easy to use. It is completely written in ANSI/ISO C, and thus completely cross-platform."
Miscellaneouslooks at semaphores. "Multithreaded applications are part and parcel of day-to-day commercial application. It would be difficult to imagine any full fledged application running commercially that is not multithreaded. Applications must use the multithreaded approach to improve on the performance of the application or systems. However, most beautiful things in life do not come without a price. Likewise, if the multithreaded feature needs to be used by the application, then it comes with a set of issues, such as deadlocks, race conditions, incorrect behavior of threads, etc. To overcome these issues, the OS provides a set of tools like Mutex, semaphores, signals and barriers that are handy in solving multithreaded multiprocessed issues. This article discusses one of these tool, semaphores, and provides some insight about them."
Page editor: Forrest Cook
Next page: Linux in the news>>
Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds