Accepted proposals for GNOME Summer of Code 2007

New geometry manager for GTK+

Student: Mathias Hasselmann
Mentor: Federico Mena-Quintero

The layout system of GTK+ shows its limitations when using labels with long text which shall wrap automatically in resizable layout, or when using ellipsized labels together with expanding widgets in boxes. Havoc Pennington describes this problems in detail on his blog[1]. There also are some quite popular tickets in Bugzilla documenting those issues[2]. Solutions for this problems include width-for-height, height-for-width and natural size management. The algorithms are documented, but for whatever reason nobody has taken the challenge yet to implement them in GTK+.

[1] http://log.ometer.com/2006-10.html#14
[2] gnomebug:104188, gnomebug:101968

Further information can be found in the GNOME wiki: MathiasHasselmann/NewLayoutManager

Evolution Data Server Backend for google calendar

Student: Ebby Wiselyn
Mentor: Harish Krishnaswamy

With Google Calendar, you can create and add your schedules your's and your family and friend's , add events mentioned in Gmail conversations , or in other application or any other events. You decide who can see your calendar and which details they can view. You can create invitations, send reminders and keep track of RSVPs right inside Google Calendar. Setting up automatic event reminders, including mobile phone notifications, and instantly bring up anything on your calendar with the built-in search tool.

Enabling connectivity to the google calendar from evolution . The Aim is to create a google calendar backend that allows to read and write through the GData Interface . The Gdata provides a protocol for reading and writing data on the web. GData uses standard XML-based syndication formats either of Atom or RSS. It also has a feed-publishing system that consists of the Atom publishing protocol plus some extensions (using Atom's standard extension model) for handling queries.

Client applications can view and update calendar events in the form of Google data API ('GData') feeds.Evolution can use the Google Calendar data API to create new events, edit or delete existing events, and query for events that match particular criteria.

GStreamer plugins and extensions for multimedia content creation applications

Student: Sebastian Dröge
Mentor: Stefan Kost

Currently the Gnome desktop is missing some great multimedia content creation applications. Jokosher is already fairly good but apart from that everything else is just in the beginnings. This project will be mostly audio-oriented and would help Buzztard, Jokosher, Marlin and to some degree Pitivi to become better by providing a foundation in GStreamer. Some starting parts are already there but for example many audio effect plugins are missing and some GStreamer parts, although being there are half-implemented or suboptimal.

The goal of this project would be to improve the current situation by providing some more audio effect plugins, finishing some unimplemented GStreamer parts and adding some missing elements.

Brave New X11 World

Student: Pascal Schoenhardt
Mentor: Christian Kellner

With the changes to the X.org windowing system with version 7.3, a range of new possibilities is available for the Linux desktop platform in regards to input and display configuration. This Summer of Code project aims to take advantage of these changes to significantly enhance the GNOME Capplets for configuring input devices and displays. Upon the completion of this project, GNOME should be able to run entirely on hot-plugged input peripherals, with advanced options such as individual key mappings and settings on each device. GNOME users should also be able to easily detect all attached display devices, configure their resolutions, refresh rates, and relative positions, as well as store these settings in profiles, which can be changed at the press of a button.

For a formatted, PDF version of this application, please visit the following URL:

Extending the lockdown framework in GNOME and making it even more deployment friendly

Student: Sayamindu Dasgupta
Mentor: Federico Mena-Quintero

One of the major features required in any kind of desktop deployment is the support for lockdown, where users are barred from performing certain actions (like, for instance, printing files, or saving files to disk). GNOME already has lockdown support in a few areas (especially the panel and the epiphany web browser). However, the file manager (Nautilus) does not have any kind of lockdown support at all, and good quality documentation and specifications for the lockdown features is also missing.

The proposed project will add lockdown features to Nautilus and to the GTK+ FileChooser (to ensure a consistent user experience, as well as complete implementation of relevant lockdown policies). The lockdown features would cover filesystem access and modification permissions. Moreover as a part of the project, I would implement a mechanism to define items which will be shown on users' desktops, such as links to common web sites, launchers for programs, or links to commonly-used files such as forms or reference material. I would also document how lockdown and preconfiguration work, which can be used as a reference for administrators and deployers. The last, but in no way the least item in the roadmap is a plan to create a spec for the proposed lockdown on Nautilus and the GTK+ filechooser (probably this should go to first :-)).

The project will involve modifying various GNOME modules (Nautilus/GTK/GNOME-VFS/GNOME-Panel/GNOME-Desktop/etc), written mostly in C. The relevant GUI tools (Sabayon/Pessulus), which are written in Python will also be extended as and when required.

Photobooth-like application for the GNOME-Desktop

Student: Daniel Siegel
Mentor: Raphael Slinckx

I will program an application like Apple's Photobooth, which should be an exciting plaything for every GNOME-user. Therefore, the program shouldn't only have the ability to take pictures and videos with the webcam, but also provide some nice graphical effects, to modify the outcome. This program will also show the already taken photos and videos. Further, an integration with gnome-about-me will be implemented to show, how GNOME-applications, which need a photo of the user, can get it from the webcam. I will also provide an integration in a GNOME-IM-program and integration with web-services like youtube and flickr.

The application will be implemented with C and GTK+, making it possible to include it native in the GNOME-desktop. The user interface will be created by using glade.

I won't program a photobooth clone, as this shouldn't be in the scope of SoC. But it should have the basic abilities, which also Apple's Photobooth has. You can watch the development by getting my darcs repo at:

See the proposal here:

Signal processing block for GStreamer

Student: Julian Blake Kongslie
Mentor: Erik Walthinsen

I propose to produce a set of processing blocks for the GStreamer framework that accomplish common signal processing tasks such as filtering, decimation, interpolation, modulation, and demodulation. This will allow the GStreamer framework to be used in audio and radio processing applications, and as a more flexible and more efficient replacement for the GNU Radio software stack.

Included in these processing blocks will be a sink and source pair to provide direct interaction with the Universal Software Radio Peripheral (USRP) from the GNU Radio project. This will allow easy prototyping and testing, as well as the creation of elegant hybrid hardware/software signal processing applications.

In addition, GStreamer with the addition of signal processing blocks will provide an easy and rapid prototyping and testing framework for software defined radios, without having to work directly in hardware description languages. This will increase the speed with which we can develop open hardware projects, and make the process more comprehensible and easier to teach to students.

PiTiVi, an Open Source Video Editor

Student: Brandon J Lewis
Mentor: Edward Hervey

PiTiVi is an open source, non-linear, non-destructive video editor that shows great promise. While it is currently barely usable, it has the potential to be transformed into a robust, powerful media authoring tool. I want to help 'kickstart' the project by implementing the minimum set of features needed to attract a community of users, and be considered a functional video editor.

PiTiVi is designed to be flexible enough to offer at least two UI views, called 'Timelines'. Currently these are 'Simple', aimed at novice users, and 'Advanced', offering more professional features. Most of the features proposed here would be implemented in the Simple Timeline, and would include: editing and trimming support, project file load/save support, and transitions. Optional goals would include a media capture interface, jog/shuttle support, and contributions to the Advanced Timeline.

Integrating Epiphany Bookmarks and Browsing History For GNOME-wide Access

Student: Imran Patel
Mentor: Xan López Saborido

Most GNOME users access and discover new information using a web browser. The broad goal of this project is to develop a framework for Epiphany that will enable GNOME users to quickly, easily and accurately recall this information. To that end, this project will focus on three specific goals:

  1. Develop a high-level design for unifying the storage, visualization and management of user bookmarks and browsing history.
  2. Implement a robust and efficient backend store for bookmarks+history objects on top of an indexing framework like Tracker
  3. Integrate the currently separate bookmark and history managers to create an intuitive User Interface (UI) for viewing, searching and managing bookmarks+history.

If time permits, an optional goal is to provide a simple high-level wrapper API over Tracker's DBUS API (libtracker) for accessing and querying bookmarks+history from Epiphany extensions and other GNOME applications.

Evolution

Student: Tobias Mueller
Mentor: Sven Herzberg

I'd like to apply for the Google Summer of Code to improve the Evolution mail client. In it's current shape it is able to sort collapsed threads with the date of the yougest mail in the thread (and not the date of the thread initiator), but evolution is lacking several things to really benefit from this feature.

Creating a new documentation editor for Project Mallard

Student: Buddhika Laknath Semage
Mentor: Donald Scorgie

This project will implement a new document editor for the Project Mallard using Python and XML.

This new document editor is called Foie Gras and will be an asset for doc writers. Foie Gras will effectively hide the XML tags and will give the user the ability to focus more on the documentation task rather than having to divide their attention on both XML and documentation.

Simple user-to-user file transfer without configuration in a LAN

Student: Marco Barisione
Mentor: Sjoerd Simons

There are many solutions to share one or more files, from setting up a Samba share, to a personal directory in a HTTP or FTP server, they have one big common flaw: they do not “just work”. As a consequence people often use services relying on an external server (such as email and chat), or removable devices. In some cases it is not even reasonable to do server-based communication, as is the case of meshed networks.

Moreover systems like Samba or FTP are useful at home or work when you want to permanently share a folder but often people just want to quickly send a file to some specific person. For that you do not want to first put it in your shared files (making it available to everyone, which you might not want so you need a password on it etc.) and then tell your contact that he/she can find it there. Just right-clicking on a file and using "Send to" (through a nautilus-send-to back-end) to just send this file to that person is a lot nicer.

An ideal system should automatically discover other users in the neighborhood, list them and let the user choose who to send files. The system should also work without any configuration, without the need to tell one’s IP address, and without requiring any operation from the administrator, such as setting up a server or configuring a service.

I want to develop a program to satisfy those needs enabling users to easily send and share files over a LAN. My plan is to work on the telepathy-salut connection manager adding support for file transfers, on top of that I'm going to write an easy-to-use GTK-based GUI to show available contacts and to initiate and accept file transfers. The GUI should also manage authorizations in a user-friendly way, without bothering the user with technical details about the involved certificates.

Recently Xavier Claessens, the author of gossip-telepathy, started to work on grapevine, a modular version of gossip using Nokia's mission control. A good idea would be to work on it adding file transfers capabilities instead of writing a separate GUI, this way other protocols could benefit of my work.

GConf schema handling improments

Student: Frej Soya Rasmussen
Mentor: Emmanuele Bassi

Make GConf schema handling a bit more sane. Basicly doing as much as possible of point 2 & 3 in:

Implement PDF Annotations support in Evince

Student: Iñigo Martínez
Mentor: Carlos García Campos

The purpose of this project remains on adding annotation support on Evince. The main taks is to add annotation support to PDF documents using the official PDF reference by Adobe, so any user using Evince could see PDF documents with annotations on them and create those documents. The idea is to extend this annotation support to all the possible document type supported by Evince.

Annotations support is an important step on Evince doing it more user friendly. It would allow to anyone adding his own notes to documents and sharing this knowledge to anyone that could get a copy of them. To be able to write and read PDF annotations is an interesting and useful feature for researching and workgroup tasks that no other GNOME application supports nowaday.

Changing metacity into a window-and-pointer-manager

Student: Paulo Ricardo Zanoni
Mentor: Elijah Newren

With the recent X Window System changes, a lot of features are being added, and the whole world will need to adapt to these changes.

One of these changes is the addition of multiple-pointer support in X.org 7.4, that will allow a whole new set of applications that were never made before, and will also make multiseat easier. When X.org 7.4 gets released people won't be able to make full use of its new features if there is no window manager that also manages multiple pointers.

And to be able to use all of these new features, the window managers will have to be adapted. What I am going to do is to fully integrate metacity with MPX, write a document describing the new features that window managers should implement, and how to do it. The aim of this document is to help developers to implement multiple-pointer support on their own window managers.

Also, in the process of adding multiple-pointer support to metacity, problems might be found and there might be the need of new features/protocol calls, so I will be able to detect them and report/correct them before xserver 1.5 is released.

By the end of summer we expect to have a window manager that brings the new MPX features and a document that helps everyone integrate their window managers to work with MPX.

Jokosher VoIP Integration

Student: Michael Sheldon
Mentor: Benjamin Thorp

Podcasters often interview guest via VoIP, some even have their regular presenters communicating via VoIP when physically being in the same room is impossible. In these circumstances it would be useful to have VoIP integrated in to an audio editor, such as Jokosher. This would allow each person participating in the conversation to be recorded as a separate track/instrument, allowing for much easier mixing and editing of the resulting audio.

This would be achieved through use of the Telepathy communications framework, allowing Jokosher to make use of multiple VoIP protocols such as SIP and XMPP (as used by Jabber/Google Talk).

I believe this feature would be unique amongst all Free and proprietary audio editors and would be useful to a large number of podcasters.

gnome-bluetooth and bluez-gnome improvements and unification

Student: Tadas Dailyda
Mentor: Marcel Holtmann

Overall project goal is to improve GNOME Bluetooth stack so that it has more functionality and all the features are easily accessible to user. Current gnome-bluetooth functionality would be made available from Bluetooth applet (BlueZ GNOME applet). Support for OBEX FTP server would be introduced and existing gnome-bluetooth code would be refactored. Gnome-vfs OBEX FTP module would be further improved.

GDM Composited Bling

Student: Flávio Nuno Fernandes Martins
Mentor: Brian Cameron

This project aims to make GDM take advantage of accelerated/composited X servers, to bring pleasant and useful effects to the end user. Effects like fade in, and fade out will mask the transitions between login screen and the user desktop. This project aims to improve the visual of the whole login and logout experience.

Enhance Mango to allow self-service of GNOME account data and streamline GNOME account setup

Student: Barış Çiçek
Mentor: Olav Vitters

This project aims to automate account management in GNOME infrastructure. Currently a lot of things are handled manually. With this project account team will only trace the work flow of account creation and only do final decision.

Plug my desktop - Fixing input device hotplugging

Student: Nicolas Trangez
Mentor: Christian Kellner

Imagine a world where you can get up in the morning, take a refreshing shower, toast some bread, take your laptop aside and open up the lid. 2 seconds later, it's completely resumed. Some seconds later you're automagicly connected to your wireless home network, and you're able to check your email.

After a little while you're at your desk in the office, connect a flatpanel to your laptop, and power on your sexy Bluetooth mouse and keyboard. A nice composited desktop is displayed on the external panel, using the correct resolution, and your HID devices work like a charm: correct keymap, mouse resolution, and all mouse buttons work fine.

You open some PDF file, and press "Print". A printer selection dialog is displayed listing all printers found using ZeroConf. You select a color printer you never used before. A dialog pops up telling you you never used this device before, but the system knows the model and configured it automagicly. You're offered to print a test page, some time later you got the PDF printed like it should.

At the end of the day, you go to a friend's place to watch a movie you just bought. You attach the friend's data projector to your laptop, which is configured automaticly. As you dislike using touchpads, you take detach the USB mouse used by your friend from his desktop, and connect it to your laptop. Works like a charm. You open up your movie player, and start the movie. After pressing the play button, the movie is displayed fullscreen on the wall. You grab your friend's new gadget, a Bluetooth wireless commander, which is a simple HID device with play/pause buttons and volume controls. You click on a "Detect" button in some capplet, the device is detected automagicly, and all multimedia buttons work like a charm.

Once at home, you connect the new USB multimedia keyboard you bought during the day to your laptop, and try whether the multimedia keys do work as expected. Changing volume, skipping a song and launching a browser all work fine. Jay!

Sadly enough, this is still Utopia, and one SoC won't change this. Some parts could be tackled though...

art.gnome.org 3

Student: Bruno Miguel Fachada dos Santos
Mentor: Thomas Wood

The project is to develop version 3 of art.gnome.org (AGO).

The main objective of the AGO project is to be an artwork community server at users disposal. As such, Users are the ones who should decide what they want to see. They should have an user-centered experience and feel they are part of the community. Naturally artwork developers should also be encouraged to participate actively with their work. Without them there is no artwork. Thus, users should be able to comment and review developers works and consequently developers must be able to receive such feedback.

Cross-Application Scripting

Student: Ori Bernstein
Mentor: Hubert Figuiere

Currently, in the Gnome desktop, it is generally impossible to glue together applications in a manner similar to what AppleScript does. There are good examples of scripting within apps (see: Gimp's Script-Fu), but it doesn't allow the easy gluing together of applications, automating workflows such as "Insert data into Gnumeric, Create a chart in Gnumeric, save to file, and convert to EPS for use in LaTeX".

This scripting will be the counterpart, to technologies like Apple's AppleScript and KDE's Dcop, and hopefully will eventually interoperate well with DCop.

The idea was inspired by Hubert, in this blog post:

VoIP and video call client using Telepathy

Student: Elliot Fairweather
Mentor: Robert McQueen

I should like to put forward a proposal to write a VoIP and video call client for GNOME based upon the Telepathy framework. I am a first year Computer Science undergraduate and have been an enthusiastic user of GNOME since my introduction to Linux four years ago. I have always wanted to contribute to the open-source software community and I believe that I now have the necessary foundation of knowledge and programming ability to do so. I have followed with interest the development of Telepathy and should like to create an application which will allow the GNOME community to benefit from the new opportunities presented by this project.

My application will provide a GTK front-end to Telepathy to allow audio and video calling via the XMPP protocol. I will create the client's UI by constructing new GTK widgets that will form part of the Grapevine project. Grapevine aims to gather together both Telepathy back-end functionality and UI components from which current and future GNOME applications may be developed. As well as being a showcase for the power of Telepathy, I hope that this client will be act as a proof of concept for these widgets by demonstrating how Telepathy may be fully integrated into the GNOME desktop through Grapevine. A simple interface for the setup and troubleshooting of both webcams and microphones will also be included.

To get involved with two such great projects as GNOME and Telepathy would be most exciting for me. I think that such a project would be invaluable to me in my education as a programmer and that GNOME would be even greater by the inclusion of an application such that I have proposed.

Application for Evolution's encryption and key selection interface project

Student: Pınar Yanardağ
Mentor: Adam Schreiber

I will introduce several features that make Evolution's encryption interface more usable. I would like to use libebook, libcryptui and the DBUS interface provided by Seahorse. I'd like to use libebook for query Seahorse if single or multiple keys are returned or not. If a single key returned and it's trusted, then i'll be OK. But if multiple keys are returned then i'll use cryptui for promting user to choose a key. It will be easy to see if a mail is encrypted or not. The status will be shown at the bottom if mail is encrypted, plain text or if signature is valid or invalid. I'll also be quite easy to manage keys and key selection process. When a bad signature received; user will kindly be warned by a dialog box. The key selections' preferences will be displayed in a tree view. It will show nick and key ID. Also user will be notified if incoming message is encrypted or not.

Gnome Scan NG

Student: Étienne Bersac
Mentor: Vincent Untz

Gnome Scan aim to make scan as simple as print for both users and developers. Gnome Scan was started during the Google Summer of Code 2006. The project continued his development, including moving to Gnome SVN, distributing in Ubuntu/universe, translating in several languages.

However, Gnome Scan shows its structural limits :

  • Hard coded very limited processing (only rotation was implemented)
  • Hard coded scan option set (resolution, area, …)
  • Hard coded UI. The dialog wasn't build depending on device
  • No scan from file (useful for importing PDF with one image per page).
  • Some duplicated code
  • Quite buggy SANE handling.

Also, since the beginning of Gnome Scan development, some other technologies have evolved :

  • HAL is receiving SANE support. SANE provide HAL fdi (in CVS) and HAL addon for monitoring buttons.
  • Gegl implement very nice and efficient processing pipline.

Waiting for Gnome SVN account, i redesigned Gnome Scan in order to fill the lakes and take advantage over new technologies. This summer, i will implement Gnome Scan ng specification.

WYSIWYG Documentation Editor for GNOME (Foie Gras)

Student: Szilveszter Farkas
Mentor: Shaun McCance

The GNOME documentation system is under reconstruction (Project Mallard). As part of this, there is need for a WYSIWYG editor that lets anyone (both authors and contributors) to create and modify documentations easily (codename: Foie Gras).

Refactoring Deskbar-Applet

Student: Sebastian Pölsterl
Mentor: Raphael Slinckx

I want to refactor Deskbar-Applet, because the idea behind Deskbar-Applet is just great and simplifies your daily work a lot. Unfortunately, the source code is according to the maintainer “full of hacks”[5] and therefore difficult to maintain. In addition, the current efforts to unite the world of desktop search engines[6] changes the way Deskbar-Applet works. Ideally, Deskbar-Applet just queries the user's favorite desktop search engine and presents the results. This way each program does what it can do best. Deskbar-Applet presents the results and the search engines does the search and manages the search index. Despite presenting search results Deskbar-Applet should of course keep the plugins that are not directly related to searching (e.g. launching applications, calculating), because they emphasize that Deskbar-Applet is more than a search engine.

Even though this goal can't be achieved right now, because the developers of the different search engines are currently working in implementing the Wasabi specification, it's necessary to gear Deskbar-Applet up for the time the teams are ready.

Therefore, the UI code needs to be separated from the search part e.g. using MVC pattern. Actually, the code is already kind of separated in more or less independent parts. But this kind of separation isn't ideal for the final goal to provide a Deskbar-Applet widget that can be integrated within every application (e.g. gimmie or slab). Even more important the code should be a lot of easier to maintain and plugins should be easier to write and integrate. I think of a way to easily find, install and update plugins, maybe even over the internet.

If a developer wants to include the Deskbar-Applet widget within his or her application he or she maybe only wants to see results that are actually search results and no others. To achieve this either each plugin and/or each results returned by a plugin should be categorized and only shown in the embedded widget, if the developer wants to.

From the point of view of the user Deskbar-Applet should load faster and work better as it clearly has some focus issues. The start-up time could shortened by index in the background and not at start-up. In addition, the search results could use some polish, too, e.g. if you find a movie or a image it should display a thumbnail.

Face detection and tagging feature for F-Spot

Student: Andrzej Wytyczak-Partyka
Mentor: Lawrence Ewing

Within this project I would create a module for F-Spot that would make face detection on the pictures, and tagging of the detected faces possible. It would also give grounds to a future, automated system (developed after the SoC), which would give a new level of photo organization. Faces could be automatically recognized and sophisticated queries could be performed (i.e. integration with Beagle).

The following link contains the full proposal:

Voice recognition applet to control desktop

Student: Raphael Nunes da Motta
Mentor: Nickolay Shmyrev

The idea is to develop some features that will improve the usability in the Gnome Desktop. The goal is to implement a Desktop Voice Control System. The system consists in an application that will be monitoring the audio input( microphone ) and when a significant audio signal has been detected, the software catches, processes and recognizes the signal and then executes the desired action over the Gnome Desktop. In a set of actions could include maximize, minimize, close the active window; open a specific program; switching from one desktop to another; among others. The software will be implemented in C language in conjunction with CMU Sphinx, which is an open source tool, created to recognize and decode audio files in word list files. The software will be developed as a Gnome applet.

Outreach/SummerOfCode/2007/AcceptedProposals (last edited 2013-12-03 18:32:10 by WilliamJonMcCann)