< SoK



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.

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.

Project: Sample project

Brief explanation:

Expected results:

Knowledge Prerequisite:


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.

Project: Cooperative Learning themes for Pairs

Brief explanation: Describe an xml theme-schema to add Cooperative learning to the educational game Pairs. Modify the Pairs Theme Editor to support this new theme-schema.

Pairs is an educational game for children. Pairs allows the user to load external themes so that the user can customize the game for her/his own educational goal. A Theme editor is also shipped together with Pairs. This editor allow the educator to produce their own themes.

Expected results: A brief documentation of the schema and a new version of the Editor that can create, read, modify and save new Themes following this schema

Knowledge Prerequisite: Git, XML, Qt, C++

Mentor: Marco Calignano <[email protected]>

Project: Connect Calligra Words and Authore to the Zotero bibliography database

Brief explanation: Calligra is the KDE suite of office and graphics applications. Calligra Words is a generic word processor and Calligra Author is a tool for writing and publishing E-books. At this point they are very similar but they are expected to diverge. However, they will always share lots of code.

Zotero is the world's most used citation database software. It is used everywhere in academics and some private organizations. Zotero has a web interface for working with the database and a web service API to connect a word processor and insert citations into the paper being worked on.

Calligra Words and Author are being used by more and more people and a common comment at every new release - including the recent 2.7 one - is a wish to have a connection to Zotero. This project is about providing that.

Expected results: Calligra Words and Author should be able to connect to a Zotero database and let the user insert citations from it in an easy way. The project does *not* include editing the database of citations.

The outcome of the project should be a so called "docker" in Calligra terms that lets the user connect to a Zotero database and insert citations from it into the text document. The user should also be able to insert a bibliography at a point in the document and have that be automatically generated, a bit like a table of contents.

There is already a working bibliography tool in Calligra Words so you will only have to write the connection to Zotero and connect to the existing bibliography system. Possibly this has to be refactored to work with a remote data source. There is also a similar connector to Google Docs that can be studied and copy code from.

Knowledge Prerequisite: Git, Qt, C++, using bibliographies in a word processor. Most likely Zotero.

Mentor: Mojtaba Shahi Senobari <[email protected]> Note: the mentor and the general Calligra community are not Zotero users.

Project: Cooperative Learning games for Pairs

Brief explanation: Enhance the Pairs Theme model interface to integrate the new xml-schema for the cooperative learning themes in the Pairs game. Further implement some GUI changes to allow the cooperative learning theme to be used more intuitively.

Pairs is an educational game for children. Pairs allows the user to load external themes so that the user can customize the game for her/his own educational goal. A Theme editor is also shipped together with Pairs. This editor allow the educator to produce their own themes.

Expected results: Pairs is able to understand the new theme schema. It also allows you to play following the ‘rules’ in the schema.

Knowledge Prerequisite: Git, XML, Qt, QML, C++

Mentor: Marco Calignano <[email protected]>

Project: Add support for importing tables from LibreOffice Base to Kexi

Brief explanation: Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). See [1] for a start. This could be introduction to later development of complete database import from ODB to a Kexi database.

Expected results: In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.

Knowledge Prerequisite: C++, some Qt, some databases, some XML, software architecture

Mentor: Jarosław Staniek (Kexi maintainer)

First steps:

  • Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.
  • Trying to implement plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb

Project: Reveal oponent's ships when losing a game in KNavalBattle.

Brief Explanation: After losing a game it would be interesting for the defeated player to see the oponent's ships. This way a player is allowed to study the adversary and plan ahead for future matches.

Currently there's a branch on KNavalbattle's repository with some code that already implements this feature. However, it only works on single player mode and has no entry at the settings menu. Some polishing and a thorough review is needed

Expected Results:

  • The feature shall be optional, with a correspondent entry at the settings menu.
  • It shall work in all game modes.

Knowledge Prerequisites: C++ and Qt focused on QGraphicsView.

Repository: https://projects.kde.org/projects/kde/kdegames/knavalbattle

Mentor: Roney Gomes <[email protected]>

Project: Make the number of ships and size of grid configurable in KNavalBattle.

Brief Explanation: Currently the player has not the option to decide how much of each ship will be placed on the sea before a match. This way many users complained that KNavalBattle has basically become a luck game, not allowing a player to define a good strategy for guessing where the smaller ship is hidden.

Implementing this feature can be accomplished by letting the player individually select the quantity for each kind of ship -- something ranging from zero up to a number still undefined -- through a new special menu that will appear during the pre-match stage.

Expected Results:

  • A new dialog menu shall be designed. This menu must contain a chat widget case the game is being played through a network, as well as a system allowing a game to be played only if both players agree on the selected set of ships.
  • The new feature shall work in all game modes.

Knowledge Prerequisites: C++ and Qt.

Repository: https://projects.kde.org/projects/kde/kdegames/knavalbattle

Mentor: Roney Gomes <[email protected]>

Project: Fix as much KBounce's or KNavalBattle's bugs as possible.

Brief Explanation: Simple as the title says. The accepted student will pick a game and within two or three months, with my help naturally, will try to fix as much bugs as possible.

Expected Results: At least three bugs fixed within the scheduled planned.

Knowledge Prerequisites: C++, Qt and a basic notion on how to use Review Board and generate diffs.


Mentor: Roney Gomes <[email protected]>

This page was last edited on 21 August 2013, at 17:26. Content is available under Creative Commons License SA 4.0 unless otherwise noted.