Projects/Summer of Code/2008/Ideas
This page is an open list for ideas for the 2008 edition of Google Summer of Code. This page is open for new ideas from anyone.
This list is not exhaustive. It is just a collection of some ideas. To get further ideas, please feel free to use any resources and past ideas.
Before proceeding, please read the participation instructions and the notes on editing this page. They are useful for students and developers alike.
Past ideas
You may want to take a look at the ideas page for 2006 and 2007. Many of the ideas there are still valid today.
Project ideas
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.
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.
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)
KDE Libs
KDE Core libraries
The KDE core libraries (kdecore, kdeui, kio, kparts) are the most basic libraries that all KDE applications depend upon.
Solid
Solid is the KDE hardware abstraction layer, that enables KDE programs to get consistent results when running on different platforms.
Phonon
Phonon is the KDE audio abstraction layer, that enables KDE programs to produce basic and medium-level multimedia functionality in any platform without platform-specific code.
KHTML
KHTML is the current KDE HTML engine, used by the Konqueror web-browser and other applications to display HTML in their interfaces.
KJS
KJS is the JavaScript engine used by KHTML and Kross to run JavaScript programs.
Sonnet
Sonnet is the KDE grammar, spell-checker and language-detection engine.
Kross
Kross is a modular scripting framework that provides a complete framework to embed scripting interpreters like Python, Ruby and KDE JavaScript transparently into native applications to bridge the static and dynamic worlds together.
Oxygen
Oxygen is the KDE 4's default look-and-feel. It comprises of the Oxygen icon set (including the palette and guidelines for icons), the Oxygen sound theme, the Oxygen wallpaper collection, the Oxygen window decoration and the Oxygen widget style. Note that for Summer of Code, you must produce code, so the window decoration and widget styles are your more likely candidates.
KDE Base applications
Konqueror
Konqueror is KDE's powerful web browser and file manager.
Dolphin
Dolphin is KDE 4's default file manager application.
Konsole
Konsole is KDE's terminal application.
Kate and KWrite
Kate is KDE's Advanced Text Editor, both a full-featured text editor application and a KPart engine ready for embedding into other applications (like KDevelop, Quanta and Kile). KWrite is a simple text editor based on the KatePart engine and is KDE's default text editor.
KDE Workspace
Plasma
Plasma is KDE 4's desktop and panel tool, replacing KDE 3's kicker and kdesktop. It's an advanced and power application with revolutionary ideas.
KWin
KWin is KDE's X11 Window Manager program, greatly improved when compared to its older brother in KDE 3.
KDM
KDM is KDE's Display Manager and login application.
KDE Runtime
KOffice
KWord
KSpread
Kexi
Krita
KDE Edu
Project: Step: 3d mode
Project Information: Step is an interactive physical simulator for KDE. Currently it lives in playground but it will be included in kdeedu package for KDE 4.1.
Brief explanation: Implement physical simulation in 3d. This involves:
- convert all classes in StepCore to templates with dimension as a template parameter, implement specialized versions where required, modify meta-object system to handle it
- implement 3d mode in GUI: viewing and editing
Expected results: Ability to create, edit and view 3d simulations in Step with the same set of objects as in 2d.
Knowledge Pre-Requisite: Required: C++, basic OpenGL, basic physics (mechanics). Could be usefull: qt.
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
Project: Step: a game
Project Information: Step is an interactive physical simulator for KDE. Currently it lives in playground but it will be included in kdeedu package for KDE 4.1.
Brief explanation: The idea is to create a game based on physical simulation where the player have a fixed list of equipment (like springs, balls, cat and mice, teapot, etc.) and should use it to build a machine to achieve a given goal (for example put the ball in a basket, capture the mice, prepare a tea, etc.). The user places the equipment, than press Start button which starts physical simulation and if (in certain time limit) the goal is achieved the game is won. In the other case the user could try again. Similar projects: old game named "The Incredible Machine" and newer (but commercial) one named "Crazy Machines".
The game can be implemented as standalone application using StepCore or as special restricted 'game' mode for Step (probably with tweaked graphics).
Expected results: Playable game and several levels to test it.
Knowledge Pre-Requisite: Required: C++. Could be usefull: qt, basic physics (mechanics).
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
Project: Step: simulation of chemical reactions
Project Information: Step is an interactive physical simulator for KDE. Currently it lives in playground but it will be included in kdeedu package for KDE 4.1. This project also relates to Kalzium.
Brief explanation: Simulate some basic chemical reactions using classical molecular dynamics methods with empirical potentials. At first initial settings for simulation should be prepared by hand (as XML file), if there will be enough time an editor could be implemented too. This project involves:
- convert required classes from StepCore to handle 3d simulations (you will need only several classes which are trivial to convert)
- implement required objects and potentials in StepCore
- implement GUI for observing the simulation (investigate the possibility to use avogadro library for visualization), GUI should also allow altering of some properties like masses and charges
- prepare demonstrations of several common reactions
Expected results: Chemical reaction viewer which could load predefined experiment, modify some basic properties and run the simulation. Prepared simulation for several common reactions.
Knowledge Pre-Requisite: Required: C++, physics, basic chemistry. Could be usefull: qt, basic quantum mechanics, knowledge of common molecular dynamics simulation technics and numerical methods.
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
Project: Step: other ideas
Project Information: Step is an interactive physical simulator for KDE. Currently it lives in playground but it will be included in kdeedu package for KDE 4.1.
Brief explanation: These are smaller ideas related to Step. You can combine several of them to compose you project.
- use KAlgebra library for parsing user-supplied expressions in PropertiesBrowser; allow value in Meter, x- and y-values in Graph to be arbitrary expression; implement ParametricForce object that will apply a force given by user-supplied expression; implement a series of ParametricJoint objects that will allow creation of various parametric constraints (like fixed particle trajectory)
- scripting for Step using either QtScript or Kross
- multi-threaded calculations in StepCore (knowledge pre-requisite: multi-threaded programming)
- correctly handle stiff problems in StepCore (knowledge pre-requisite: numerical methods)
- calculation of gravitational and electromagnetic force between non-point
objects by integrating (knowledge pre-requisite: numerical methods)
- make StepCore compilable without Qt
- improve soft-body support: implement automatic creation of arbitrary-shaped
soft bodies, investigate better (more accurate) methods of modeling soft bodies (knowledge pre-requisite: physics)
- framework for dynamic object creation/destruction in order to allow
implementing particle emitters
- statistical models (for example prey/predator model)
If you have other ideas please feel free to propose them !
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
KDE PIM (Personal Information Management)
Kontact
KOrganizer
KPilot
KMail
Akonadi
KDE Games
KDevelop & Quanta
KDE Network
Decibel
Decibel is a realtime communication framework for KDE 4.x.
Kopete
- add support sip-with video calls
Amarok
Okular
Other applications
Application User Interface Test System
There are a couple of tools available for Qt / KDE that allow testing of applications - squish and kdexecutor. Both are binary only, and are specific to the systems that they are built on.
It would be useful to have an open source tool that allowed us to test applications in a scripted way. Similar open source tools include Dogtail and LDTP, which use the accessibility interfaces in Gnome.
There are arguments for and against using accessibility - it might be a lot more useful to implement a separate system, using some of the Qt4 specific features including QMetaObject. Qt4 has a nice set of hooks, and QTestLib shows how they can be implemented. However instead of requiring specific code in the application (as done by QTestLib), it would be more flexible to use LD_PRELOAD and a small interface library.
More discussion: Brad Hards <[email protected]>
Usability
The KDE Usability Project is willing to offer support mentoring to one or two projects (more if additional design mentors are available) which involve heavy UI development or UI redesign activities.
Infrastructure
KDE infrastructure tools, like Bugzilla, the Review Board, etc.
KDE dependencies and non-KDE projects
Depending on the relevance of the proposal, the KDE Project will accept student proposals on projects that are not part of KDE, but which are either KDE dependencies or relevant to KDE or the Free Software Desktop.
Qt Cryptographic Architecture
The Qt Cryptographic Architecture (QCA) isn't strictly part of KDE, however it is used in a range of KDE applications (and other applications). A range of projects are possible, in terms of adding security features to applications (e.g. SASL, encrypted content, client side puzzles).
A specific need is the provision of alternative backends, which are typically the interface between QCA and some underlying crypto library. We already have several, but only the OpenSSL one is fairly complete, and OpenSSL is pretty ugly. A new backend would require some previous crypto knowledge, and ability to program in C++ and C. No GUI experience required! We probably only need one good alternative on each platform.
Alternative backend - GNU crypto libraries We have a basic backend using libgcrypt, which is mostly working. However a lot of the more interesting capabilities are present in gsasl and GNUtls. Mentor: Brad Hards
Alternative backend - Mozilla Network Security Services The Mozilla project has a library that is separately packaged on most systems. It offers a fairly complete alternative to OpenSSL. We have a basic skeleton for NSS, but it only offers a couple of basic crypto primitives. Mentor: Brad Hards
Strigi
Soprano & Nepomuk
D-Bus
- a named pipe or shared memory transport implementation for win32
- can QLocalSocket and QSharedMemory (in 4.4) be used?
Other Freedesktop.org initiatives
Notes on editing this page
Before making any modifications, please log in to Techbase. This will help us track who is contributing to the ideas.
When making modifications to existing ideas, please consider whether you're changing it more fundamentally or just superficially. If your changes are substantial, you probably have an entirely new idea. Similarly, if your idea is modified and you feel it no longer reflects your original thought, please split the idea in two, restoring yours.
Please use the talk page if you want to discuss an idea.
Finally, do not delete ideas without a reason for doing so (like, for instance, being contrary to KDE ideals, being completely unrelated to KDE, being unfeasible, etc.) -- you may want to state in the talk page why you removed the idea.
Do not re-add ideas that were removed without discussing first with the developers of the target application.