GSoC/2010/Ideas: Difference between revisions
Line 149: | Line 149: | ||
[http://pim.kde.org/ Website] - [http://techbase.kde.org/Projects/PIM Project Wiki] - [https://mail.kde.org/mailman/listinfo/kde-pim Mailing list] - IRC channel: #kontact and #akonadi on Freenode. | [http://pim.kde.org/ Website] - [http://techbase.kde.org/Projects/PIM Project Wiki] - [https://mail.kde.org/mailman/listinfo/kde-pim Mailing list] - IRC channel: #kontact and #akonadi on Freenode. | ||
====Project: | ====Project: ==== | ||
'''Brief explanation:''' | '''Brief explanation:''' | ||
'''Expected results:''' | '''Expected results:''' | ||
'''Knowledge Prerequisite:''' | |||
'''Knowledge Prerequisite:''' | |||
'''Mentor:''' | '''Mentor:''' | ||
===KDE on Windows=== | ===KDE on Windows=== |
Revision as of 22:26, 4 February 2010
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
Plasma
Website - Mailing list - IRC channel: #plasma on Freenode.
Project:
Brief explanation:
Expected results:
Knowledge prerequisite:
Mentor:
Amarok
A KDE music manager and player.
Website - Mailing list - IRC channel: #amarok on Freenode.
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
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:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
Marble
A desktop globe and map application. Also provides a map Qt Widget.
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
KStars
KStars is a Desktop Planetarium for KDE. It displays a map of the sky and provides a lot of tools to learn astronomy, or to calculate and predict astronomical phenomena. See [The KStars Homepage] for more information.
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
Kalzium
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
Rocs
Rocs is a Graph Algorithm Testbed for universities. It aims to give the students a place to visualize the results of the algorithms, so it doesn`t provide any, instead there`s a place for the studant to write them down and see what happened.
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
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:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
KOffice
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
KDE PIM
KDE PIM is the interest group working on applications related to personal information management, e.g. contacts, calendar, mails, etc.
One of the current challenges is utilizing the new cross-desktop PIM infrastructure called Akonadi.
There are interesting projects on all levels of the software stack: libraries, application porting, new applications, access to online resources, etc.
Website - Project Wiki - Mailing list - IRC channel: #kontact and #akonadi on Freenode.
Project:
Brief explanation:
Expected results:
Knowledge Prerequisite:
Mentor:
KDE on Windows
Solid API backend
Brief explanation: The porting efforts to make KDE available across platforms do need some backends for system dependent tasks. One of the KDE libraries that bundles this is Solid.
Expected results: You implement a backend for the Solid API using WINAPI. It has to work with both MinGW and MSVC compilers. Not every function is required, but the basic functionality (network access, removable drives/harddisks and power) should be implemented.
Knowledge Prerequisite: Windows API and C++/Qt. You should be able to set up the development environment yourself and be familiar with it.
Mentor: Carlo Segato (brandon dot ml at gmail dot com) or Patrick Spendrin (ps_ml at gmx dot de)
KDE on Mac OS X
Some Ideas
- Solid Backend for Mac OS X using IO-Kit
- Strigi (and may be also Nepomuk) backend using Mac OS X's Spotlight
- Package creation using CPack
Please ask on kde-mac at kde dot org
KDE Games
Project: Mancala game
Brief explanation: Mancala is a family of board games played around the world, sometimes called "sowing" games, or "count-and-capture" games, which describes the game-play. Mancala games play a role in many African and some Asian societies comparable to that of chess in the West. The list of mancala games best known in the Western world includes Kalah and Oware. Other games are Congkak, Omweso, Ünee tugaluulakh, Bao, Sungka and Igisoro.
The word mancala comes from the Arabic word naqala meaning literally "to move." There is no one game with the name mancala; instead mancala is a type, or designation, of game. This word is used in Syria, Lebanon, and Egypt, but is not consistently applied to any one game.
In the USA, however, "mancala" is often used as a synonym for the game Kalah.
Expected results: The aim of this project is developing Mancala game with lively interface that is changeable depend on the culture user chose to play. For example, if user choose Africa Culture, the interface will be a board drew on sand with several stones plus sounds of jungle, wild-animals...
Mentor: currently there is no mentor for this project, please go to kde mailing list and find one !!
Project: Kolf 2 landscape object
Brief explanation: Kolf 2 is the second incarnation of KDE's minigolf game. We are currently rewriting it from scratch to take advantage of the powerful technologies provided by Qt 4 and KDE 4.
Expected results: The task in this project is to create an object (or multiple objects) that provide(s) landscape textures, slopes, puddles and sand bunkers.
If you finish this task before the end of the summer, you can fill the remaining time by porting as much game objects from Kolf 1 to Kolf 2 as possible (e.g. windmills, floating blocks, signs or bumpers).
Knowledge Prerequisite: C++/Qt. Experiences in graphics programming with Qt will definitely help, as you are expected to implement 2D rendering for the landscape object.
Mentor: Stefan Majewsky (majewsky at gmx dot net) – Please contact me to let me help you to improve your proposal.
Project: Kolf 2 editor interface
Brief explanation: The minigolf game Kolf provided an editor interface from the beginning, to allow the users to create custom courses. For Kolf 2, we are rewriting the game engine and can therefore not use the old editor code.
Expected results: Your task would be to create an editor interface (may be embedded in the game, or a standalone application). A few basic parts are available, and the Kolf 2 engine supports generic methods to provide data to editor interfaces, and display editor overlays on the game view.
If you finish the editor interface before the end of the summer, you can fill the remaining time by porting as much game objects from Kolf 1 to Kolf 2 as possible (e.g. windmills, floating blocks, signs or bumpers), or using your editor to put together some cool courses.
Knowledge Prerequisite: C++/Qt. Experiences in model/view programming with Qt will be of good use.
Mentor: Stefan Majewsky (majewsky at gmx dot net) – Please contact me to let me help you to improve your proposal.
Project: Parsek – advanced galaxy conquest client
Parsek is a client for playing 4X (explore, expand, exploit and exterminate) galaxy conquest strategy games, which are created using Thousand Parsec framework. You can think of it as an advanced version of Konquest.
Brief explanation: Parsek uses the existing C++ Thousand Parsec protocol library to create a KDE 4 graphical game client. The client is then used to connect to any game server running any game created using Thousand Parsec framework. Some code (you can find it in playground/games/parsek) is already written (to get object of the universe and messages) but you can't play the games yet. The student's task will be to bring Parsek at least to a state so that people would be able to play games with it.
Expected results: To be able to play games some features must be added: displaying a star-map, displaying object info in a nice way, displaying messages in a nice way, getting and displaying object orders, creating new orders. If there is some time left after before mentioned required features are implemented the student will work on additional optional features, for example: automatic discovery and display of game servers (on local network and/or from meta-server), game servers accounts manager, plug-in for game server administration, Plasma widget with overview and quick access to the games someone is playing, single-player wizard (to easily setup local server and AI clients)...
Prerequisites: C++/Qt (experience with model/view and graphics view programming is a plus), experience with similar 4X games (Stars!, Galactic Civilizations, Master of Orion, Space Empires, Spore, ...)
Mentor: Jure Repinc (jlp at holodeck1 dot com). Contact also on #kdegames/#tp channels on freenode.net (nickname JLP) and kde-games-devel/tp-devel mailing lists.
Project: Robots Game
Based on this idea the robots game would be a cross between games and edu, a game where users would also learn some programming basics while they are building their robots for the competition.
Brief explanation: The idea is to develop a simple game loosely based on Robocode, where computer programmed robots created by the player can fight among themselves.
Expected results: A fully playable game which is also an opportunity for learning programming basics and provide infinite replayability.
Prerequisites: Strong C++/Qt skills
Mentor: To be picked among kdegames and kdeedu community
kdelibs
Project: DOM3 XPath Level 1 and/or DOM selectors API support in KHTML
Brief explanation: Because JavaScript frameworks have popularized access to parts of documents using various query languages, direct browser support for such queries has become fairly common. This project is about adding support for one (or two) of such languages to KHTML. Basic implementation of each is expected to be simple, but there may be some interesting optimization opportunities to explore.
Expected results: Implementations of XPath 1 or DOM selectors API at DOM level with appropriate JavaScript bindings that are standard-compliant, written in simple & maintainable fashion, and perform reasonably well.
Knowledge Prerequisite: C++, and some comfort with working with large codebases.
Mentor: Maks Orlovich (maksim at kde dot org)
Solid
Project: UPnP support through Jolie
Brief explanation: Adding UPnP support to Solid would mean offering transparent UPnP support to every KDE application using the Solid API, keeping them clean from every UPnP implementation aspect. At the present, the Jolie language is being integrated with Plasma by means of the QtSodep library, soon to offer higher levels of abstraction.
The aim of this project would be to implement a UPnP protocol for Jolie, so that Solid could re-use the integration being made with QtSodep and gain UPnP support without having to worry about implementation details. Having a UPnP protocol implementation in Jolie would have other considerable consequences, like the possibility to act easily as a UPnP server or to compose and export existing UPnP services.
Expected results:
- The creation of a "upnp" protocol in Jolie, supporting at least the Internet Gateway Device (IGD) and MediaServer profiles.
- The creation of a UPnP Jolie service for UPnP service discovery and monitoring.
- Extending libsolid to expose UPnP devices found on the network.
Material Prerequisite: Having UPnP devices or software applications to test with. Most home routers support IGD, and there exists free software supporting the MediaServer profile (mediatomb).
Knowledge Prerequisite: Understanding of the UPnP specifications, Java (for the development of the Jolie UPnP protocol) and basic knowledge of the Jolie language.
Mentors: ervin (ervin at kde dot org) fmontesi (famontesi at gmail dot com)
KWin
KDE's window manager
Techbase page - Mailinglist - IRC channel: #kwin on Freenode.
Project: Window tabbing
Brief explanation: Window tabbing is a feature that allows you to group multiple application windows together to cover the same space. It is identical to what is already available in any modern web browser except it applies the the window as a whole. Window managers that have this feature available include Fluxbox and Ion. This feature was originally requested in 2002.
Knowledge Prerequisite: C++ and Qt. Understanding of the X window system and Xlib is a benefit but not required.
Mentors: Lucas Murray (lmurray undefinedfire com)
Project: Window tiling
Brief explanation: Window tiling is a technique of displaying application windows side-by-side without overlap. The position, size and layout of the windows can either be specified by the user or determined automatically to best fit the screen. Examples of existing tiling window managers include Awesome, XMonad, Ion and Ratpoison. One of the main advantages of tiling is that is makes application windows easy to navigate solely by the keyboard. This feature was originally requested in 2003.
Expected results:
- Users should be able tile existing floating windows on-the-fly with simple keyboard shortcuts or mouse gestures.
- It should also be possible to run the entire desktop environment entirely in tiled mode (Enabled by configuration settings). In this mode new window would be added to the tiling grid by default yet can be removed by the user if required.
- The final tiling system should not interfere in any way with the existing floating window management.
Knowledge Prerequisite: C++ and Qt. Understanding of the X window system and Xlib is a benefit but not required.
Mentors: Lucas Murray (lmurray undefinedfire com)
digiKam
Photo Management program
digiKam project web site - Mailinglist - IRC channel: #digikam on Freenode.
Project: High Dynamic Range (HDR) plugin
Project Information: digiKam is an advanced digital photo management application for KDE, which makes importing and organizing digital photos a "snap". The photos are organized in albums which can be sorted chronologically, by folder layout or by custom collections. digiKam has an Image Editor which has its own plugin subsystem with some common tools e.g. red eye correction or Gamma correction. Additional plugins are provided with the main application to process advanced corrections on image like color management, noise reduction, or special effects. digiKam image editor support 16 bits color depth image internally. The goal of this project is to create a new plugin dedicated to create HDR image.
Expected results: This project should implement an HDR tool will mix two or more (nearly) identical images having different exposure into a new image representing a wider dynamic range, which is closer to human perception of a photographic scene. Tone-mapping method must be used to create HDR images. An open-source implementation is already available at this url and can be re-used as well. There is an old feature request.
Knowledge Pre-Requisite: C++/Qt.
Mentors: Gilles Caulier (caulier dot gilles at gmail dot com)
Project: Face Recognition
Project Information: Digikam is a photograph collection manager able to collect, organize and send pictures to some major web gallery services, like Picasa Web or Flickr. Face recognition is useful for it's purpose as it makes tagging people on photos really easy and painless. People with thousands of photos in their library would get much of the work needed to catalog them done by digikam right in the process of acquisition from media.
Expected results: The scope of this project is to implement in digikam a face recognition component (using Principal component analysis - PCA) which automatically tags faces when new photos are inserted. This is one of the highest priority feature request: wish 146288.
This component should be able to keep a little database of known faces and apply the related tags for them. When a face is not recognized in those present in the database, the face should however be selected and tagged manually by the user.
Knowledge Pre-Requisite: C++/Qt, OpenCV
Hints: Tutorial on facerecognition using OpenCV [1]
Mentors: To be assigned (Gilles Caulier?)
KDE Telepathy Integration
The Telepathy Framework is a desktop independent framework for real-time communication, such as VoIP and Instant Messaging. The projects below are some ideas for integrating telepathy into KDE.
If you want to know any more about Telepathy and KDE, drop by the irc channel #decibel and talk to grundleborg, or use the mailing list decibel AT kde DOT org.
Project: Message Logging
Project Information: The Telepathy Framework allows for components which can watch channels whilst a user is interacting with them through another application. A program could be created to log the content of text instant messages into an Akonadi collection.
Expected results: This project should result in a telepathy watcher which is capable of logging the contents of text chats into an Akonadi collection. It should be possible to go off-the-record in a particular conversation from telepathy user interfaces and the logger should not save any messages in this situation. This project might also include modifying the Kopete logging plugin to use the same akonadi collection for logs, and making a migration tool from Kopete's old logging format to the new Akonadi collection.
Knowledge Pre-Requisite: C++/Qt, some basic knowledge of the Telepathy Framework is an advantage, but not necessary if you have an interest in real-time communcation and are prepared to learn fast.
Mentors: George Goldberg (grundleborg at gmail dot com) IRC: grundleborg
Project: Telepathy Integration to any KDE application
Project Information: Provide some collaborative feature or instant messaging integration for your favourite KDE application.
Expected results: This project should result in a collaborative feature or instant messaging integration being added to the chosen KDE application. It should be complete enough to provide at least basic functionality to end users, with the possibility of further improvement after the summer of code period ends.
Knowledge Pre-Requisite: C++/Qt, some basic knowledge of the Telepathy Framework is an advantage, but not necessary if you have an interest in real-time communcation and are prepared to learn fast.
Mentors: George Goldberg (grundleborg at gmail dot com) IRC: grundleborg. You should also discuss your idea with the development team of the application in which you would like to provide a Telepathy feature.
Project: Telepathy Plasma Integration
Project Information: Provide integration of presence and buddy information into plasma.
Expected results: You should provide multiple points of integration between presence and contact information and plasma. Plasmoids allowing the display and manipulation of your own presence information should be made available, building on the plasma applets and datengines already in existance for presence information. Plasma activities could also be made aware of presence, and the contacts plasmoid could be made aware of your buddies from Telepathy instant messaging accounts.
Knowledge Pre-Requisite: C++/Qt
Mentors: George Goldberg (grundleborg at gmail dot com) IRC: grundleborg. You should also discuss your ideas with the plasma development team before making a proposal.
Nepomuk
Website- Documentation/Howtos - Ontologies - Mailing list - IRC channel: #nepomuk-kde on Freenode.
Project: A Context Sidebar
Brief Explanation: The ideas is to have a sidebar on the desktop (see Plasma project above for example) which shows information about the resource in the current context. Examples include files or important emails from a specific person that sent the email I am currently reading. Or related information on a webpage I am currently browsing. Or the author information on a pdf I am reading. And so on. The sidebar should pick up DBus signals that can be sent out by any application to change the current resource (this is just an idea).
Expected Results: Creation of the sidebar and integration into at least two applications (like KMail or Okular) which will then update the resource in focus. It might also be good if the sidebar could monitor if the application that set the resource looses focus or is closed.
Knowledge Pre-Requisite: C++/Qt/KDE/Plasma
Mentor: Sebastian Trueg (trueg at kde dot org)
Project: Saving and Loading of Documents via Meta-data
Brief Explanation: Today we still save and load our documents using a file browser. We navigate through folder structures that we created and try to find the best spot for the document. Another way would be to store a document by specifying meta-data about it. We could for example set the type (not the mimetype but the actual type like it is a letter or an invoice or a holiday picture and so on) or set properties on the document like related projects, related persons, tags, and so on. The system would then store the document someplace (we don't care about that). Loading the document would work the same way: filter documents according to type, date, persons or any other property we might have chosen to describe it. In KDE applications today can predefine the file extension. How about letting the application predefine a set of meta-data properties.
Expected Results: A prototype for saving and loading documents via meta-data and at least one use case which is demoable.
Knowledge Pre-Requisite: C++/Qt/KDE, knowledge on ontologies and RDF are very helpful
Hints: One might think of a plugin system here that allows to suggest annotations to the user. Compare the annotation system already in playground based on Nepomuk::Annotation.
Mentor: Sebastian Trueg (trueg at kde dot org)
Project: Improved Virtual Folders
Brief Explanation: KDE 4.2 contains a KIO slave which uses Nepomuk to provide virtual folders (nepomuksearch:/). It has not been deeply integrated into KDE yet (such as the file dialog or Dolphin). The project would change this situation and allow to browse virtual folders in addition to simply use it as a search client. Ideas include subfolders which sort by result type or allow to refine the search. Also interesting is the saving of virtual folders and a graphical interface to define searches (folders).
Expected Results: An improved version of the virtual folders which is highly usable without prior knowledge (such as the nepomuksearch:/ scheme). The possibilities are vast.
Knowledge Pre-Requisite: C++/Qt/KDE
Mentor: Sebastian Trueg (trueg at kde dot org)
Further information:
Project: Konqueror Bookmarks using Virtual Folders
Brief Explanation: A bookmark plugin for konqueror, that creates a bookmark folder structure on the fly, out of the tags that are assigned to each bookmark-item. A bookmark could be a local or remote file, of any kind: html/pdf/video/… The tags could either be assigned by the user(with a very simple/quick interface), or just indexed automatically.
Expected Results: A virtual folder structure that would replace or supplement the current bookmarks toolbar. E.g. one could find the digikam web page either like: Linux->KDE->multimedia->[digikam], or Photography->Programs->[digikam]. Because the bookmark has all these tags: Linux,KDE,multimedia,Photography,Programs. An initial database could be created by importing the current bookmarks.xml file, using the directories as tags.
Knowledge Pre-Requisite: C++/Qt/KDE
Mentor: Sebastian Trueg (trueg at kde dot org)
Further Information:
- Blog Comment by Yiannis who proposed this
- Stefan's blog comment mentioning the full text indexing of bookmarked web pages (compare the tagging plugin for Konqueror which already does this for tagged pages.)
Project: Nepomuk metadata Backup service
Brief Explanation: Using Nepomuk the user can create a lot of metadata such as tags and comments and in the future way more. All this data is important to the user and needs the same attention any other data gets. This includes backups and migration of data.
Expected Results: A Nepomuk service or application which provides a backup service for Nepomuk data. It would allow to manually backup and restore data, as well as automated ones. The service should not just backup everything but only that data which cannot be recreated easily (the latter includes data extracted by strigi).
Knowledge Pre-Requisite: C++/Qt/KDE, RDF/Ontology knowledge very helpful
Mentor: Sebastian Trueg (trueg at kde dot org)
Further Information: This could also be integrated with the idea from Martin about exporting/importing metadata.
Project: Visual Query Builder
Brief Explanation: Semantic queries can be very complex and having a user type in SPARQL or even something simpler can scare them away very easily. Thus, a visual query builder which can be reused by multiple applications and looks nice would help a lot.
Expected Results: A library which provides a nice GUI for users to define semantic Nepomuk queries.
Knowledge Pre-Requisite: C++/Qt/KDE, RDF/Ontology knowledge very helpful
Mentor: Sebastian Trueg (trueg at kde dot org)
Further information:
Project: Annotate new files
Brief Explanation: We get new files from different sources all the time. This includes downloads, email attachments, pictures from a camera, but also files we create ourselves with applications like word processors or the like. It would be very helpful if the system supported the user in deciding how to categorize or annotate the new files. Based on source or application or storage folder or previously used annotations a non-intrusive dialog could propose certain annotations to the user.
Expected Results: A system which monitors for new files, decides if this is an interesting file (ignore log files and the like) and then proposes possible annotations to the user. This could include tags but also resource types (PIMO) or relations to other resources (such as projects or persons).
Knowledge Pre-Requisite: C++/Qt/KDE, RDF/Ontology knowledge very helpful
Mentor: Sebastian Trueg (trueg at kde dot org)
KDE Financial Data Sharing (Fids)
KMyMoney Mailing list - Kraft Mailing list
KMyMoney and Kraft are applications in the area of personal finance management: While KMyMoney is a full featured personal finance manager, Kraft is a tool for invoicing and more for small enterprises.
Both applications deal with users financial data and integrate well in the KDE desktop for the benefit of the user.
Brief Explanation: With the concrete example of KMyMoney and Kraft a KDE global service should be developed which exchange financial information between these and possibly other applications on the KDE desktop.
KMyMoney helps the user to keep overview about his money dealing with all kinds of financial accounts and transactions. Kraft is an applicaton where invoices can be created. Once an invoice is sent out, a payment is expected. That is information KMyMoney should be aware of and list an expected payment. When KMyMoney gets knowledge of the payment (i.e. through online banking) the information should go back to Kraft to mark the invoice as paid. For that a semi automatic identifier matching between incoming and expected payments must be implemented.
Other data should be shared through Fids like the users account information hold by KMyMoney. A desktop global unique number service for documents help the user to create correctly numbered documents through various applications like Kraft. The most challenging thing would be to provide country dependent tax information through Fids.
The financial transaction data might be best handled in an Akonadi plugin.
Expected Results:
KMyMoney and Kraft share information about sent out invoices which result in expected payments. If the money comes in Kraft needs a notification. For that a generic infrastructure, maybe based on Akonadi, must exist. The solution must not be limited to KMyMoney and Kraft but provide a generic solution for all KDE apps interested in financial data.
Knowledge Prerequisite: C++ and Qt. KMyMoney, Kraft and Akonadi knowledge could be useful.
Mentors: Klaas Freitag (freitag at kde org) and members of the KMyMoney team.
Okular (Document viewer)
Okular is KDE's document viewer. It is often used for PDF documents, but can handle many other document types.
Record presentation
Wishlist item 169511 discusses why it might be useful to record presentations. It is fairly easy to extract the timings from a recording, however it might also be useful to package up the complete presentation (slides, timing and audio).
An interesting idea is to make these into an Ogg container, using Ogg/Speex or Ogg/Vorbis for the audio, and Ogg/Kate for the slides. A proof-of-concept implementation of the timing + Ogg/Kate output is available in a branch. You'd need to find a way to record the presentation audio (e.g. extend Solid to detect audio input sources and Phonon to record)
This project could also add other "Save As" functionality - see Wishlist item 103568.
Prerequisites for working on this are a sound understanding of C and C++. Experience with Solid, Phonon, and the various Ogg-related libraries would be a strong advantage.
You may wish to discuss this further on the Okular mailing list (https://mail.kde.org/mailman/listinfo/okular-devel), or the Okular IRC channel (#okular on Freenode).
Possible mentor: Brad Hards ([email protected])
KEduca (kde-edu tool)
Project: Templates for math exercises
A brief explanation: When teaching math (e.g. basic algebra or fractions) user has to type values manualy to each exercise. Using templates it would be much easier. Math teacher could express an exercise of simple adding as:
- Take 2 random, integer values (e.g.: x, y)
- Both has to be between 1 and 15
- Correct answer is a x+y
- Let KEduca random some answers but only one can be correct
Suggestion: It would be good to make two types of templates: static, and dynamic. In dynamic one each time user open an exam variable's values are taken randomly. In static one: Values are written to exam file once.
Templates will be written in kind of pseudocode. It has to be As Easy As Possible in use.
Knowledge Pre-Requisite: C++, experience with parsers, Qt is a plus
Expected results: Teacher can prepare exams in math without any effort. Teacher can be sure that each student will recieve unique set of exercises.
- Written pseudo scripting language for templates (other solutions are welcome)
- KEduca's file format can manage with templates
- KEduca's exams builder supports templates
Project: Sets of question
A brief explanation: Teacher would like to create a geography test. Five questions will be about flags (set 1), five about language (set 2) and another five about culture (set 3). Teacher has more than 5 questions in each issue and he would like to each student answer to randomly taken 5 question from each issue, but general structure of test has to be 5 (flags) - 5 (language) - 5 (culture).
All the questions has to be stored in exam file.
Knowledge Pre-Requisite: C++
Expected results: Teacher can create some sets of questions and determine of how many questions in the every issue test will be built. Some questions may not belong to a any set (or belong to set called e.g. "general") so each student will answer to these.
Step
Step is an interactive physical simulator for KDE.
Project: 3d mode
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 useful: Qt.
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
Project: fast water and gas simulation
Brief explanation: Currently Step has molecular dynamics based simulation of gas and water (that is a gas is simulated as a collection of particles). This is very usefull for demonstrating microscopical properties of the gas as well as its connection with macroscopical quantities like temperature. But this is far from optimal to demonstrate things like a boat floating in the water, water flowing from a glass, etc. This project involves:
- investigate fast methods of simulating water and gas: ranging from molecular dynamics but with simplified potentials, various optimizations, coarse graining methods, to lattice Boltzmann methods; investigate existing libraries for water simulation (for example take a look at elbeem library from Blender)
- implement selected method of simulation or incorporate selected library in StepCore
- implement GUI in Step for creating and modifying macroscopical quantities of gas and watter
Expected results: Ability to easily simulate in Step experiments like a boat floating in the water, water flowing from a glass, etc.
Knowledge Pre-Requisite: Required: C++, physics, good knowledge of numerical methods. Could be useful: Qt.
Mentor: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
Project: (other ideas)
Brief explanation: These are a list of smaller ideas related to Step. You can use them as a tips for building your own 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, better soft-body border handling, investigate better (more accurate) methods of modeling soft bodies (knowledge pre-requisite: physics)
- support for non-convex polygons (probably by implementing triangulation)
- optimize collision detection (AABB trees, etc.)
- finish friction and bounceness implementation in StepCore.
- collision callbacks in StepCore.
- 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>
Kopete (IM Client)
Project: Chat Room improvements
A brief explanation: Kopete has a great interface when it comes to one-to-one conversation. But chat room has a different workflow, and the current interface is not that much suitable. Additionally, the support of group chat in some protocol is quite poor or unfinished.
The goal is to improve the user interface for this special usage. This include a special mode for the chatwindow (ability to choose a different style). Suitable notifications mechanism. Good presentation in the contactlist for bookmarks or auto-join.
It may also include improving support in one protocol such as IRC or Jabber MUC
Expected results: Kopete need to be usable in chat room with at least one protocol, with a polished interface. As great to use as any client designed for group chat.
Knowledge Pre-Requisite: C++, Qt is a plus
Mentor: Olivier Goffart <ogoffart at kde dot org>
Other
Project: Ultracopier
Brief explanation: Ultracopier is advanced copier, but it is written in Qt. The target is convert Qt part in KDE part and optimize it, while keep the Qt part for no KDE platform. The target is too found the best way for possibility of integrate ultracopier as on demand copier.
Knowledge prerequisite: Knowledge of C++ and some familiarity with Qt, KDE and especially KIO and konqueror/dolphin plugin system.
Mentor: BRULE Herman (alpha.super-one at laposte.net). You can contact my as instant messager: ICQ: 367926760 or msn: alpha_one_x86 at hotmail.fr
Project: Social Desktop
Brief explanation: Bits and pieces needed to implement basic functionality of the Social Desktop
Expected results: A couple of applets integrate information from OpenDesktop with information about contacts that is already available on your local machine and on the web (blogs, microblogs, maybe content from social networking sites such as facebook). A contact applet collates IM presence, addressbook data, and activity data from opendesktop. A clear concept of a Contact is needed, an ontology in Nepomuk will be created for this. All information about a contact should be easily queriable via Nepomuk.
http://techbase.kde.org/Projects/Social-Desktop http://websvn.kde.org/trunk/playground/base/attica/
Knowledge prerequisite: Knowledge of C++
Mentor: Sebastian Kügler. Contact at [email protected] or #plasma on freenode.
KDE Multimedia
KMID
Port to KDE-4
This is simple, it hasn't been ported to KDE-4 yet.
KDE-4/Qt-4 front end for TiMidity
Currently TiMidity has front ends for several GUI toolkits but there isn't one for KDE-4 or Qt-4. This front end should be able to run as standalone with Qt-4 or be part of KMID with KDE-4.
KDE Network
KGet
Multiple Improvements to KGet
Mailing list - IRC channel: #kget on Freenode.
Project: Multiple Improvements to KGet
Brief explanation: This project is made up of multiple small projects that will make KGet easier to use and function similar to other download managers.
Expected results: (1) A right-click menu to change file download properties (filename, destination directory, URL), (2) Allow users the option of adding new download sources to a multithreaded transfer manually, (3) Pass metadata about downloaded files to Nepomuk for semantic desktop, (4) Pass digital signatures to KGpg, (5) Add support for repairing downloads via Metalinks with chunk checksums, (6) GUI to create Metalinks, (7) Integration of BitTorrent/FTP/HTTP multi-source downloads.
Knowledge Prerequisites: C++ is essential, knowledge of Qt KDE and web technologies like HTML and JavaScript would be helpful.
Resources: Existing transfer plugins, KGet developers
Mentor: Urs Wolfer <uwolfer at kde dot org> or KGet developers. Contact at [email protected] or #kget on freenode.
KRDC
Finish and polish NX support for KRDC
Project: NX support in KRDC.
Brief explanation: KRDC lacks NX support, which is gaining momentum in the free software world. Build upon the work done by George Wright in the 2006 SoC and the work done by Urs Wolfer in the 2007 SoC to create a top quality NX client for KDE. There has been a SoC in 2008 which has added basic NX support, but unfortunately the project is not finished yet. This project should build up on that work. The current work needs to be updated to the current state of the external libs, and everything needs to be polished after NX support is basically working.
Expected results: Fully working NX integration for KRDC, including support for advanced NX features such as sound, VNC/RDP tunnelling etc. Feature parity with the commercial NX client shouldn't be necessary, but aiming for that isn't a bad idea. All NX connection handling code should be in the cross-platform client library nxcl (C++/STL/autotools), and all GUI specific code should be in KRDC. Also part of the task is a documentation of external dependencies as help for distributions. At the moment there is not much documentation available.
Knowledge Prerequisites: Knowledge of the NX protocol (see http://www.gwright.org.uk/protocol.pdf for an older version of the protocol), C++/STL/Qt/KDE coding and cross platform coding.
Resources: http://freenx.berlios.de , http://blog.gwright.org.uk/articles/category/nx , http://nomachine.com/ , http://svn.berlios.de/wsvn/freenx
Mentor: Urs Wolfer <uwolfer at kde dot org>
KRunner
Create Scipting Interface For KRunner
Project: Scipting Interface For KRunner
Brief explanation: KRunner has the potential to be awesome in its functionality as an interface for quick access to a wealth of information. However, in its current form, the only way to add functionality from the point of view of the user base is to write plugins, which requires a knowledge of C++ and the KDE framework. The project would be to create a scripting interface through a plugin, that uses Kross.
Expected results: A plugin for KRunner that give access to the scripting interfaces provides by Kross, allowing users to simply drop a script in /usr/lib/kde4/ to behave like a normal compiled plugin. Also, a suite of scripts demonstrating the use of this new feature and greatly extending KRunner's functionality as a quick-use information-grabber.
Knowledge Prerequisites: C++, Qt, and the KDE Framework; experience with KRunner plugin API helpful
Resources: http://websvn.kde.org/trunk/KDE/kdebase/workspace/plasma/runners/
Network Management
Integrate Mobile Broadband Connection Assistant into Network Management
libmbca/mobile-broadband-provider info is a database of connection parameters and supporting library for mobile broadband (cellular networking). This makes it easy for people to setup their datacard or phone to provide an Internet connection. This idea suggests integrating this database into the Network Management tool for KDE 4.
Expected results:
- UI components to access the provider info database
- Integration with the configuration module for Network Management
- Unit tests to ensure that Network Management is robust if the provider info database is corrupted.
Knowledge Prerequisites: C++, Qt, and the KDE Framework
Resources: http://svn.gnome.org/viewvc/libmbca http://svn.gnome.org/viewvc/mobile-broadband-provider-info http://websvn.kde.org/trunk/playground/base/plasma/applets/networkmanager