GNOME’s Summer of Code Participation
Google’s Summer of Code is over and so are the eleven projects that GNOME developers mentored. Julien Gilli and Akbar Pasha contacted the participants to find out what they reached, what it was like to take part in this summer-long event, and if it was fun to collaborate with the the GNOME community.
It has already accounted for one of this year’s major surprises, when Google announced that it would spend US$4500 for each of the four hundred students they would choose to work on open source projects.
Google worked with about forty open source organizations (among them, The Perl Foundation , KDE, Samba and others) to set up a list of available projects. Some were focused on implementing a particular new feature that would make the project shine even more, others were more research-oriented.
Then, students submitted applications to Google. By the middle of June, mentors and projects were assigned to the ones that were valued with the highest potential.
The Summer of Code is now over and it’s time for us to unveil the GNOME goodies that came out of the competition.
Of course GNOME fans and mentors had some great ideas for students to work on. The GNOME Foundation mentored eleven students. They all worked on new features and most of them have a working implementation of their initial plan. The projects’ topics range from music sharing integrated into the desktop to a Firefox extension that will help you to share tips for mastering Google searches.
In this article, you’ll also learn about streaming music to your GAIM buddies, encrypting folders in one click with nautilus or using your web cam and your head as a keyboard and mouse pair.
The first one, called gShrooms, was created by Raphael Slinckx. His initial plan was to allow people to stream music to and from their Gaim buddies in one click. But, “the project is a bit different from the submitted application proposal, especially concerning Rhythmbox integration which was not planned initially.”, says Raphael. As for now, “The application has reached a point where it works when the situation is perfect.”
gShrooms is not finished yet. Raphael “plans to move to a better streaming protocol when Gstreamer is ready, and improve aspects such as firewall/NAT bypassing.” For the moment, the feature will only work “if you have a PC directly connected to Internet or a UPNP capable router, and no firewall.”. One of the biggest problems he faced was “lacking, or even missing documentation”, but he has been “astonished by the GNOME community.”
Charles Schmidt applied to the Summer of Code with the idea to continue an existing project he started on October 2004. As he says, “It’s not just Rhythmbox being able to share playlists with iTunes, but also Rhythmbox sharing its music to other Rhythmbox clients on the network”.
At first Charles “had suggested doing this using a DAAP module for GNOME VFS so that you could hand GNOME VFS a URI like “daap://Lyndsey’s music” and it would return a directory full of music.” But soon enough, he “was convinced by others that the DAAP code should live inside Rhythmbox, not in a GnomeVFS module.” Indeed, he “imagined that one [benefit] would be able to browse DAAP hosts in Nautilus,” but over times, he wondered why a user would want to. Moreover, “several Rhythmbox developers suggested that core changes to Rhythmbox were not out of the question.” Finally, he points out that “the GNOME VFS API is not easy to grasp”.
So far, this move “has definitely paid off”, and he was able to “push out a patch last night that other people were able to get working”. Charles doesn’t want to stop here; he “definitely sees himself continuing to work with the Rhythmbox community to improve DAAP” and he’s “thinking to tackle equalizer support next”. Even if he says that “time management is a skill [he is] still lacking”, great things should be coming from him in the next weeks.
GNOME Core Projects
The core of the GNOME desktop has received a lot of attention too.
Every GNOME user has applets on his/her desktop. Mentored by Havoc Pennington, Travis Vachon worked on a easy way to setup and publish panel applets – the so called panel bundles. “Eliminating the need to build tools and package maintainers was one of the main goals behind this project”, says Travis.
Even if he had “originally thought of the extensions as written in either C or Python. The major problem [with C] is that this would make it necessary to have build tools installed”. Luckily, “Python is a whole lot more fun to write and allows a developer to really focus on the neat stuff”, says Travis.
At first, he “thought [he] would be creating a system to bundle up current panel applets for distribution.”. However “while many aspects of developing panel applets have carried over to the extension system, it is, indeed, a new system.”. Nevertheless, “converting a current Python-coded applet to an extension is pretty simple, and will actually simplify the code.”
Bundles can already be used without any modification to the GNOME desktop because they “are currently being implemented through a container applet”. However, proper integration into the panel is, according to him, “a decent distance away.”
Travis has been “particularly impressed by PyGTK, and all of the related GNOME Python bindings”. On the opposite, he says that “it would be nice to see [the panel] improved”. Indeed, “one original idea for the project was to be able to click on a link to a bundle on the web site and have it appear somewhere on the panel immediately.”. When he tried to accomplish this, “it turned out this wouldn’t be possible with the current implementation of the panel.”
From now on, “there’s a ton of work still to be done from improving the panel_extension Python module to integrating things into the panel and translating things from Python to C to make them faster.” In the meantime, Travis offers a tutorial about bundles.
Lorenzo Colitti, mentored by Owen Taylor, worked on improving the GNOME desktop’s startup time. The project’s focus has a bit shifted from the initial proposal, since Lorenzo’s mentor was more interested in “producing solid methodology and results than getting patches in”.
Lorenzo says that “Owen has been a great mentor”. They were able to meet in person. “He even put me up at his place, and we hacked together a couple of days !”, says Lorenzo. He learned that “performance monitoring is hard” and that “performance and flexibility can be conflicting goals.”
Using measurement tools such as bootchart and custom kernel modules, Lorenzo has been able find bottlenecks and modify the GNOME desktop so it starts almost 50% faster. However, he says that “some of these changes are hacks and it will take time to integrate them properly into the main code base”. However, the project is not done yet “because it’s so broad”, and Lorenzo “definitely hopes to continue hacking on it in the future.”
Mentored by Christian Kellner, Jon Manning hacked the GNOME VFS layer to bring it encrypted folder support out of the box. His original plan changed significantly, since “loopback-mounting an encrypted filesystem” included “mucking around a bit too much with permissions” and “there wasn’t any way to access the data over a network as easily as you could locally.” So they decided to encrypt the files individually with OpenSSL. This “new archive format means that we can get Nautilus to detect its type with more ease than we could if it was a filesystem”, says Jon.
He “was pretty impressed with both how thorough the GObject system [is] and how easy it was to get going”. He also found that “the interfaces Nautilus provides made developing [his] plugin nice and simple”.
One can see that although the UI changes might be quite small, the feature provided is exciting. “There’s a bunch of things we want to implement including integrating with with GNOME-VFS which will allow on-the-fly browsing and decryption, and make the archives appear as regular folders.,” says Jon. For sure, “there are good times ahead for this project!”
Sharing of Google Searches
People often get stuck into unsuccessful Google searches. Sanford is now able to offer a way to overcome this situation. Not only does his Search Party Firefox extension allows you to share search tips with people from all over the world, it also creates communities around similar interests. Type your search on the Google web site, click on the “Join Search Party” toolbar button, and you are connected to a chat room, being notified of other people’s successful attempts at searching similar information.
Client side, the project takes the form of a Firefox extension. As for the server, Sanford had “initially intended to write the Search Party Protocol directly over TCP, and have a Java server somewhere that took care of matching up users with the proper chat room.” However, he changed his plans when Seth Nickell “pointed out early on that this might make the extension unusable for those behind various firewalls”. He then chose XML-RPC, which uses the firewall-compliant HTTP protocol as a transport medium.
One of the main difficulties was to “teach the extension to speak XML-RPC”, because “Firefox’s included implementation is broken”. As a consequence, he hasn’t had “that much time to focus on the trickiest part of the project: deciding what exactly makes two search queries similar.”
He plans to “continue working on it for quite awhile” and thinks that “the server will go through a lot of performance tuning and other re-factoring” apart from “the work he would like to do on the query matching algorithms.”. He can’t wait “for people to download it from the wiki, try it out, and tell [him] what they think!”.
Finally Adam McCullough and his mentor Johnathan Blanford worked together to make GNOME more accessible.
The system, named “CamTrack”, has been divided in two components : the tracker and the input method. The tracker tries to recognize and match facial motions with events (maximizing a window for example). The input device is in charge of forwarding the events to the X Window system and GNOME.
Though his “original proposal was mainly concerned with the details and capabilities of the tracker itself”, Adam needed to create a simple and usable system. This lead to “both a reduction in complexity and a broadening in scope.”
In his opinion, “the attention paid to accessibility in GNOME is more noticeable than in any other environment”. He goes on saying that “it’s been surprisingly simple to add a completely new interface to the GUI”. Overall, he has been very impressed by GOK.
Adam likes to think that he’s “contributing to widening access” and “intends to keep developing [CamTrack] for some time”. He points out that “the system is usable,” but would like to make “a long list of improvements as well as a lot of tidying up needed and probably some bug squashing”.
Unfortunately, some students haven’t had the time to respond to our questions early enough for us to write about their project. Danilo Segan tried to find a way to provide live editing to the GNOME documentation, David Morrison worked on implementing GMail-style conversation view for Evolution, and Daniel Ramage hacked the first bits of the GNOME command line framework.
Overall, it seems that both students and mentors had a very good time hacking during this year’s Google Summer of Code. As Raphael says, “every hacker would enjoy a summer of code!” The GNOME project has successfully managed to gather brilliant students and mentors together to bring new features to the GNOME desktop.
For students, working with the GNOME community proved to be a pleasent experience: “Everyone has been very helpful, friendly, and enthusiastic,” says Travis. As Raphael puts it, “GNOME rocks!”