Google Summer of Code 2014 Student Projects

Google Summer of Code and KDE have been going hand in hand since quite a while now. The community has been responsible for initiating young students to the world of FOSS and giving them a first-hand experience of real world programming, while they hack the summers away on projects that they love under the guidance of mentors who add to the newbie’s skills and understanding of coding and give it an entire new definition. So; three months of summer turn out to be the most productive ones for students, the mentors, the KDE Developer community as well as each and every KDE user who gets to experience the first hand awesomeness of all the hard work and efforts put in by the newest additions to the KDE community.

10 years of GSoC

Here is a glimpse into all that happened and all the exciting work to come your way in the form of the 42 successful student projects for GSoC 2014 with personal quotes and experiences shared by the students about what they loved the most and what they got to learn during GSoC.

Student Project Details

Abhijeet Nikam worked on Active Mail Project which involved the re-implementation of the UI of the present mail composer in QML via creation of an API, thereby successfully simulating the touch experience. Pertaining to his experience he shares, “You get to do something important and the amount of effort your mentor takes to guide you is amazing. I learnt so much from Michael. You just start becoming a part of the family! All that I learnt: from my code style, to making commits, Qt-QML programming, writing a wiki or discussing the implementation - and there's still so much more is owed to GSoC. Your mentors make you learn a lot!”

Abhinav Gangwar created a Marble based Geography educational Game with basic political map integration and he feels that, “The best thing about GSoC is getting guidance from really talented and experienced, not to mention extremely helpful, people. Discussing plans for new features or current issues and getting feedback on your patches for mistakes I couldn't even think of was pretty awesome. To sum it up, I enjoyed it all.”

Ahmed AbouElhamayed worked on the KDE Reports Test Suite, improving its performance with a better structure for saving data and producing reports and also the added facility of generating more reports from newer sources. He says, “Getting to do what I love and learning by doing and facing real problems and the joy of solving them after worthwhile effort is the best part.”
Alexandr Akulich worked on implementing a Qt-based Telegram Connection Manager for network support for Telepathy and has Implemented low-level protocol, encryption, user sign in, user and contacts presence, personal chat features.

Amarvir Singh worked on Semi-Automatic Generation of Language Lessons for Parley.
Aniket Anvit worked on creating a Geogebra-filter for KIG (tool for geometry learning) to facilitate opening Geogebra Worksheets and tool files with support for circles, conics, angles, vectors, lines, constrained-points, graphic-properties(color, style, line-thickness) and some basic macros. He feels,” Getting feedback on your plans and implementations as well as the guidance that the mentor provides is amazing and motivating. Learning from the existing code and architecture and praises from my mentor on my good work are the best bits. I got introduced to XML processing. Transforming an XML representation to another using XSLT (eXtensible Stylesheet Language Transformations) is a lot of fun. I learnt how applications store the data describing their documents in XML format and how they’re read when the user opens a saved document.”

Abhinav Gangwar: Marble Game

Anuj Pahuja worked on porting KMines, KNavalbattle, KReversi, KBounce along with libkdegames to KDE Frameworks 5 and QtQuick2. He loved, quote, ‘Interacting with great developers, constantly learning new things and realizing that your code would be used by people all over the world!’
Ashish Madeti worked to make Plasma Media Center MPRIS compatible, for accepting commands over D-Bus and to facilitate controlling PMC with voice commands via a Simon command plug-in. He enjoyed working on real life problems and huge codebases and communicating with all KDE community members. He learnt coping with huge codebases and how to start working on a (seemingly large) problem. He says,”Thanks to Peter, I learnt using UML and valgrind for tackling problems.”
As of now; the MprisPlayer Simon Command Plug-in maintains a track list for each running (compatible) media player so that the user can play a particular song from the player's playlist just by saying its name.

Avik Pal worked on Sound Visualization for the user’s performance and added a noise filter to Artikulate as well.
Bharath M S ported several GCompris activities to QtQuick2 during his GSoC, learnt to improve the quality of his code and added QML and Javascript to the list of languages he speaks.

Bhaskar Kandiyal worked on Akonadi Commandline/Shellscripting Interface for accessing/modifying the Akonadi datastore and also wrote documentation and man pages for it.
Bhushan Shah integrated Plasma Media Center with Plasma Next, ported it to KF5/Qt5 and did a complete overhaul of the UI in collaboration with the Visual Design Group.

Calin Cruceru implemented polygon editing tools to help users mark specific places with advanced customization in Marble. He feels, “GSoC helped me meet people I share interests and passions with. I loved the interaction with my mentors, ever eager to answer my questions and to share interesting things from their past experiences with me. Meeting my mentors in person at Randa Meetings 2014 and hacking together on Marble perfectly highlights the best of GSoC. It changes one's life by introducing them to such a great community. All of us have worked on personal projects, school assessments, but working within a community is so different and the journey taught me many valuable aspects useful to my career in the future.”

Claudio Desideri worked on porting Gluon Player to Qt5 and added a friend and activity system on the OCS server thus enabling real time chatting between players using XMPP protocol and QXMPP library. He feels,” I love GSoC because I can work with technologies like Qt and QML that are all open. This seems to be like a small factor, but it's really important to me to work with open source because I get to learn, understand, modify and reuse code. And of course there's the community. Oh I love KDE people very much. Kudos to everyone for making this community so great and perfect!”

David Rosca worked to make libbluedevil async, the main objective being to create a new asynchronous Qt Bluez wrapper library.
Debjit Mondal worked on advanced features and enhancements for Kanagram like the implementation of a text to speech daemon, a fresh and colorful UI via QtQuick framework, a wiki link feature and self-assessment tool enhancement. He says, “I loved to Learn, Code, Commit and save lives. On a serious note, discussing things with knowledgeable people gives you a whole new perspective on writing codes. Seeing your features used and praised by the users gives you immense joy and happiness. And that's what makes GSoC awesome.”

Denis Kuplyakov implemented an outliner for Calligra Author and used openDocument format in conjunction with RDF-metadata. He feels, “I learnt many things, wrote quite some code and I hope the users will love my changes. I also learned to use Unit Tests.”
Giorgos Tsiapaliokas worked to port Plasmate to kdevplatform and converted plasma tools like plasmoidviewer as kdevplatform plugins which will make them possible to use from Kdevelop.
Harshita Mistry added support for importing odb database files from LibreOfficeBase to Kexi (Visual Database Creator). She thinks,”GSoC is an effective way to contribute to FOSS. GSoC is a nexus between the people of this community which fosters great bonds among the members.”

Ivan Čukić: Activities - The second burst of Plasma [Plasma, KActivities, Baloo]

Ivan Čukić worked to bring about activities to a new level, to make them truly useful and properly integrated with the environment for Plasma with a new activity switcher on the path to implementation.
Karan Luthra worked over the codebase to bring Trojitá closer to an upcoming 1.0 release, mainly in UI
fixes and various polishing. He thinks the best part of GSoC is - ”Working with very productive, smart and motivated people and learning to get code reviews and improve written communication skills. I’m getting to know a lot of open source developers around me and am able to identify myself better as someone who stands for software freedom and collaborative, non-profit work. I’ve learnt minute details of C++ programming which are unveiled only after you have dealt with a large code-base and learnt larger OOP design issues and practices. I’m also learning to read and follow RFCs, and tons of other practices, etiquette, tools around a task as simple as an email. I’m also struggling (and hence learning) to be more productive, more analytical while writing code. I’m trying to fit myself into the different hats of a designer, a programmer, a tester, and then to patiently accept feedback on RB and do the next iteration. Lastly, I have also gotten much more comfortable with using git for more than the pull-commit-push tasks. Yay!”

Kevin Funk toiled on the Clang language support plugin in KDevelop to make it feature compatible with the current C++ language support plugin which contains a self-written C++ parser.
Antonis Tsiapaliokas worked to port Plasma Active Shell to libplasma2 (Qt5, KF5) and QML2. He says,” During GSoC, we were able to work together constructively with our mentor and the rest of the team. After GSoC, we students actually become a part of the team, and this is very important. Also; all the positive feedback that we get from our blog posts is very significant and motivational for us to continue with our work.”
Mohamed Anwer’s project was to add a quick access to colors and labels in a dedicated tree format in digikam.

Mohit Goyal implemented Dirty Presets, Locked Settings in Presets, Cumulative Undo/Redo in Sessions and a Master Brush to encompass all the existing Brush Engines as a part of the Improvement Of Brush Module in Krita Project. Mohit said that he loved -”The fact that I can ask anything, anytime to any of the awesome people - developers and artists. Just the day before, my mentor Dmitry taught me about templates and shared pointers in C++. He gave me two books to read and some code to play around with and refactor to suit the designs mentioned in the books. That is something that we don't even get to know about in college. Also; the fact that users get to use your implemented features/bug fixes directly is cool too! After implementing my first feature - Dirty Presets - I realised that having a design in mind from the beginning is useful. Before this I always used to start off coding with a half-baked idea in mind. But now, I’m focusing more on the design aspect before actually stepping into code. A sound design will always create sound code is my biggest lesson from GSoC.”
Nikolaos Chatzidakis had Plasma Media Center - DVB Support as his GSoC project which allows PMC to play DVB television using a tuner.

Nilesh Suthar implemented a widget app for an Address book based on KPeople showing recent details of people like emails, chats, shared notes, files, events. Nilesh thinks that, “GSoC is awesome because I get to learn new things from my mentor Martin. My work gets quickly reviewed and I get very useful suggestions from him. During GSoC, I improved my communication skills and have a better understanding of KDE projects now.”
Stephan Platz in his Cryptography in Trojitá Project added support for PGP and S/MIME to Trojitá to facilitate reading and writing of encrypted and signed PGP and S/MIME mails. For Stephen the best thing about GSoC is “Being able to work on an open source project and using that for my studies instead of visiting yet another (boring) lecture.”
Percy Camilo Triveño Aucahuasi improved the KDE-Edu/Analitza math library and added JIT to compute functions, basic Linear Algebra commands and a better matrix manipulation support during the summers. He also formulated the New API documentation.

Percy Camilo Triveño Aucahuasi: KDE-Edu Analitza Enhancements

Rupanjana Mitra added the splitter feature, spell check, highlighting capability for changed cells and merging documents to Calligra Sheets. She says, ” I got to speak to a lot of people who really know how to get work done and the team work is great. I learnt that you have to keep on searching and trying. Things do happen but it takes work! My mentor and developers have really guided me step by step, and the more I delved into things, the huge Calligra suite started becoming more interesting. I got to learn quite a bit about frameworks and how to rightly utilize documentation. I’ve really learnt how to coordinate and learn, ask pertinent questions and garner help. “

Sanjiban Bairagya implemented the Interactive Tours feature in Marble. He feels,” The best thing about GSoC other than the fact that it can be done entirely from home, and any time during the day, is that you get so much hands-on experience on almost everything related to coding, and you get to learn so much more. You get to interact and work with people who’ve created entire softwares, and who are so much more knowledgeable than anyone, something which people rarely get the advantage to experience. I learnt how object oriented technology can be practically applied step by step using Qt, to create wonderful stuff. Working with my mentor is a pleasure. I am getting to learn how to create code, how to optimize it, how to test if it's correct, how to design a plan, and everything that is required. Official communication is an important part of GSoC and it has changed me tremendously as a person itself. I personally consider myself to be a lucky guy to have chosen Marble as my project because my mentor Dennis Nienhüser and the others, are among those people who will never put you down. And that in turn gives you the motivation to work even harder. The kind of real-world experience I’m having currently in GSoC is helping me build up my concept in object-oriented programming more and more, and I'm sure this will help me later in future in every related field.”
Sbrown worked on Krita Material Painting and Preview Rendering for GSoC.

Sergey Kalinichev created a framework that provides unified access for project parsers to all types of include directories/files and defined macros for KDevelop.
Shourya Singh Gupta integrated KIPI tool components in Batch Queue Manager (BQM) so that they’re visible in the “Control Panel” section of the BQM dialog of digiKam. He says, “The best part of GSoC is getting to learn so much from our very knowledgeable mentors. Plus, the feeling when you see your name in the list of contributors, that feeling is simply superb. I learnt how to write very neat and sophisticated codes. I’ve also learnt to use very useful debugging tools like valgrind. GSoC also taught me to be well planned and deadline-oriented.”
Somsubhra Bairi worked to make Krita Animation usable via useful animation tools like multiple animation layers, auto frame breaking feature, animation import, Onion skinning, frame extension, layer locking, animation player, and much more. He claims that during GSoC,” I learnt how to write efficient code that performs well both in time and space. Not to mention the cool C++ features and design patterns I uncovered along the way.

Denis Steckelmacher developed a KDevelop language support plugin for QML to highlight QML, recognize Javascript variables, types, functions, objects and QML components, script bindings and properties with code-completion for Javascript/QML objects and some added refactoring operations. The best thing about GSoC for him was,” I push something on to the repository, and minutes after that several users are already saying that the feature is cool and works well. KDevelop is a big project having many people working on it, and the community is very responsive.”

Denis Steckelmacher: Improving QML/JS Support in KDevelop

Veaceslav Munteanu ported Greycstoration CImg interface in digiKam to GMic containing image processing algorithms that are easy to use and integrate.
Vedant Agarwala worked on Lyric Support Improvements for Amarok.
Vijay Dhameliya added an Astrophotographs browser and enhanced features like Moon Phase Calendar, Almanac tools and the Solar System Viewer in KStars.

Wenchao Li worked on the Calligra plugin for drawing variable thickness lines. He feels,” Communication is quite important. I'm trying to share more about my experience and ask more questions when I meet problems. I also learnt how other talented people code from the code base and follow the coding style.”

Yang Qiao affiliated with the KDE Solid iOS Integration project which allows seamless fusion of your iDevices with Plasma desktop environment to simplify daily tasks like Ping, Sharing Photos, MPRIS, Clipboad Synchronization, Battery Report, Mouse Pad, Calendar events/Reminders/Contact Book synchronization and much more. He says, “I’ve been getting to know more and more about useful libraries, tools and am inspired by others ideas. It's quite a pleasure to learn, design and develop such a cool software for the community and meet experienced developers.
Marcin Ziemiński added support for OTR protocol in KDE Telepathy which enables end-to-end encryption of text messages and peer authentication (Q&A, Shared Secret Key, Manual Fingerprint Verification) and lots more.

Thank You Google!

A very very big thank you to Google for making the dreams of so many students come true and for encouraging them to work on such awesome features that enrich the user experience of proud KDE users around the world.


This is the effective content and Google Summer of Code and KDE have been going hand in hand since quite a while now. The community has been responsible for initiating young students to the world of FOSS and giving them a first-hand experience of real world programming. learnt so much from Michael. You just start becoming a part of the family! All that I learnt: from my code style, to making commits, Qt-QML programming, writing a wiki or discussing. Thanks a lot for sharing this content with us.

By james305 at Wed, 2015/05/06 - 10:27am