When I saw that KDE will be available for the Google Code-In I immediately knew that they would the organization I would like to work for during this event. I have used KDE in the past, but recently I have switched to XFCE for better performance. When the GCI started I moved back to KDE and I was surprised how much it had improved during my absense!
KDE is a desktop environment for the X Window System for Linux. KDE is vastly popular among the users of Kubuntu and Fedora-KDE. KDE comes with a bunch of preinstalled software: Marble, KDevelop, etc. It also has one major advantage over other desktop enviroments; it has a central git repository which makes development a load easier.
Marble? What is that?
Marble is a map viewer developed in C++. It is a swiss-knife map. It has views from the space, and the usual roadmap is in it as well. It has a very nice spherical projection also, where (as added bonus) you can view the stars, which is quite well made.
What did I do for Marble?
My first GCI task was to port the saving and restoring feature of the Qt Marble App to the KDE Marble App. This was quite easy, as it only involved creating the settings variables and then reading from and writing to them. My mentor was Earthwings, who was very happy to help me even with some dumb and pointless questions I had made. Earthwings even pointed me to the exact location where to make the changes. It was my first contribution to KDE. It was amazing.
My second Marble task involved relocating the popup window which shows up when you click on a placemark. It used to center the map on the placemark and show the popup next to it on the right. This was not right as for smaller screens this could go out of screen. My solution was to rotate the map so that the placemark is at the 1/4th of the screen. This resulted in the popup being approximately placed in the middle. This task was a bit harder, because I had to find out how marble works with its components and where to actually write the code.
KDevelop? I think I might know what it is.
So, KDevelop. Well it is an IDE. I will be very honest here. I have never thought KDevelop would be a good IDE. But after trying it out a bit more due to me developing it for a while I quickly realized that it is amazing. Simply amazing. So fast, so cool.
And what did I do for KDevelop?
My long dream was to work on an IDE, because I am a software engineer at heart and I love to make tools. So, with GCI I had the opportunity to work on one. I mostly did work on the Python support plugin called kdev-python. I have to stop here for a little. Python? I never wrote Python that much to write for a plugin for an IDE. Well, it turns out that by writing this plugin I managed to get a much wider understanding on how the Python language works. Another great point for GCI. So back to topic. Where was I? Ahh yes, kdev-python. Well my first task involving this plugin was to fix some problems with the built-in library support. I ended up adding the __add__ (and siblings) functions to most of the builtin classes so that the static analyzer of kdev-python understands what type a+b will be. As a bonus, I also added the docstring to it.
My second task with kdev-python was to fix the warning that showed up when the __new__ method’s first argument was named cls. kdev-python complained that it should be self but the standard is that it should be cls. Now fixed. :-)
The person that helped me here was scummos. He is awesome guy. He helped so much I couldn’t thank him enough. I truly suggest going to #kdevelop and asking for a task. It will make you learn and in the path you will learn something new.
As GCI is still going on, I will update this post with my other tasks.