GSoC/GCI Archive
Google Summer of Code 2009


Web Page:

Mailing List:

KDE is an international technology team that creates Free Software for desktop and portable computing. Among KDE's products are a modern desktop system for Linux and UNIX platforms, comprehensive office productivity and groupware suites and hundreds of software titles in many categories including Internet and Web applications, multimedia, entertainment, educational, graphics and software development. KDE software is translated into more than 60 languages and is built with ease of use and modern accessibility principles in mind. KDE4's full-featured applications run natively on Linux, BSD, Solaris, Windows and Mac OS X. Due to our commitment to our technology platform and to our open-source heritage, KDE libraries are available under the LGPL versions 2 and 3 at a minimum, and KDE applications are available under the GPL versions 2 and 3 at a minimum.


  • 3D brush for Krita Krita is application with aim at creating images from scratch. And important part of Krita are the various painting systems called brush engines from standard potato stamping brush engine through a hairy brush simulation brush,a color mixing brush to a programable dynamic brush. I would like to work on real-time 3D brush engine, which would nicely supplement current brush engines. My aim is to to create a brush model that would behave in a more physically correct manner, following a 3D model of a brush.
  • Akonadi Filtering Framework I would like to create a complete filtering architecture for the Akonadi KDE Personal Information Management system. Filtering, in this context, stands for “applying conditional changes to the attributes of the data items coming into the akonadi server”. E-mail messages that come from a specific sender may be moved to a special folder. Other messages with a subject matching a particular regular expression might be treated as spam: beside moving them to a special folder one might want to add a “spam” tag and possibly mark them automatically as “read”. In the Akonadi architecture these operations will be performed by a filter agent process. The agent will apply a sequence of filtering rules defined in a configuration file. The configuration file, in turn, will be edited by applications by using the GUI facilities provided by a shared library. The project will focus on filtering of e-mail messages but one of the goals will be to provide a framework that is generic enough to allow easy development of filtering agents for different kinds of personal information data items.
  • Amarok: Finish the playlist: multilevel playlist sorting with configuration interface The playlist view in Amarok has become much more configurable recently, allowing the user to customize the format of each item. However, there's still no way to sort these items according to the content of the fields. During this GSoC season I would deliver: -multilevel sorting for the playlist -singlelevel grouping with configurable grouping category -inline sorting scheme selection or configuration interface -sorting scheme configuration interface -integration with the layout configuration interface I already worked on
  • Basic tables support for KWord Tables are common in many documents, and can be considered a key feature of a word processor. KWord currently lacks a competitive implementation of tables in its latest iteration, the upcoming 2.0 release. In this project, I will try to build a basic and robust implementation of editable tables, including loading and saving, that can later be extended to a more competitive implementation.
  • C++ Refactoring Support for KDevelop This project consists of implementing a new refactoring system for the KDE developer platform, using a high-level abstract representation of code known as “Du-Chain.” This project will provide a structured, abstract framework of refactoring concepts, which will enable future developments such as Language dependent plug-ins, code analysis, and code generation to be possible. A language specific Abstract Syntax Tree for C++ will be implemented as well.
  • Create landscape objects for Kolf2 Kolf2 is the second incarnation of KDE's minigolf game. The developers are currently rewriting it from scratch to take advantage of the powerful technologies provided by Qt 4 and KDE 4. Some objects in the game scene were already been created, such as WallObject, CircleBlockObject, some objects are still waiting for constructing. I am going to implement the landscape objects for Kolf2, the objects will be slopes, puddles, sand bunkers and etc.
  • Crossplatform authentication and authorization framework for KDE The project consists in a crossplatform, lightweight and easy to use framework for user authorization and authentication. The new library will use a modular design with different backends for each platform, for example polkit-qt on Linux and Authorization Services on OS X. This will allow the integration with KDE applications of the recently introduced PolicyKit/KDE and polkit-qt. Additionally, the project will include new GUI widgets and actions in kdeui and will extend kcmshell, to allow KDE applications and kcmodules to easily take advantage of those technologies.
  • Enhance Formula Shape Being able to add formulas is a requirement for many users of an office suite like teachers or scientists. Koffice in Version 1.6 included a very good formula editor. The port to the new flake architecture in Koffice 2.0 is very incomplete and lacks several features. Therefore I would like to improve the formula shape and make it usable for navigating and editing formulas.
  • Fast Gas and Water Simulation To implement fast water simulation in Step I will use FLUIDS, a GPL Smoothed Particle Hydrodynamics Library. Using this algorithm, I will be able to represent a large number of particles in a Fluid and potentially Gas simulation, allowing the extraction of interesting macroscopic properties of our fluid. Fluids will be represented graphically using an overlapping circles and allow real-time adjusting quantities like density and pressure for each fluid particle.
  • Global Outbox with Akonadi A global outbox is a shared Akonadi collection that applications can put their emails into, and Akonadi will take care of sending them. This reduces code duplication, provides convenient centralized control, and allows applications to send email without having to load a full instance of KMail. My project is to implement a standalone mail composing library based on KMime, a global outbox collection and mail dispatcher agent for Akonadi, and to begin porting applications to this new framework.
  • Improving MSN support in Kopete Improve MSN support in kopete [1] by integrating the available features in libmsn [2] on WLM plugin [3] and adding some more control options as described along this document.
  • Improving Search and Virtual Folders in KDE4 The project has two primary goals: Provide a user-friendly search in Dolphin and in the KDE find dialog, by expanding the nepomuksearch:/ protocol and developing an adequate user interface; and use the improved nepomuksearch:/ protocol to provide other semantic desktop features in Dolphin, including saving virtual folders. This will be accomplished by three major components: modifying the nepomuksearch:/ kio_slave and associated KDE-nepomuk code to provide a richer search backend; implementing a search widget to construct nepomuksearch:/ URIs that can be embedded in the KDE file dialog, Dolphin, and other applications; and provide other mechanisms to enhance search and semantic desktop features in KDE, such as an interface to save virtual folders.
  • KDE - Conversation Logging Framework The idea is to Create a generic logging framework which saves your conversations in Akonadi. The storage codes of his framework will be generic and could be used to integrate other services also, like twitter conversations or Konversation IRC logs. In this project i will Create a Telepathy watcher which will use this framework to log the contents of all text chats done using Telepathy IM clients into Akonadi, with the feature of going 'off-the-record'. Modify the Kopete logging Plugin such that Kopete logs can be saved in the same Akonadi collections, resulting in a common chat storage space. A Migration tool to migrate all your old Kopete logs to the new Akonadi collections.
  • KDE Games: Parsek Client for Thousand Parsec 4X Strategy Game The Thousand Parsec team began building a multi-platform client which utilizes the KDE API to implement the graphical user interface and the C++ protocol library, libtpproto-cpp, to provide the game logic backbone. Currently, the Parsek client can only connect to servers, download objects, and primitively display messages. The goal of this project is to finish the Parsek client so it can be distributed with KDE Games allow users to play Thousand Parsec games.
  • Konqueror Bookmarks with Akonadi and Nepomuk Develop a complete bookmarks system replacement for Konqueror, using akonadi as the backend-frontend interface, and using Nepomuk as the backend in which those bookmarks are stored. I would also develop a new location bar similar to firefox awesomebar which lets the user type keywords and find related bookmarks, a krunner plugin similar to the current one to be able to find bookmarks using krunner, and a bookmarks editor which exposes all the new posibilities to the user in a friendly way.
  • KWin: Window tabbing This feature allows you to tab windows together, the options to change between windows in the same group can be done by tabs marked outside the window or embedded in the title bar, a menu in the window title bar, or a shortcut. This feature would eliminate the need to implement this feature for single applications which will save a lot of work others that want to add tabs to their applications and some other window managers already have this feature included like Fluxbox, Ion, wmii.
  • Mancala game With an Interactive Interface Mancala is a family of board games played around the world. The name, board and the object of the game may vary considerably to regions. These games have vast historical importance. Implementing these will give a chance to reserve cultural diversity and promote child education. I want to implement these games under the common type name Mancala.The interface will be interactive which changes according to the region. My attempt will be to make the player not only play but also feel Mancala.
  • Media Device Feature Completion in Amarok 2 Basic media device support for iPods and MTP devices is present in Amarok 2, but the lack of feature parity with Amarok 1.4.x is stopping many people from partly or fully adopting Amarok 2. Missing components for iPods/MTP include: playlist support, maintenance support (e.g. initializing iPod, see %free space), and full GUI interaction and feedback for every operation performed. Universal Mass Storage (UMS) support is missing altogether, and UMS devices are the most commonly available media device. The aim of this project is to reach feature parity with Amarok 1.4.x in terms of iPod, MTP, and UMS device support.
  • Molecular calculator - Kalzium I am Kashyap R Puranik from Bangalore, India, studying Computer-science in IITM (Indian Institute of Technology Madras, India) I am proposing to add the molecular calculator widget for Kalzium, which can do all the common calculations that a chemistry student would like to do. I have already been contributing to Kalzium for the past 4 months. I have added a few small features (details in my blog) I blog at also check out my posts at Planet KDE
  • Multiple Improvements to KGet * changing the file properties (name etc.) while downloading * option to manually add download sources to multithreaded transfers * improving Nepomuk support * passing digital signature to KGpg * repairing downloads * gui to create Metalinks * multi-source downloads Depending on my progress I'd also add more features. * easy file tagging * support for downloading videos from mms sources * checking of md5sums * enhance the Import Links dialog
  • Network transparency in Plasma The goal of this project is to make some parts of plasma network transparent with as end goal the ability to: * have applets be able to use services and data engines on remote computers * move applets and activities over the network * share applets and activities between multiple computers
  • New tile and mipmapping engine for Krita I would like to improve current Krita's tile engine. It has some limitations like extensive locking, inefficient way of merging layers, absence of swapping, mipmapping and good multi-threading. Therefore the project can be split into two parts: The first will improve tiles engine itself (it'll add swapping and caching subsystems, introduce new locking policy, threading). Swapping of tiles will be done through pluggable modules (classes), that will allow us to use png/tiff engines for compressing unneeded/mementoed tiles. The second part will implement mipmapping subsystem at the top of modified tiles engine. It'll make zooming much faster and will allow us to experiment with layer merging and previewing, particularly when suitable we should merge layers tile-by-tile instead of merging the whole images and we should allow filers to preview their results on scaled-down images (right on scaled-down canvas).
  • New Widget Explorer Plasma's soul resides on Plasmoids and so it ought to be treated with love. An important concern about the delivery of these applets to the users should be "how do we deliver such applications so that they can make the best use of it?". These questions have been made and the answers are not all satisfactory. This proposal is all about enhancing the user experience when dealing with plasmoids - proposal of a brand new interface to be used by hundreds of users every day.
  • Observation Planner in KStars KStars is a wonderful Desktop Planetarium and it serves as a very useful tool for Amateur Astronomers. But it currently lacks a good, versatile observation planner. I propose to create an observation planner for KStars to make it a better software and hopefully increase the user base.
  • OSM Annotation for Marble Desktop Globe with an Optimised interface for smaller screens This project will allow for the annotation of raw GPS data for use in the the mapping process of Open Street Map (OSM). GPS will be annotated with Geo-Location aware text notes, voice recordings, images and videos while tracing new GPS routes. You will also be able to annotate existing OSM data to verify its accuracy. The project will be aimed at a small, light device with GPS capabilities that can run the Marble Desktop Globe such as the EEEPC and the interface will be optimised for this.
  • Plasma Media Center Components One of the aspects that can help making KDE even more competitve over the desktop scene is, for sure, the way it manages multimedia contents. An easy to use and, at the same time, beautiful set of tools designed to help the user manage his own media contents would represent for sure one step forward in order to meet a wider range of user needs. This goal can be achieved developing Plasma Media Center Components.
  • plasma: containment-mouse interaction In KDE3, there were a few useful menus users could have pop up when they clicked on the desktop with different mouse buttons. I want to bring this to KDE4/plasma by writing a plugin framework and some plugins that can be assigned to mouse events.
  • PlasMate Editor - An editor for Plasmoids, DataEngines and Themes For a DE like KDE, it's important to release software which can be used by developers to create custom plasmoids, data engines and themes. This app must be simple and easy to use, and must let the developer focus on the software, not on building the right directory hierarchy, and update it every time new modifications are introduce. This is PlasMate: a simple, easy to use editor for desktop customization.
  • Saving and loading enhancement through metadata The dialogs developed along this project will allow users to associate any piece of information with its type, like a letter, an article, a radio podcast and so on, and to set some properties, like related people, related projects or any other possible metadata. At the same time, he will be able to load a file, searching through previously defined metadata, restricting the set of possible matches and narrowing the search more and more, until he finds what he is looking for.
  • Smoke Generator based on Roberto Raggi's C++ parsers Rewrite the code generator for 'Smoke', the libraries on which many of the KDE bindings are based, using one of Roberto Raggi's C++ parsers (used at Qt Software and in KDevelop). The current code parsing and generation system is based on Perl and requires many tweaks and hacks to produce compilable code and has to be adjusted with every new Qt/KDE release. The new generator shouldn't need that anymore. The goal would be to get the Qt classes to generate and to compile. If it all goes well the KDE classes could be included, too. In the end people should be able to auto-generate bindings for their own C++ classes, just like they can run 'moc' on their Qt/KDE project.
  • Static Code Visualization in KDevelop This project aims to implement better approaches for program comprehension and developer interaction with software artefacts in KDevelop by means of code visualization mechanisms. For that purpose, I will introduce features for control flow graphs and polymetric visualization, implemented as part of an extensible framework that will facilitate the future development of new visualization paradigms (treemaps, class/package dependency, dynamic, evolution etc).
  • SyncML Agent for Akonadi Provide means for Akonadi to synchronise it's PIM database entries with other software/devices through the SyncML protocol.
  • Unit testing framework for Amarok using QtScript This proposal is based on The main idea is to create a unit testing framework (and tests using it) to be able to detect regressions early in the development process. QtScript should be used for tests to reduce compile time. Also this framework should have no effect on release builds, if possible. This includes: * cleanup of scripting infrastructure * enhanced scripting infrastructure for tests * test framework itself * as many tests as possible
  • Visualizations in Phonon I plan on implementing support in Phonon for exporting raw and processed audio data, so that applications easily can implement visualizations and analyzers.
  • VoIP client for KDE (revive KCall) KDE has never had some good software for communication with audio and video. As technology is evolving, there is a higher demand for communication means like this. Most KDE users nowadays use alternatives like ekiga and skype to communicate with their friends with audio and video. This project aims at addressing this need and thus creating a VoIP client software for KDE that supports audio and video communication with other people and that makes use of the telepathy framework.
  • Weather support and enhanced plugin features for Marble On the Internet are several sources of weather information. This includes current weather and weather forecasts. This project will be about adding a plugin to Marble that fetches weather information from the internet and displays it on the Marble globe. This will look like weather forecasts in tv news, but the user can select any possible map section himself. Making the plugin configurable will require several changes to Marble's plugin system.
  • WYSIWYG editors support in KHTML The next version of HTML standard (HTML5) brings a new feature: What You See Is What You Get (WYSIWYG) editors support. It's already widely used on the web for different rich text editing (wordpress, gmail, etc). The default KDE layout engine, KHTML, is currently not good at supporting editing features. My project is to adapt and extend the existing framework to have full-featured and standard-compliant implementation of WYSIWYG editing.