Finishing started activities in GCompris

Project Name: Finishing started activities in GCompris

A Brief Description: My SoK project was to finish the started activity Programming Maze which was started as a GSoC 2015 task.

  • Programming maze is an activity which aims at teaching the execution of a code and use of functions in a code. The child would be given a set of instructions and he has to add them in the Main Function area and the Procedure area such that Tux follows those instructions and reach the fish without encountering a dead-end.
  • The basic working code was laid down and my aim was to re-work the code base and split all the instructions in different files, fix the reported bugs, add new levels, improve UI, add intro instructions, and implement keyboard controls to the activity.

Status of the project: Complete. It is queued and will be merged into master after the latest release of GCompris.


1. First of all, I started reworking code-base by creating different files of all the instructions (MOVE FORWARD, TURN LEFT, TURN RIGHT, CALL PROCEDURE) and moved the already implemented code to the respective files.

2. Next aim was to change the code in the MOVE FORWARD instruction file and implement the new logic of movement of TUX in the coordinate system. (previously it was based on tracking the current indexed movement of TUX with the dataset of the level)

3. Then I made many modifications in different files so that they could be decorrelated from the JS file as much as they could.

4. Next thing I did was I made a pseudo flowchart to see and plan how the algorithm will work and how the execution will flow in the code among the files and send and receive signals to start the next execution.

5. After the algorithm was confirmed to be worked on, I continued implementing it and finished the code-rework around 7-8 days.

6. The next task was to make some changes to the drag and drop implementation of the activity to handle instructions. I added the feature to edit the instructions in different code areas.

7. After this, I worked on improving the UI of the activity (screenshots can be seen below) for which I created the background image, collected icons, added README and set everything such that they won't stretch on different screen sizes.

8. Finally, I added keyboard controls to the activity to make it playable even in keyboard-only mode.

  • Screenshot before I started working on it:


  • Screenshots of the activity on completion:



Work report

Phabricator link:

Phabricator task:

Link to commits:

What I learnt during SoK

  • Qml
  • Javascript
  • Git
  • Got more familiar with work on Phabricator and other KDE tools
  • Creating/modifying SVG images

This page was last edited on 19 February 2018, at 11:57. Content is available under Creative Commons License SA 4.0 unless otherwise noted.