Projects/Summer of Code/2009/Ideas

    From KDE TechBase

    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


    Project: Code regression test suite, implemented with QtScript

    Brief explanation: Amarok currently has no automatic code regression testing ("unit testing") in place at all. We very much need such a system in place (for as many components as possible), as we sometimes accidentally break certain components of the program by extending the code.

    Expected results: Code regression test suite for Amarok 2, implemented as one "Amarok-Script" (JavaScript), and internally split into multiple separate files and components, so that it would be possible to run arbitray tests (or the full suite) with very little effort, and no compiling, at any time. A requirement would also be testing of the collection scanning code (with test case collections), and testing of GUI correctness with the QTest library.

    Also see: http://amarok.kde.org/wiki/Development/Scripting_HowTo_2.0

    ETA: Before Amarok 2.2 release.

    A plus would be the generation of suitable statistics (possibly with document export), and possibly a visual representation of the data.

    Material Prerequisite: Amarok 2 trunk, KDE SVN account, git. Linux, OSX, or Windows.

    Knowledge Prerequisite: C++, Qt, KDE-Libs, QtScript (JavaScript), SVN, git, code testing.

    Mentor: Potentially one of several. Contact the amarok mailing list or ask in our IRC channel #amarok


    Project: Multilevel playlist sorting and sorting GUI

    Brief explanation: In Amarok 2.1, the layout of the playlist will be very configurable, being able to show as much or as little information about each track as each user might wish. Currently however, it is lacking an advnaced system for sorting in the playlist, something that many users comming from Amarok 1 are missing. While simple sorting is relatively easy to do (and has already been partly implemented) we would like to aim a bit higher with Amarok 2.

    Expected results: A proxy model allowing the tracks in the playlist to be sorted using an arbitrary number of "layered" sort criteria. for instance, a sort setup could be "artist-album-tracknumber" This would sort all tracks by artist, then sort the tracks from each artist by album, and finally the tracks from each album based on track number. Once this model is working, a GUI is needed for making this functionality easilly avaialble to the user. Ideally this gui should tie in well with the playlist layout and search/filter stuff. Also, all track navigators (the classes that determines the order of playback, such as normal, random, random album and so on) need to be updated to use and work correctly with the new proxy model.

    ETA: Before Amarok 2.2 release.

    Material Prerequisite: Amarok 2 trunk, KDE SVN account, Linux, OSX, or Windows.

    Knowledge Prerequisite: C++, Qt, KDE-Libs, SVN/git.

    Mentor: Nikolaj Hald Nielsen <[email protected]> or 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.


    Marble Engine Based SatNav

    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)