GSoC/GCI Archive
Google Summer of Code 2010


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.


Our project code repository for 2010 is here:


  • A Solid backend for UPnP Device Detection and Desktop Integration The UPnP standard is being widely used in various types of applications, such as multimedia, smart houses, and so on. Also is being implemented by several vendors of many kinds of devices. In the current version, the KDE SC does not have the support for UPnP. This project aims at providing this support developing a Solid UPnP backend, making the system able to detect and access devices that are part of an UPnP network.
  • Add Bookmarking and Annotation in marble I will introduce several features in “Marble” to make it more user friendly and main stream application, leading to better user experience. These features will add functionality of managing the data with better understanding and visualization using “Marble”, with it's main goal i. e. exploring the world.
  • Adding Caching Of Data To Plasmoids And DataEngines The Problem: Currently, when a network connection is unavailable to a device that is running a Plasma Workspace, plasmoids that depend on network functionality typically do not display anything. This is undesirable since it is unattractive and provides less functionality. The Solution: Plasma should provide cache functionality to plasmoids and data engines. Plasmoids that utilize a data engine that uses the cache feature will receive the feature for free.
  • Amarok and KDE UPnP Integration KDE has been network aware from the very beginning. Solid and KIO are main components which provide this ability. This project will extend both to allow interaction with Universal Plug and Play Media Servers and provide KDE with the ability to access them. The second goal of the project is to use the above to allow Amarok to treat any UPnP MediaServer device as a Collection and provide indexing, playing and advanced meta-data based querying of the device's data/music.
  • Amarok: On The Fly Transcoding There are situations in which the user has to worry about media formats, e.g. when acquiring new music, or copying existing music from one collection to another or from the collection to a portable music player. Whenever a copy happens, a dialog should show up, with the following choices: do not convert, convert with previously configured settings, convert with manual configuration (the wording could be better but that's the idea).
  • Authentication for scripted plasmoid downloaded from the web Plasmoids are really powerful plugins for the Plasma environment, so we should provide a system to notify the user whether the downloaded plasmoid can be considered secure or potentially harmful.
  • Bringing SyncML support to Akonadi Bringing SyncML support to Akonadi via a akonadi patches for Syncevolution. Syncevolution is considered one of the most mature PIM synchronization solution on the linux platform. However, It doesnt support Kde4/Akonadi yet. But, it is extensible and currently work is going on to bring Akonadi support to syncevolution. I wish to study it thoroughly and complete it as much as i can this (G)SoC.
  • Client side library for ownCloud I propose to create a client side library for use with the ownCloud service, which can be used to "cloudify" desktop applications.
  • Community integration in KDevelop It is hard to get started to work on a new community, even just to work on a new project. I would like people to be eager to contribute to new projects. During this summer I would like to ease that process by improving KDevelop in the 3 steps that I think that are the most important to get started. The project retrieval, the startup information gathering and the deliver of the code.
  • Create an additional Frontend for KDM, using Plasma I will create an alternative frontend to KDM (the KDE login manager) using the framework that KDE's Plasma provides. It provides many features to us out of the box. For example, animations, multiscreen, any Plasma(or supported non-Plasma) widgets. Also grants us unified themes, all for FREE!!
  • Distributed Collections The distributed collections project aims at implementing the capability in Amarok to browse/search/play music collections of Amarok instances on a LAN/Internet.
  • Easy Import and Export of all PIM data in Kontact There should be an easy way to import and export all PIM data including the configuration data, to make it easy to exchange data and to move the Kontact data to another installation.
  • Efficient multithreading support for Krita This project will make Krita merge process threaded. I will encapsulate all the update information into a single struct and make the merge process be executed on any of arbitrary number of threads in parallel. More than that, the synchronous part of the update signal to the UI thread will eliminate flickering on the canvas. The update scheduler will plan which rectangles of the image can be updated simultaneously and will optimize update requests queue so no memory conflicts will appear.
  • Face Recognition in digiKam Most of the proprietary photo suites today like Picasa, iPhoto, and Windows Live automatically recognize, and tag faces in photographs. Auto-tagging saves valuable time that would otherwise be spent doing it manually, considering that many people have thousands of photos. Aided by nepomuk, you would be able to type the name of your best friend in dolphin's search bar or krunner, and the results would contain the same friend's photos.
  • Gluon Creator Node Plugin Create a node rendering library to make interactive nodes from a file. This will be use in a plugin for Gluon Creator for the code editor and material/shader editor.
  • Gluon Player Plasmoid for KDE Gluon is a cross-platform free and open source 2D game engine from KDE. It aims to make life easier for game developers by providing a simple but powerful API to handle 2D objects, sounds and inputs. The aim of this project is to develop a Plasma applet for KDE which can used to play Gluon games, fetch new games and other activities supported by the Gluon online service.
  • GreaseMonkey scripts support for Konqueror I would like to introduce user scripts support to Konqueror browser. The de facto standard of userscript is GreaseMonkey (which is introduced by respective Mozilla Firefox plugin). The large database of such scripts contributed by users already exists. The ways of implementation I have studied from the code of KHTML, KJS and Konqueror are described.
  • Image transformation tool for Krita Since Krita is to be used also for shading and texturing, it needs to offer some image transformations. The current transformation tool lacks crucial features such a shearing image, changing perspective, warping, and some pre-written transformations. It also deteriorates the image unreasonably by performing too many transformations. The aim is to develop from scratch a new transformation tool for Krita, which will implement those features and be at the same time fast and comfortable to use.
  • Implementing a composite collection in Amarok by integrating Playdar Taking advantage of Playdar's ability to find content from a variety of sources, this project intends to create a new Amarok collection that seamlessly displays all content which Playdar can browse so that a user can see and use local, network, and some internet content all at once, just as they do their local collection. Additionally, a user's searches will reveal content from sources which don't support browsing.
  • Implementing more Vim features in Kate This project is about implementing a larger set of features specific to vim and to integrate them in Kate. Among the improvements: * a feature that limits the effects of crashes by creating swap files * a visual diff for visualizing the changes that happen to a file while editing * extend Erlend Hamberg's work - the "Vi-mode" and add new features such as visual block selection and improve others such as searching and the whole interaction between Vi-mode and Kate's interface and commands
  • Implementing Time Support to Marble Hey! It will be great to see how the Earth used to look like million years ago. Implementing time support to Marble will allow user to browse through time. User will be able to see month-wise maps of the Earth. This will require implementation of central internal clock. The project will also provide time support for on-line services. KML time elements will be implemented too.
  • Improve animation framework and create animation effects for KPresenter KPresenter, the presentation program of KOffice suite, don't have animation like appearance, dissapearance of object. I propose to continue the animation framework development, and implement some animations. And in a second time implement user interface to manage them.
  • Improve KDE debugging support on Windows KDE on Windows is not a stable product and crashes are often. Currently, the developers can't receive backtraces from users - the crash handler is ported to Windows, but it cannot generate a valid backtrace. This project aims to improve KDE's crash handler, and also to modify the kdewin-installer so that it is able to install debug packages.
  • Improvements for KHangMan KHangMan is a part of KDE Edu software. It is a game which helps children in extending vocabulary and learning new words. Player can choose difficulty level (usually it determines the average length of word to be guessed). Most words are common-used. Additional category is “Animals”.To me KHangMan is useful as a tool to improve my skills in foreign languages. While reading TODO I thought there's still much to do. Below you can read how will I improve KHangMan during this summer.
  • Improvements of R backend of Cantor The emerging of Cantor made available the long awaited compromise software which would combine modern GUI technology with the power of CLI. Unfortunately, due to project being relatively young, the R language backend is not as well developed as the other ones are. R happens to be a swiss knife suite for many scientific research labs. Having a friendly GUI for R would therefore provide a nice premise for spreading KDE and free software in general across the scientific institutions.
  • Improving Visual Realism in KStars via OpenGL While KStars has many advanced features, the quality and realism of its graphics could do with a great deal of improvement. This project would aim to increase the aesthetic appeal of KStars by means of an OpenGL painting backend, with support for light-pollution simulation, texturing, sky-shading, and tone-mapping.
  • Integration of a Plug-in System into KMess KMess (the Live Messenger alternative for Linux) has been growing in the past years as a way of letting the users feel comfortable with Linux and Instant Messenger programs by providing a messenger with almost all the features Windows Live Messenger has and so on. In order to keep this constant improvement the developer team has been working on, a Plug-in System has been a major feature in consideration as is very requested by users and will let KMess to grow and provide more features.
  • Integration of KmPlot into KAlgebra Allow to KAlgebra draw the same types of functions that KmPlot does. To achieve this, it is necessary working to integrate KmPlot features inside KAlgebra, so we can reuse, adapt and improve the development achieved in KmPlot.
  • Krita Comic Related Brush Engines And Impasto Implementation Krita is a raster graphics editing application whose aim is to offer an integrated solution to create images from scratch. The goal of this project is to improve Krita's simulation of real media, through new special brush engines and filters that simulate the real life tools manga artists use to paint with patterns, and implementation of impasto effects simulating the use of thick paint or sculpting media on the canvas, of interest to fine artists who want to explore digital media.
  • Marble To Go(Navigation Mode) Marble currently supports GPS devices and can download maps from the internet using OpenStreetMap.The proposal aims at making the Navigation Mode of Marble user friendly and implementing algorithms for smooth re-centering and Zooming,showing route instructions to the users, making offline routing convenient,improving the interface for small screen devices and introduce flexibility for the users. The result would be a big leap towards turning Marble into a sophisticated navigation device.
  • Metadata Backup, Sync and Sharing This project aims at developing Metadata syncing, backup and sharing in the KDE Nepomuk Framework. Additionally it also consists of creating user interfaces for performing these three tasks. backups, synchronizing metadata, and, if time permits, metadata sharing.
  • Mind mapping in Koffice Mind maps are used to generate, visualize, structure, and classify ideas, and as an aid in brainstorms, study, organization, problem solving, decision making, and writing. Today the most usable mind mapping software is XMind. But it is written in Java, has non-kde UI and can't be integrated with kde. The idea is to bring mind mapping elements to Koffice and XMind-like functionality to Braindump.
  • Mobile System Tray - A Sensible System Tray for Plasma on mobile. This project aims to create a version of the System Tray currently used in Plasma Desktop and Plasma Netbook, redesigned so that it works sensibly on the small screen size of a mobile device. The redesigned System Tray should retain the present functionalities of standard one - supporting application/applet icons, tray plasmoids, as well as notifications. It should also be developed in sync with the infant Plasma Mobile shell so that it integrates in that environment as seamlessly as possible.
  • Nepomuk Dedicated Desktop Search GUI Nepomuk makes maintenance and intensive usage of meta-data possible. Building on this, it provides powerful search tools, though the representation of search results is not user-friendly or intuitive enough, especially for non-technical users. We propose a reusable search GUI that presents results in a relevant and appealing manner. We aim to deal with specific popular cases (files, emails, contacts, tasks, etc.) to present search results in an appealing manner.
  • New Colour Choosers for Krita and Karbon In this project I will create new colour choosers for the drawing application Krita and the vector drawing tool Karbon, which is part of KOffice. Currently these two programs use the same colour chooser as KOffice, which doesn't provide the functionality an artist would expect. Both programs would benefit from a colour space aware chooser with extended features.
  • Non-destructive image editing for digiKam Non-destructive editing should provide a way to alter images without actually touching the original by storing all the changes in image's metadata. This data then should be read when the image is opened and all the stored changes should be applied back to the image and the output must give the same altered result. User can also make several different versions of image modifications (applying different filters with different values etc.) and he should have access to all the versions he created.
  • Plasma Dashboard in Skrooge Skroogoids will be added on Plasma dashboard in Skrooge. Skroogoids are small widgets that tell us summary of our account details. There are nearly 8 widgets on skrooge dashboard like "Accounts" that tell information about account how much money you have? and operations this tells operations scheduled for particular account. Income and Expenditure this tells how much you have income and how much do you spend.
  • Plasma Media Center - Media Browser backends and API Since online multimedia content providers such as youtube, flickr, (to name a few) are offering their API to developers, one can take the opportunity to write standalone desktop applications. Another aspect to provide access to such services can be made with the Plasma library of the KDE Software Compilation. Therewith, it is possible to realize the project idea to write backend services that allow browsing media content from web services and offer an API for high level applications.
  • Plasma Summary Page in Kontact The end result of this project would be to have KDE's flagship PIM application Kontact use KDE's Plasma libraries to draw its summary page. This will involve crafting custom plasma applets that access the functionality of various KDE applications using the Akonadi PIM layer, and the end result should provide a containment that will have all of these applets available, and also have the option of placing these widgets on the desktop.
  • Reverse Geocoding and Improved Map Search On this project I look forward to implement the Reverse Geocoding System (with backends from Google Maps, and Open Street Maps), expand the WorldMapWidget2 (to make it return the number of images and a URL of one image from each tile) and the Advanced Search tool (by making it able to filter images by location) and add a new selection display model (where the user will have the possibility to visualize his filtered images directly on a bigger map).
  • Revive Quanta+ for KDE4 Quanta+ used to be a very prominent application back in KDE 3 times. It was a powerful IDE for web development and I got to know many people using and loving it. Sadly, the core developers have no time for it anymore and the port to KDE 4 stagnated. While KDevelop is alive and kicking, I plan to finish the migration to KDevplatform and get Quanta+ for KDE4 into a usable state once again.
  • Rocs support to others Data structure, scripts include and new file format support. What is proposed here is to write some files plugins (KML, DOT) to import/export, scripts include support and make Rocs be extensible (through plugins) to other data structures(like B* trees, linked lists). To keep rocs functional, also will be write the plugin to graph's data structure.
  • Scripting support for KWin A lot of customization is possible for window managers, with each customization tailored down to the users needs. And all this customization cannot be provided by configurations alone and hence in this project, KWin would be made scriptable in the ECMAScript language using which users can tweak the behavior of their windows to their liking.
  • Telepathy Tubes and File Transfer in KDE Telepathy Tubes could have a large number of application in KDE but an usable interface to easily access to Telepathy using Nepomuk resources is required. This project will provide a bridge for Telepathy Tubes and for file transfer within KDE and then will use it in two different applications: "Plasma widgets sharing with contacts using StreamTubes" and "Collaboration in mathematical software using Cantor and Telepathy DBusTubes."
  • Theming support for KDE-PIM applications - Porting to the Grantlee library KDE-PIM applications like KMail, KJots, Akregator use Qt mixed with HTML to generate their themes. This project aims to solve this problem by porting the Grantlee library to the Message Viewer to have theming support. Artists can create their own themes,without looking at code and developers can concentrate on creating the methods to manage and export the data. Integration of GHNS will allow users share,update and download new themes.
  • Web Metadata Extractor Framework and Service Plugin-based euristic system for extracting metadata from various internet sources. The system can work independently and refer to the user in case of uncertainty or work under the full control of the user