Projects/Summer of Code/2009/Ideas
Guidelines
Information for Students
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!
If there is no specific contact given you can ask questions on the general KDE development list [email protected]. See the KDE mailing lists page for information on available mailing lists and how to subscribe.
Adding a Proposal
When adding an idea to this section, please try to include the following data:
- if the application is not widely known, a description of what it does and where its code lives
- a brief explanation
- the expected results
- pre-requisites for working on your project
- if applicable, links to more information or discussions
- mailing list or IRC channel for your application/library/module
- your name and email address for contact (if you're willing to be a mentor)
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.
Ideas
Amarok
A KDE music manager and player.
Website - Mailing list - IRC channel: #amarok on Freenode.
Project: DLNA/UPnP Support
Brief explanation: Using the UPnP protocol users can, for example, share music from their Vista computer to a PS3. Amarok lacks any sort of UPnP support. Being able to act as a client (the PS3) or possibly a UPnP media server (Vista) would be useful. See libupnp for more information about UPnP's implementation in open source.
The gUPnP library or the Coherence server would likely be used.
Expected results:
- Using either Amarok's Internet Service framework or the straight Amarok collection framework, create a plugin which allows Amarok to browse and play music off of a UPnP share. Playing music may require the creation of a KIO for UPnP.
- Allow Amarok to share it's collection with other devices or control other devices via UPnP. This is secondary priority (since they are already UPnP servers that people can run in addition to Amarok) and may not be feasible to accomplish during Summer of Code.
Material Prerequisite: Some UPnP devices or computers to test with. Good excuse to buy a PS3. :>
Knowledge Prerequisite: C++ and Qt. gUPnP is a glib-based library, so experience with C and Glib is likely quite helpful if that library is chosen. And of course, understanding of UPnP networking and devices wouldn't hurt!
Mentor: Potentially one of several. Contact the amarok mailing list or ask in our IRC channel #amarok
Phonon
Abstraction library for sound and video support. Used by KDE notifications, Amarok, Dragon Player and Qt Software.
Website - Mailing list - IRC channel: #phonon on Freenode.
Project: Analyzer Support
Brief explanation: Applications such as Amarok and Dragon Player cannot have an analyzer or visualizations since they use Phonon which does not yet have the functionality to do it. The analyzer is the little bar graph thing which bounces around while music is playing. Users like it as its pretty and gives them a visual indication of their music playing.
Expected results: As this project is working on extending a library, it has three parts: the Phonon library itself, a Phonon backend, and an application. The Phonon library would need the new API calls. At least phonon-xine and preferably 1 or 2 other Phonon backends must then implement the new API. An application like Amarok or Dragon Player should be used to demonstrate the use of the new API.
Knowledge Prerequisite: C++ and Qt. Experience with Xine or GStreamer is probably useful.
Mentor: Ian Monroe (contact on the Amarok mailing list) or possibly another Amarok or Phonon developer.
Real-time navigation support using OpenStreetMap data and Marble for display.
Project doesn't yet exist, could either be a separate application, or integrated into Marble, though integration seems to conflict with Marble's purpose as an educational application. ( Edit from tackat, Marble Project: There is no conflict at all. Marble's educational aspect is just one out of many. We'd really love to see somebody coming up with improvements in the area of geolocalisation, routing, etc.. In terms of UI there are several ideas already how to sort things out. We just need somebody who takes care of this)
Project: Analyzer Support
Brief explanation: Satellite navigation devices have become widely used and the quality of openstreetmap data is becoming high, with some cities completely mapped already. Providing satellite navigation would be a useful desktop app for many as well as adding appeal for the use of KDE in embedded devices.
It also opens the possibility to bringing many of the free software ideals to interaction with the real world such as collaborative/social POIs.
Expected results: The project would aim at getting a basic satellite navigation application running. The most basic features required would be getting the current location from a GPS device and providing route calculation to a destination.
The AndNav project (http://andnav.org) has already achieved something similar for Android so it could be a point of reference for how to use OpenStreetMap data to achieve this.
Knowledge Prerequisite: C++ and Qt. Experience with GPS devices under linux would be beneficial. Knowing java may also be of benefit in order to study the AndNav implementation.
Mentor: I (Alan Jones, skyphyr using gmail) am willing to mentor, but not having any GPS or Marble experience there is most likely somebody far more suited to undertake this role.
Comment from a Marble Project guy: Alan, please get in touch with the Marble Project. Our mailing list is [email protected]. We'd like to support this project if a student is willing to do it.
KDevelop
KDE-based Integrated Development Environment, specializing in c++ support, but including a powerful generic framework (definition use chain) which makes it possible to relatively easily support multiple different languages.
Website - Mailing list - IRC channel: #kdevelop on Freenode.
Project: C++ Refactoring Support
Brief explanation: C++ support in KDevelop is already highly advanced, often equalling or surpassing what the user and compiler understand about the code. A few refactoring tools have been developed already, but they have been constructed in a crude fashion, generating code via string concatenation.
This project would aim to create a new system to implement refactoring tools, and to create, test and deploy several advanced refactoring tools for c++.
Expected results: A library would be created to enable refactoring based on the c++ AST (abstract syntax tree). A reverse parser (AST to code) already exists, but classes would be created to allow programatic manipulation of an AST. Optionally this library would also cover a generic framework based on the duchain which would be re-usable by other languages and make refactoring plugins easier to develop and partially shareable between languages.
See the Code Generation Design documents for the initial plan for this project.
Knowledge Prerequisite: C++ and Qt. Experience with parsers would be a bonus.
Mentor: Hamish Rodda (Definition-Use chain code creator) rodda at kde/dot/org, possibly also David Nolden (DUChain guru)(to be confirmed)