SoK/2022/StatusReport/Samarth Raj

From KDE Community Wiki

Adding new Activity to GCompris

GCompris is an educational software for kids in the age group 2-10 years old. It has more than 150 activities. This software has a huge userbase, with over 50K+ downloads on the Google Play store alone. GCompris is used to help older children understand the relationship between numbers, learn basic arithmetic operations, train them in analytical reasoning, and improve communicative skills as well as spelling, reading, and writing.

Task

The objective for SoK'22 is to add a new activity. I proposed adding left and right-click training activity to the project.

In this activity, the user decides which click to press to move the animal to their respective houses placed on the top left and right sides of the screen.

Blog Posts

Timeline

January (Week 1 -> 24 Jan to 30 Jan)

During the first week, I mostly tried to read and understand other activities and see the implementation in their code. I initialized my activity in the GCompris this week and started working on the basic layout of the activity.

February (Week 2 and 3 -> 31 Jan to 13 Feb)

I applied the basic layout of the activity inside the project, placed the rectangles on the screen for the animal houses and for the animal display area. During this time I became more familiar with the documentation of Qt/QML, as I spent significant time trying to understand the implementation of the elements(rectangles, images, types of variable declaration) I have to add to the activity.

February (Week 4 and 5 -> 14 Feb to 28 Feb)

After the layout, I started making these components functional, this was a time when I struggled to implement the functionality. Mentors advised me to read about animation and states in Qt/QML, this really helped and I saw others' implementations too for better understanding. I learned that in Qt/QML we can implement anything if we know about the right thing.

March (Week 6 and 7 -> 1 Mar to 14 Mar

In March, I started by making the initial implemented code clean, so others may understand it easily. Removed the hard coding from the animation part of the animal card from their initial position to their final position (their houses). Improved the implementation of house images of animals, so that their proportion doesn't mess up in smaller windows. After correcting the initial mistakes, the next task was to find a way to randomly place the animal cards avoiding overlap with each other. With help of my mentors, I found a way to implement this too. I've briefly explained my approach in the blog.