KDE and Google Summer of Code 2015 Wrapup

The combination of Google's Summer of Code program and students working on numerous KDE projects during it  has served as a long and successful tradition for KDE. KDE, being a big organization with a large community associated with it and hosting many projects of different facets provides a lot of opportunities for students to participate in this program and to contribute to an open-source project that they are interested in.
Hence it is no surprise that this year also many students decided to be a part of the world of KDE. 
 
Be prepared for a long, detailed post about many interesting projects and the great results achieved during the season of GSoC '15.
 
1. Porting activities
Many KDE projects are still in the process of porting the code to the new frameworks Qt5/QtQuick and KDE Frameworks 5 (KF5) - the next generation of KDE libraries, modularized and optimized for easy integration in other applications. This year several students helped to make this transition smoother and complete.
 
Aroonav Mishra ported a considerable portion of Amarok to Qt5/KF5 and the porting of the media player is in continuation. R. Harish did this for Kopete.
 
GCompris consists of several activities, wherein each activity is aimed to teach children a different educational lesson. This year Sagar Chand Agarwal and Siddhesh Suthar helped port a couple of GCompris' activities to QtQuick. Almost all the work has been integrated to the master branch and will be available in the next release. 
The educational entertainment software GCompris welcomes any form of help to finish this move.

Mohamed Anwer did his project on digiKam. In digiKam, the communication with the database was done in KIO-slaves, running in separate process. To increase the portability of the application and to reduce the serialization of data between different processes, the decision was made to change the architecture and to move it to Qt5's threads. The new thread-based implementation done during this summer resulted in a much better performance. Also, in numerous other segments of the source code a wrapper for all KIO-related stuff was provided.  The implementation behind this wrapper, which optionally doesn't use KIO anymore, now allows compilation of digiKam as a pure Qt-application without any dependency on KIOFor more information,visit: https://mohamedanwer.wordpress.com/tag/gsoc15/

Vyacheslav Matyushin ported KSystemLog,a utility showing different system protocols to KF5.  While porting the code, he also fixed many bugs and memory leaks. In addition to that, many new features were added like the support for local and remote journald,  filtering of the log entries by priority, improved configuration dialog and more.
Main window showing log entires colored according to their priority. By default, all priorities are displayed. User can select priorities to be displayed
Journald mode configuration widget allows to add remote journals
 
A porting project of a different kind was taken up by Gábor Péterffy who ported Marble to Android. Marble Maps is available now in Google Play and provides navigation and routing functionality using OpenStreetMap's content. Distance measurements, interactive route planning  are available in the first version of Marble on Android.
 
2. KDevelop
 
KDevelop got a new "checker framework" contributed by Laszlo Kis-Adam who you might also know as dfighter. The idea behind this project was to provide a general framework for different static code analysis tools and profilers that can be used in KDevelop. This framework aims to unify and simplify the code infrastructure and to provide a consistent and user-friendly GUI for using such tools in KDevelop. Some existing plugins for cppcheck, Valgrind and Krazy were ported to this framework. The support for code analysers clang-check and pylint was added. The final report contains a lot of detailed information on this as well as a video demo of this amazingly useful functionality.
 
During GSoC2014 clang was integrated into KDevelop in order to use it for source code indexing, syntax checking and highligting instead of KDevelop's own complex implementations for these tasks. Despite the ginormous progress attained last year, there was and is still a lot to do in the area of kdev-clang plugin for KDevelop - bug fixing, adding features, stabilizing the code. This year Sergey Kalinichev worked on the project "Further Clang integration in KDevelop" and extended the feature-set of this plugin with regard to code parsing, syntax highligting, code completion and refactoring. See his final report with couple of examples on this https://sklin0.wordpress.com/2015/08/23/gsoc-2015-final-status-report/.
This plugin is a must try for all KDevelop users!
 
 
3. Multimedia
 
Gurjot Singh worked on extending the animation capabilities of Kdenlive to allow smoother animations as opposed to the traditional keyframes technology. Before this, Kdenlive had support for only linear interpolation of keyframes for few effects and transitions. With the support for animation properties in the open-source multimedia framework MLT, which is used by Kdenlive, and with the integration work done during this GSoC by Gurjot, almost any entity can be now be animated in Kdenlive. Gurjot added configuration widgets for different interpolation types used for animations -  which can be discrete, linear, smooth spline or a mix of them. Read more here: https://kdenlive.org/node/9443 
 
Krita got a new tangent normal brush engine. Read more on Wolthera van Hövell tot Westerflier's blog http://wolthera.info/?p=770 who was the GSoC student working on Krita.  Wolthera also addressed Krita's widget for picking a colourspace (http://wolthera.info/?p=783).
 
Veaceslav Munteanu continues to contribute to digiKam for the third GSoC-program in row. This year, he implemented Advanced Metadata Hub - a new component that gives the user more control over the metadata management in digiKam. With this component it is possible now to define in addition to digiKam's default namespaces new user-specific namespaces. It is also possible to edit new namespaces, disable them temporarily and to change their order which influences the search results in digiKam. Furthermore, lazy metadata synchronization was introduced to digiKam. When changing the metadata (applying a tag, rating or comment to an image), the synchronization process could slow-down the system for bigger image collections on slower (or remote) hard-disks. With the new lazy method the synchronization can be optionally postponed to a later point and the user doesn't experience any immediate slow-down on metadata changes.
 
 
 
4. Education
 
KStars, the outstanding open-source astronomy software, is now able to display artistic drawings for all modern constellations (https://en.wikipedia.org/wiki/88_modern_constellations_by_area) - thanks to the work done by M.S. Adityan during this summer. One of the main parts of the project was to understand how to map the image onto the sky map. The screenshot below shows art images for all 88 modern constellations that can be optionally switched on and off.
 
Daniel Leu contributed a job scheduler to KStars that will help automate astrophotography sessions. A job is specified as per the information provided by the user such as the object under observation, altitude, angular distance to the moon and the execution starting and finishing times and the job triggered by the scheduler communicates with the teleskop via the Ekos interface (http://api.kde.org/4.x-api/kdeedu-apidocs/kstars/html/namespaceEkos.html) and performes a slewing of the teleskop, loading of the sequence and its execution. To simplify the selection of the object to be observed, the user can now provide a FITS image and the object coordinates are determined out of the information stored in the FITS file.
 
 
David Kolozsvari joined the Marble team this summer and implemented a couple of nice features. He improved rendering of labels (street names, building names etc.) that are now drawn along the curved street paths. Before this, the labels were just shown "somewhere" on the map. As a result of his work:

Besides this, some smaller improvements and bug fixes were made by him. He has started working on improving Marble's Print support as an extension to his contribution to Marble during GSoC. Check out his blog for demos and more (http://koldavidgsoc.blogspot.de/2015/08/gsoc-2015-summer-with-marble.html).

 
The second Marble-related GSoC-project was about the handling of OpenStreetMap (OSM) files. Marius Stanciu added support for opening OSM-files, viewing, editing and exporting them. The main part of the project was to provide an OSM editor for Marble. Plenty of features can be implemented in such an editor and Marius implemented it for tags and relations. Tags allow annotation of the placemarks to provide information on them beyond the location coordinates. With the help of relations, logical relationships between different points on the map can also be modeled. Take a look at Marius' blogs for more screenshots and examples.http://mariusoc.blogspot.de/2015/08/wrapping-things-up.html
 
 
LabPlot, the data plotting and analysis tool for KDE had 3 students this year.
Minh Ngo added visualization of 3D-data to LabPlot by utilizing the very powerful library VTK. Different data source sources are supported - external files with 3D-data, LabPlot's spreadsheets with column-based organisation of data and LabPlot's matrices with matrix-like data structure. The data can be visualized as points in 3D-space, curves and surfaces. A lot of options for the 3D-plots are availble and can be adjusted by the user in a user-friendly GUI. Furthermore, several zooming functions were implemented that allow a comfortable navigation through the data. Because of the huge complexity of this topic, not everything could be implemented in such a short period of time. Minh is eager to contribute further to the projects and continues working on 3D-part of LabPlot with the aim to push LabPlot's 3D-functionality to much higher level.
 
Ankit Wagarde added a very useful tool to LabPlot that allows to extract data from images - the Datapicker. After import of an image and setting the reference points, the user start to select the data points on the image that get automatically converted into numbers. Those numbers can be used in your own plots where you can e.g. combine your own results with results of another work where the imported image was taken from. Different scalings are supported as well as data point with error bars. Arbitrary number of curves on the plot from the imported image is supported whereas different symbol styles can be used to differentiate the appearance of the curves
 
 
Currently, LabPlot is lacking any scripting functionality and has a very limited set of features to generate new data. On the other hand, Cantor - another KDE-education software - unifies the usage of different open-source computer algebra systems (CAS) like Maxima, Octave, etc. in a single program. Garvit Khatri integrated Cantor into LabPlot. This allows now to perform calculations, to produce and to analyze data with the CAS of your choice, to plot the generated data and to modify the appearance of the plot directly in LabPlot. The user benefits now from the very powerful CAS languages and from the numerous editing features for plots in LabPlot. The screenshot below shows a simple calculation done in python3 with scipy/numpy and the visualization of the calculated data in LabPlot's manner.
All in all - a very nice example for how two open-source projects can collaborate and bundle the man-power and the available features two produce software of much greater value.
 
5. Misc
KDE's universal document viewer Okular was extended by Saheb Preet Singh to support PDF tags, layers and linearized documents. PDF tags allow to add additional description to different structures in a PDF document. Information can be stored on different layers of a PDF file - a feature allowing to make some content visible or invisible in the document. In Okular, tags and layers are shown in a tree-like view and can be searched and filtered for. The third new feature in Okular, the support for linearized PDF documents, make viewing over the internet faster - the document is streamed over the network and the user can start to read the document without the need to wait until the complete file is downloaded. 
 
balooctl, the command line tool to control Baloo, KDE's indexing and search framework, got a lot of useful features allowing to get a better overview of the current state of Baloo. The main part of the project taken by Pinak Ahuja was the Baloo Monitor - a GUI tool showing Baloo's current state, file being indexed, total progress and estimated remaining time
and a button to suspend/resume indexing. On the way to these results, Baloo's architecture needed to be partially redesigned and re-factored to make the interaction of this tool with Baloo's back-end possible.
This work went far beyond the original proposal and was done in close collaboration and with the help of the project mentor. The monitor has been added as a KCM to KInfoCenter.
 
 
Aleksandr Mezin improved the KDE System Settings by adding a new configuration module for pointing devices. This module unifies now the functionality that was previously spread between Mouse and Touchpad KCMs.
With the help of KDE's visual designers Aleksandr was able to create a nice looking UI where the pointing devices can be configured at the same place. Currently, all properties of libinput driver can be configured in this new module for X11 as well as for Wayland (with patched version of KWin), whereas a better and more complete support for evdev and synaptics drivers is to be expected in the near feature. 
 
Ranveer Aggarwal worked on the implementation of an interface for installing 3rd party plugins for different KDE applications like additional codecs for k3b, KIPI-plugins for Gwenview, etc.
3rd party plugins can be fetched from the system packages manager, the installation is handled with the help of PackageKit that unifies the handling of different package management systems.
Ranveer's final report exemplifies the usage of this new interface for couple of KDE applications:
 
KDE Connect https://albertvaka.wordpress.com/ is a very useful application for KDE and smartphone users that allows to control your KDE desktop with the smartphone, to receive the phone notifications on your computer or to interchange data between different devices. This year Vineet Garg improved the secure communication over the network and added the support for TLSv1.2 to KDE Connect. By the way, the first version of KDE Connect was written during GSoC2013.
 
The KDE infrastructure got a new very nice service - KDE Reportshttps://reports.kde.org/. In this web app, contributed by Ahmed AbouElhamayed, graphical reports for KDE related statistics are shown. Charts for the current number of bug reports, total average time taken to resolve a bug, number of commits, review requests, social media activities and for many many other things allow you to get better insights into the ongoing KDE activities. 
Check out recent Ahmed's blogs for a number of useful examples
 
Besides the porting activities mentioned above, Kopete got help from two more students this year. Nikolaos Chatzidakis worked (and is still working on it even GSoC is already finished, on a GnuPGP-plugin for Kopete to allow secure encrypting, signing, decrypting and verifying of messages via GnuPGP. Joseph W Joshua contributed to a new history plugin for Kopete based on a SQL-database. The idea behind this plugin is to store the messages in a database and to provide an interface for quick and advanced searching in the history.
 
Final remarks:
For many students participated in this year's GSoC, the contribution to the open-source community and especially to KDE didn't end with the final reports written in August. Many students are still in touch with their mentors, continue to work on their projects or are even looking for new tasks. All in all, a great GSoC season for KDE with remarkable achievements. We're looking forward for GSoC2016!