LWN.net Logo

Advertisement

Advanced thin client solution for Linux, based on Open Source. Mix Windows and Linux applications on the same desktop.

Advertise here

Development

Google Summer of Code: Mozilla Projects

August 20, 2007

This article was contributed by Nathan Sanders

This is the fifth in LWN's series of Google Summer of Code (GSoC) 2007 articles. The first four articles covered the program launch, Ubuntu's projects, the OpenMRS organization, and one student who is tackling Direct3D 10 support for Wine.

After breaking into the Google Summer of Code last year, Mozilla is back again as a major mentoring organization. They were delegated nine projects last year and are hosting ten this year, the sixteenth most of the 137 participating organizations in the GSoC 2007. Moreover, due to the mainstream popularity of Firefox and Thunderbird, the code that Mozilla's students are developing this summer will likely be among the most visible of any organization's. This summer's code is made all the more interesting by the concurrent ramp up in development prompted by the impending release of Firefox 3. Read on to learn about four of this prominent mentoring organization's most interesting projects and hear from both the students and the mentors as they rush to complete their projects by Google's final code deadline on August 20th.

Nick Kreeger's "Enable Roaming Support in Thunderbird" (mentored by David Bienvenu)

Student Nick Kreeger has a great idea for anyone that reads their email with Thunderbird, Seamonkey, or his own Mac OSX mail client Correo from multiple computers at home, work, and anywhere else. Kreeger is integrating functionality into the Mail/News framework component that will allow all Mozilla-based email clients to synchronize preferences and address books through IMAP and POP accounts, though the feature must be integrated into the interface of each application. Kreeger has already coded the core roaming service for Mail/News with full support for IMAP (POP support is "coming along smoothly"). He will begin developing a Thunderbird interface to the service before the end of the GSoC, but he notes that it may wind up in an extension.

The synchronization is performed by passing email messages through the user's mail account. The message will either contain a list of the changes a user has made to his preferences and address book or, after a set number of those "delta messages," a full copy of the data for good measure. In an IMAP setup, these messages will be sequestered from users in hidden-unsubscribed folders, while for POP the mail client will simply hide the messages in the inbox. The core roaming service sends and retrieves these updates from the server and notifies the interface when new data is available. Kreeger notes, "We want to expand this synchronization to include saved searches, RSS feeds, mail filters, .newsrc files, tag definitions, views, and more." He also intends to deliver full documentation on his code, but perhaps not until after the GSoC deadline.

A simple security precaution should keep at bay the potential security risk presented by accepting emails as application configurations. He explains, "We are planning to implement a PIN system for signing update messages in a similar fashion to how you can sign a messages with a certificate in Thunderbird." Project updates can be found on Kreeger's blog. The student recently graduated with a a Bachelors Degree in Information and Computer Science (Software Engineering Emphasis) from Park University near Kansas City, MO. Mentor David Bienvenu, who Kreeger credits with developing the concept behind the project, is a Mozilla module owner for the Thunderbird project and the Mail/News component.

Kunal Jain's "Places: Indexing Visited Pages" (mentored by Dietrich Ayala)

Student Kunal Jain is vying to resolve one of Firefox's longstanding feature requests, full-text search for visited pages. While Firefox derivative Flock has beat him to the punch by using CLucene for full text search, Jain is seeking a lighter-weight solution that will integrate seamlessly with the SQLite database which is already being used in Firefox 3's Places bookmarking and history system. He settled on the FTS2 SQLite module and has developed a detailed strategy for its implementation.

The full text search feature will hook into the Places query system via the existing nsNavHistoryQuery class, which allows for searches constrained by date and time. The nsNavFullTextIndex class will be responsible for calling FTS2 to rifle through visited pages for search terms, and will index them when called by nsNavFullTextIndexHelper upon page request events. One last class, nsNavFullTextTokenizer, is a wrapper for FTS 2's tokenizer that will prepare web pages for indexing by recognizing important terms and stripping HTML tags. Jain's design underwent substantial renovation during the GSoC before reaching its final form. Mentor Dietrich Ayala writes, "We had to re-orient the design as the understanding of SQLite's internals increased. We had terrific input from a hacker on SQLite's full-text-indexing module, which was quite helpful."

Unfortunately, not everything has gone as hoped for the project. As of August 8th, the design had been reworked and finalized, but no code had been written due to time-restricting duties at the student's job. Jain insists that he would like to have a prototype ready by the end of the GSoC, but Ayala is not confident that it will be ready for inclusion in Firefox 3 when the code freeze begins on September fifth. Nonetheless, both mentor and student are pleased to present to the community with a strong foundation from which this valuable and widely-requested feature can be implemented correctly, perhaps for Firefox 4. Ayala explains, "This has been on Mozilla's radar for a long time, and it's great that Kunal has been able to lay the foundation for making this happen."

Jain stresses that he will continue contributing to Mozilla past the impending GSoC deadline. Project updates may be found at his project's page on the Mozilla wiki. Kunal Jain recently graduated with a Bachelor of Technology, Information Technology degree from Sri Venkateswara College of Engineering in Chennai, India. Dietrich Ayala has been a developer with Firefox since February of 2006 and has been involved with the session restore feature and, pertinently, Places.

Benjamin Karel "JPEG2000 Support for Firefox" (mentored by Stuart Parmenter)

JPEG2000, the revamped JPEG format with "state-of-the-art compression techniques based on wavelet technology," was introduced about seven years ago. While the merits of JPEG2000 for various applications are debatable, its arguably higher image quality at high compression rates would seem to make it a good fit for the web. While compression and decompression are costlier with JPEG2000, the price of bandwidth versus processor time may justify the newer format for everyday web applications. Unfortunately, JPEG2000 support among browsers remains a rarity. Computer Imaging developer Mike Chaney argued two years ago on the reputable Steve's Digicams that "software manufacturers... are waiting for camera manufacturers to start supporting JPEG2000 as a native format in cameras and other devices. In turn, the camera manufacturers are waiting for global acceptance of the format in tools like web browsers, image management tools, photo editors, and other software." The situation today seems identical to that at the time of his writing and, indeed, to the climate surrounding the release of JPEG2000 seven years ago - just look at the Mozilla bug report (assigned to mentor Stuart Parmenter) where, year after year, users encourage Firefox to "stand out from the crowd" with JPEG2000 support.

This summer, student Benjamin Karel has done his part to spur mainstream JPEG2000 support. He has developed an extension for rendering JPEG 2000 which is compatible with both Firefox 2 and 3 (the codebase for them is the same, though he notes that each version requires a separate extension). His extension implements the free software JasPer decoder and can correctly render all nine JPEG2000 conformance test files, though Karel raises issue with JasPer's documentation and some aspects of its compatibility with particular caveats of the JPEG2000 specification. Despite various time-consuming personal obligations and wisdom tooth surgery, his project has been a success.

Nonetheless, roadblocks remain to the mainstream adoption of JPEG2000, even among the distinct subset of web users which Firefox represents. Both Karel and Parmenter agree that it would be inappropriate to integrate the feature with the Firefox trunk where it would see more widespread use than as an extension. Karel's code would add about 150KB to the browser's famously stingy download size and contribute that much more to Mozilla's support obligations. Karel notes that his code would be more likely to be accepted if the state of JPEG2000 support was better in graphics editing tools, but he admits, "It's a chicken-and-egg problem, yes, but it's not Mozilla's problem. Their job is to spend their limited resources as efficiently as possible." Parmenter says, "Once the extension gets published we can get a lot more eyes on it and get some of that additional testing we would want before shipping it with our main product."

Karel would like to develop an image-decoder finding service for Firefox that would recommend extensions like his own when users come up against an unsupported image format. Parmenter adds, "I would love to see an extension for things such as HD Photo and TIFF." It seems likely that Mozilla will elect to use a model like this for supporting burgeoning image formats in their sheltered flagship product. Karel's blog carries updates on his project. Karel is an undergraduate Computer Science student at the University of Delaware, while Parmenter is a Mozilla veteran since 1998, heavily involved in nearly every aspect of their products' graphics technology.

Edward Lee's "Link Fingerprints" (mentored by Gervase Markham)

Over two years ago, now, mentor Gervase Markham posted an ingenious idea to his blog. Even the best of us, he realized, are often too lazy to compare the checksums that are posted alongside Linux ISOs and other content online. Others may not even be aware of the process. The consequence is corrupted downloads and an increased risk for trojaned files being exchanged over the Internet. His solution was to include the checksum as metadata in the URL of the file itself so that browser download managers could automatically verify files. The implementation would not affect older browsers and those which choose not to support it and would appear transparent to users. Having been involved with the Firefox community for a few years as a bug sweeper, student Edward Lee jumped on the old idea this summer in order to give himself a crash course on the browser's codebase.

Lee developed the idea into a draft specification for the Internet Engineering Task Force. His submitted design states that the checksum would be included as a fragment identifier, meaning that it would be information appended to a URL specifically for the user agent (web browser or download manager). URLs with link fingerprints would look like this: http://mirror.com/file#hash(sha256:abc123). While any hashing algorithm could be supported in this fashion, Lee chose to encourage initial standardization around sha256. A file's hash would be calculated incrementally while downloading so that it could be compared immediately once transferred. In the uncommon event that the file fails to verify with the checksum, the user would be notified and advised to alert the content provider.

By the mid-term evaluation deadline on July 9th, Lee had an implementation of the system working and tested. He had integrated his code with Necko, Mozilla's low-lying networking library whose features automatically filter up to Firefox, Thunderbird, and other products built on the Mozilla Platform. Soon afterward, Lee writes, things came to a halt: "The decision to not implement Link Fingerprints in Necko came from Brendan Eich (Mozilla CTO) and Christian Biesinger (Necko module owner) who felt that implementing this non-standardized feature in a way that coupled itself closely to the networking code would potentially hurt everything else built on top of Necko in the long run." After some fidgeting with different implementations, the project was more or less abandoned. Meanwhile, Lee notes critical reception from the IETF community: "Major complaints include unnecessarily overloading the URI with additional metadata in a way that would make it difficult for new uses of the fragment identifier for other MIME types, as well as using the fragment identifier for a purpose that it wasn't intended for." While things seem bleak for link fingerprinting, Markham does indicate that there is some interest among download manager developers and there remains a slight possibility that the feature will eventually appear in the Firefox 3 download manager. Updates may be found on Mozilla's Bugzilla entry for Link Fingerprints.

Lee has been able to expend his newfound familiarity with the Firefox codebase into other development areas. He has begun working on features for the Firefox 3 download manager and the new JavaScript engine ActionMonkey. He reports favorably of his experience with the project: "For those interested in hacking on Firefox, it turns out it's not too difficult to do so; just hop on IRC and ask around and people are bound to help if one asks nicely and remains patient." Lee will begin pursuing a Ph.D. in Computer Architecture/Compilers this Fall at the University of Illinois at Urbana Champaign. Markham has been, in his own words, a "Loose Cannon" at Mozilla since January 2000, principally involved with project governance.

Comments (14 posted)

System Applications

Backup Software

Areca Backup v5.3.1 is available (SourceForge)

Version 5.3.1 of Areca Backup has been announced. "Areca Backup is a file backup tool written in java. It supports data compression & encryption, incremental backup, file history explorer and many other features. Areca Backup also includes a transaction mechanism which guarantees your backups' integrity".

Comments (none posted)

Database Software

phpMyAdmin 2.11.0 is released (SourceForge)

Version 2.11.0 of phpMyAdmin, a web-based MySQL administration tool, has been announced. "Welcome to phpMyAdmin 2.11, which will probably be the last series supporting PHP 4. This version supports creating VIEWs from query results and can manage triggers, procedures and functions. It also supports MySQL 5.0.37 query profiling and has an improved interface for servers hosting thousands of databases and tables."

Comments (none posted)

PostgreSQL Weekly News

The August 19, 2007 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Filesystem Utilities

announcing Allmydata-Tahoe v0.5

Version 0.5 of Allmydata-Tahoe, a secure, decentralized storage grid, is out with several new capabilities. "With Tahoe, you can store your files in a distributed way across a set of computers, such that if some of the computers fail or become unavailable, you can still retrieve your data from the remaining computers. You can also securely share your files with other users. This release is targeted at hackers and users who are willing to use a text-oriented web user interface, or a command-line user interface."

Full Story (comments: 2)

TestDisk version 6.8 announced

Stable version 6.8 of TestDisk has been announced. "TestDisk is a tool to check and undelete partitions. It works with the following partitions: FAT12, FAT16, FAT32, Linux (EXT2/EXT3/HFS/JFS/RFS/XFS), LInux Raid, Linux swap, NTFS (Windows), BeFS (BeOS), UFS (BSD), and Netware NSS."

Comments (none posted)

Interoperability

Samba 3.0.25c available for download

Version 3.0.25c of Samba has been announced. "This is the latest 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. Major bug fixes included in Samba 3.0.25c are: File sharing with Widows 9x clients. Winbind running out of file descriptors due to stalled child processes. MS-DFS interoperability issues."

Full Story (comments: none)

Web Site Development

Gallery 1.5.7 released (SourceForge)

Version 1.5.7 of Gallery has been announced. "Gallery is a slick Web-based photo album written using PHP. It is easy to install, includes a config wizard, and provides users with the ability to create and maintain their own albums in the album collection via an intuitive Web interface. Photo management includes automatic thumbnail creation, image resizing, rotation, ordering, captioning and more. Albums can have read, write, and caption permissions per individual authenticated user for an additional level of privacy."

Comments (none posted)

Plone 3.0 released

Version 3.0 of Plone - a Zope-based content management system - has been released. New features include much improved version management, tighter security, Ajax-based editing, and much more. See the community announcement, the Plone 3.0 feature list, or the press release for details.

Comments (2 posted)

Django Roundup

The August 19, 2007 edition of the Django Roundup covers the latest news from the Django web platform.

Comments (none posted)

Miscellaneous

Supervisor 3.0a1 released

Version 3.0a1 of Supervisor, a Python-based UNIX process controller, has been announced. "v3.0a1 is a major feature release version. Most of the features were commissioned by Maintainable Software . As well as contributing development funding, members of Maintainable have contributed a good deal of code to the supervisor codebase." (Thanks to Chris McDonough).

Comments (none posted)

Desktop Applications

Audio Applications

TkEca 4.2.0 released

Version 4.2.0 of TkEca, a GUI interface to the ecasound audio utility, is out with a long list of new features.

Full Story (comments: none)

BitTorrent Applications

Azureus 3.0.2.0 released (SourceForge)

Version 3.0.2.0 of Azureus, a cross-platform bittorrent client, has been announced. "Azureus 3.0.2.0 brings the version numbering back into line and should reduce confusion over which 2.x version maps to which 3.x version. Existing 2.x users will get the classic UI, while new and existing 3.x users will get the Vuze client UI, with the option to switch back to the 2.x UI if you choose."

Comments (none posted)

Business Applications

JasperServer 2.0.1 released (SourceForge)

Version 2.0.1 of JasperServer is available with some new capabilities and bug fixes. "JasperServer is a business intelligence platform based on JasperReports. It is a Web and Web services based application for reporting, data analysis (OLAP UI and server) and data integration."

Comments (none posted)

OrangeHRM 2.2.0.2 released (SourceForge)

Version 2.2.0.2 of OrangeHRM has been announced. "The new version of OrangeHRM – Open Source Human Resource Management has just been released. The OrangeHRM 2.2.0.2 contains the improvements of upgrade software and eliminates the bugs that were noticed while trying to update OrangeHRM to the latest stable 2.2 release. The version also contains the bug fixes for the bugs reported in PIM module as well as the bugs, related to using the application applying different language pack."

Comments (none posted)

What's the Matter with JMatter? (O'Reilly)

Eitan Suez introduces JMatter on O'Reilly. "JMatter proposes that you, the developer of a small business application, concern yourself primarily with the business logic or the domain in question, for example, say we're developing a solution for a school, perhaps to administer or manage a curriculum. Alternatively, perhaps we're trying to write a system to better manage parts at an automotive shop, or perhaps we're dealing with real estate properties for sale. You get the picture. JMatter further proposes that you consider most software development tasks that are not directly related to the business domain (such as persistence, writing the user interface, authentication, deployment, and more) as plumbing: it's someone else's job. In fact it's JMatter's job."

Comments (none posted)

Desktop Environments

GARNOME 2.19.90 announced

Version 2.19.90 of GARNOME, the bleeding-edge GNOME distribution, is out. "This release includes all of GNOME 2.19.90 plus a bunch of updates that were released after the GNOME freeze date."

Full Story (comments: none)

GNOME 2.19.90 released

Version 2.19.90 of GNOME, also called GNOME 2.20.0 Beta 1, is out. "This is our seventh development release on our road towards GNOME 2.20.0, which will be released in September 2007. New features are still arriving, so your mission is simple : Go download it. Go compile it. Go test it. And go hack on it, document it, translate it, fix it."

Full Story (comments: none)

GNOME Software Announcements

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

Comments (none posted)

KDE Commit-Digest (KDE.News)

The August 19, 2007 edition of the KDE Commit-Digest has been announced. The content summary says: "The Summer of Code for 2007 nears its end. Implementation of more features in the Step physics simulation package. More graphical game themes in KMahjongg, KWin4 KShisen, KGoldRunner and KJumpingCube. The start of a new game, KDiplomacy. More development in the Blitz graphics library. Lyrics Plasma applet and other interface work for Amarok 2. The start of the implementation of panels, and a clipboard engine in Plasma. More features in the ODBC Data Sources KControl module. Animation support in the Raptor menu..."

Comments (none posted)

Quickies: Amarok 1.4.7, MEPIS KDE 4, Desktop Survey, Lugradio Talk (KDE.News)

KDE.News has published a new Quickies article with the following topics: "Amarok 1.4.7 was released with improved collection backend, new streams, altered icon and bugfixes. The annual Desktoplinux.org Survey is under way. MEPIS released a KDE 4 Beta 1 live DVD using packages from Kubuntu. The videos from Lugradio Live are up including Ben Lambs' Conquering the Desktop with KDE 4. Finally, following the 10th anniversary of the free desktop last year, congratulations to another project which has gained double figures in age, but whatever did happen to those Scheme applets?"

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

XFree86 Release 4.7.0

Release 4.7.0 of XFree86 has been announced. Changes include security fixes, video driver enhancements, XKB updates, X Server and Extension updates, Library, Client and Utility updates and more. See the release notes for details.

Comments (1 posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Encryption Software

GnuPG 2.0.6 released

Version 2.0.6 GnuPG has been announced. "This is maintenance release with a few minor enhancements. The GNU Privacy Guard (GnuPG) is GNU's tool for secure communication and data storage. It can be used to encrypt data, create digital signatures, help authenticating using Secure Shell and to provide a framework for public key cryptography."

Full Story (comments: none)

Games

KoLmafia version 11.4 released (SourceForge)

Version 11.4 of KoLmafia has been announced. "KoLmafia is a cross-platform desktop tool which interfaces with the online adventure game, Kingdom of Loathing. KoLmafia is written in Java (J2SE 1.4 compliant), with binary releases in JAR format."

Comments (none posted)

Robocode 1.4 released (SourceForge)

Version 1.4 of Robocode has been announced. "Robocode is a Java based programming game, where the goal is to develop robot battle tank to battle against competitor tanks. The moto of Robocode is: Build the best, destroy the rest! Robocode requires a Java SE 5.0 Runtime Environment (JRE) to run."

Comments (none posted)

Medical Applications

Mirth 1.6 released (LinuxMedNews)

LinuxMedNews has announced the release of Mirth 1.6, a health information system. "This is a significant upgrade which includes both critical bug fixes and new features. The functionality and stability of existing connectors has been improved to fully integrate with even more third-party systems. The user interface has also been enhanced to make channel development and maintenance even easier. Additionally, this release includes NCPDP support, real-time connection monitoring and plug-in functionality."

Comments (none posted)

Multimedia

MediaInfo 0.7.5.2 released (SourceForge)

Version 0.7.5.2 of MediaInfo has been announced. "MediaInfo supplies technical and tag information about video or audio files (MKV/AVI/MOV/MPEG1, 2, 4/M4A/M4V/MP3/AAC/RM/...) There are several versions: Graphical interface, Command line, or DLL for third-party software develo[p]ers (like emule). GUI is multi-language. In this release: Correction of crashes in the PPC version, better Linux handling, some bugs correction."

Comments (none posted)

Music Applications

horgand 1.10 released

Version 1.10 of horgand, an organ synthesizer, is out. "New features including percussion drawbars, new DSP chorus effect and delay line buffers that coexist with rotary effect, restore program and visual settings each session, JACK support improved reducing CPU usage and new presets."

Full Story (comments: none)

midish 0.3.0 released

Version 0.3.0 of midish, a shell-like MIDI sequencer/filter, is out. "Changes include: Support for 14bit controller and NRPN/RPN events has been added. Now the complete MIDI state can be restored at any song position. Two tracks can be merged resolving all conflicts. New editing functions always keep controllers/bender in a consistent state. Improved documentation, usability and code quality."

Full Story (comments: none)

Miscellaneous

Magstriper 0.2 released (SourceForge)

Initial release version 0.2 of Magstripper is available. "Magstripper is a magnetic card reader and decoder that takes raw waveform information from a magnetic audio head and processes it via a mic input. It also includes a multi-user access control system with the ability to control a magnetic strike."

Comments (none posted)

PocketSphinx 0.4, SphinxBase 0.3 released (SourceForge)

Version 0.4 of PocketSphinx has been announced. "Sphinx is a speaker-independent large vocabulary continuous speech recognizer released under a BSD style license. It is also a collection of open source tools and resources that allows researchers and developers to build speech recognition systems. The latest release of PocketSphinx is now available. It requires SphinxBase 0.3, which has been released simultaneously." Version 0.7 of the associated Sphinx3 has also been announced.

Comments (none posted)

PyKeylogger 0.8.2 released (SourceForge)

Version 0.8.2 of PyKeylogger has been announced. "PyKeylogger is a simple keylogger written in python. It is primarily designed for personal backup purposes, rather than stealth keylogging (though it can do that, too). It does not raise any trust issues, since it is a short python script that you can easily examine. This is a bugfix release."

Comments (none posted)

Languages and Tools

JSP

Advanced JavaScript II (O'ReillyNet)

O'Reilly has published part two in a series on advanced JavaScript. "Continuing on from the first part of this series, Howard Feldman dives deeper into all the ways you can morph your web pages with a little JavaScript magic. This month he shows us how to swap photos, do tabbed panes, expand and contract tree lists, and do drop-and-drag item ordering."

Comments (1 posted)

Python

Python-URL! - weekly Python news and links

The August 20, 2007 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)

Tcl/Tk

Tcl-URL! - weekly Tcl news and links

The August 22, 2007 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

XML

XForms, XML Schema, and ROX (O'Reilly)

Kurt Cagle writes about XForms, XML Schema and ROX on O'Reilly's XML.com. ""If I have an XML schema, is there any way that I can work with that schema to build forms for populating instances of that schema?" Over the years, I've seen a number of variations on this same question, and generally for a pretty good reason. It takes a lot of work to create a schema in the first place, but when you're done, what you end up with, in general, is something that seems like it should be good to generate something; you have data type information, constraint information, enumerations, and enough other pieces that it would seem that making forms from them should be a cake walk. However, the process is generally fraught with more land mines than you might expect."

Comments (none posted)

Version Control

GIT 1.5.2.5 announced

Version 1.5.2.5 of GIT has been announced. "Although 1.5.3 has been in -rc cycle for quite some time, there was a rather nasty data corruption bug discovered, so here is primarily to push that fix out."

Full Story (comments: none)

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