May 26, 2018

Que el escritorio Plasma es una maravilla lo sabemos todos: cada vez más rápido, cada vez más eficiente en consumo de recursos, cada vez más funcional… y todo ello sin perder la esencia de su alta personalización y configuración. Es por ello que me complace compartir este vídeo donde se ve a la elegancia hecha Plasma 5.12 de la mano de Michał Dybczak.

La elegancia hecha Plasma 5.12

Os invito a apreciar la belleza del siguiente escritorio Plasma 5.12 con Kvantum que nos muestra  Michał Dybczak en un vídeo de poco más de 3 minutos. Es espectacular diseño que seguro no te deja indiferente.


Por si tenéis curiosidad de qué elementos a personalizado os los comento a continuación:

Utiliza Manjaro-KDE  con el tema breath y la combinación de colores breeze-dark. Los iconos son Dex KDE S y utiliza el tema Aurorae Glass-Kv.

Por otra parte, para la interfaz usa kvantum-dark sobre el tema KvGlass, y para completar la personalización utiliza el Latte dock y los menús globales de Active Window Control  (AWC) que le proporcionan un mayor grado de personalización. Si tenéis dudas de como lo ha conseguido integrar todo os aconsejo que le pongáis comentarios en el vídeo.

¿Qué es Kvantum?

Kvantum es una creación de Pedram Pourang, (a.k.a. Tsu Jan que nos proporciona un motor para temas basados en objetos SVG para Qt4/Qt5, KDE y LXQt, que focaliza sus esfuerzos en proporcionar elegancia, usabilidad y eficencia.

Kvantum lleva por defecto un tema oscuro inspirado en el tema por defecto para Enlightenment. La razón por la que nació Kvantum fue la creación de temas realísticos pero poco a poco las posibilidades crecieron y ahora es posible crear todo tipo de temas: fotorealisticos, cartoon, 3D, planos, recargados o minimalistas.

Kvantum tiene su propia sección en la Store de KDE.

La elegancia hecha Plasma 5.12 y Kvantum

Más información: Kvantum


So… My blog originally started out as a book review blog, and to celebrate its return (we moved from a home-hosted server to something cloudy), let’s talk about two gosh-darned awful books.

The thing is this: I’ve been so busy with actually maintaining a 600 kloc project that I’ve neglected keeping up with the changes in the language the project uses. Yet C++ has changed a lot, even if our codebase hasn’t. I did buy Stroustrup’s C++11 Programming Language book, but never had time to read it.

And now we’re at C++17. So I thought I’d get a couple of books with C++17 in the title to help me figure out what has changed, why it has changed, how it has changed and what the changes are good for. I got two books from Apress, which is a Springer imprint.

So let’s go for a quick syntax overview. C++17 Quick Syntax Reference. The author, Mikael Olsson, is a Fin, and weirdly enough his bio is smaller than the technical reviewer’s bio, Massimo Nardone. Massimo also gets his picture printed, Mikael doesn’t. Judging from the layout, the book itself is obviously either meant for pre-school children or people with vision problems even worse than mine: the letterpress is enormous. All that would not be a problem, but…

A quick syntax reference has no business explaining how to choose an IDE or how to create a Hello World application. A C++17 syntax reference should also teach modern, 2017-level C++, not 1972 level C. The final chapter, Chapter 27, explains what Headers are, Why Use Headers — with this gem of an observation “C++ requires everything to be declared before it can be used.” Then it goes on the show how to #include a header — heady stuff! After some more kindergarten stuff it finished up explaining include guards.

The book isn’t actually written in broken English, but it is unreadable all the same. Just look at this quote from page 58:

“In addition to passing variables by value, reference, or address, a variable may also be returned in one of these ways. Most commonly, a function returns by value, in which case a copy of the value is returned to the caller.”

Okay, writing this book was a waste of time for the author, unless he’s getting rich from it, which I doubt. It’s a waste of time for the reader, and spending more time on it is going to be a waste of time for both me, and you, my reader. The book will be pulped and recycled.

Next. “Clean C++”: Sustainable Software Development Patterns and Best Practices with C++17″ by Stephan Roth.
Same publisher, same awful print quality, but since Stephan produced a lot of text, the font size is very small. This time the author gets his mugshot printed, and the technical reviewer, Marc Gregoire not. Marc is Belgian, Stephan German and I suspect that the copy editor was Martian. The very first sentence is already broken:

“It is still a sad reality that many software development projects are in bad conditions, and some might even be in a serious crisis.”

The author then continuous riding his hobby horses, even quoting the long-discredited “broken window” theory.

Some things are nice, the author uses actual code samples from actual projects, like Apache OpenOffice, to show problems. Some chapters have promising titles, like “The Basics of Clean C++”, but then start exhorting the reader that “Names Should Be Self-Explanatory”. I thought I was reading a book on clean C++, not Java for high school students? Apparently, removing the license header from your source files will also make your code more Clean!

“Advanced Concepts of Modern C++” is more interesting, though either I am dumb, or the author was in need of a good editor to help him explain what he means, because much of the text I just cannot follow. I would also have liked some clear explanation of why automatic type deduction is good, while at the same time, we’re exhorted to do Type-Rich Programming. The rest of the book rehashes in an an abbreviated way what was explained much better elsewhere: Object Orientation, Functional Programming, Test Driven Development, Design Patterns and UML.

The book promised to show how to use C++17 to write clean code. Instead it regurgitates every bromide from Code Complete and similar books published in the past two decades without adding anything interesting or even talking about C++17 much.

Maybe I’m hypercritical these days… But this book will also be pulped. In any case, any suggestions for something that will teach me to read and write real modern C++17 are very welcome!

Hi, everyone!

Coding period has finally started and I had done some work in the implementation of LVM Volume Groups creation in Calamares. In this post, I’ll explain how I have implemented it and how my work is progressing until now.

LVM VG creation GUI

As I said here, I planned to create a button to access LVM VG creation GUI in Partition page in Calamares.  This GUI should work in a similar way to the LVM VG creation GUI as seem in KDE Partition Manager. Also it was needed to create some VG widget hierarchy to reuse in other processes (i.e. resize LVM VGs and RAID operations).

Screenshot_20180526_092426Image 1: Partition page in Calamares. Look the “New Volume Group” button.


Image 2: Create New Volume Group GUI in Calamares.

This interface is responsible to create LVM Volume Groups with the selected LVM PVs. After this process, the new LVM VG will be created and now you can create new LVM Logical Volumes in it.

New Classes

There are some brief descriptions about the new classes involved in this process:

  • partition/jobs/CreateVolumeGroupJob: Calamares::Job to create new VGs. I’m planning to create a VolumeGroupJob hierarchy, as seem in PartitionJob.
  • partition/gui/VolumeGroupBaseDialog: Base dialog to Volume Group operations.
  • partition/gui/CreateVolumeGroupDialog: Dialog to create Volume Groups. It derives from VolumeGroupBaseDialog.
  • partition/gui/ListPhysicalVolumeWidgetItem: QListWidgetItem made to store a physical volume reference.


I need to do some fixes before proceeding to the other goals of this project. I’m planning to create the resize VG GUI during this week and try to improve some things in the code that I already created before pushing it to my branch and making a PR to Calamares. I’ve created a video showing these initial implementations, as you can see here:

Video 1: Google Summer of Code 2018 – Initial implementation of LVM VG creation in Calamares

Until the next post. ��

I'm glad to announce the release of KStars 2.9.6 for Windows, MacOS, and Linux. This is a minor bugfix release.

KStars on MacOS with QHY
Here are some the highlights:
  • Numerous scheduler fixes and improvements by Eric Dejouhanet.
  • Fixed long-standing bug where Time zone was not updated correctly from INDI GPS.
  • Fixed Filter Manager settings as it was not updating the database properly.
  • Fixed centering & tracking of empty sky.
  • Fixed Polar Alignment Assistant rotation in the southern hemisphere.
  • Added a method to clear DSLR info in case they were entered incorrectly.
  • Added J2000 support in the Mount Control panel in addition to the standard JNow.
  • Alignment FOV is now always editable.
  • CCD Capture format and directory are now persistent.
  • Guiding is aborted when mount is slewing or parking.
  • Clang fixes by Csaba Kertesz as part of GSoC 2018.
Updated Ekos tutorials for the various Ekos modules are now also available. I should be adding more soon.

May 25, 2018

Hoy 25 de mayo ha sido lanzado openSUSE Leap 15, la nueva versión estable de la distribución del camaleón que sigue con su objetivo de ofrecer una opción muy estable de su producto. Los que me conocen saben que openSUSE fue mi primera gran distribución y que sigue habitando en mis ordenadores principales, con lo que me alegra siempre conocer que sigue en plena forma y que sigue ofreciendo una de las distribuciones más potentes que te puedes encontrar en el mundo GNU/Linux.

Lanzado openSUSE Leap 15, la nueva versión estable de la distribución del camaleón

Lanzado openSUSE Leap 15, la nueva versión estable de la distribución del camaleónEsta nueva versión de openSUSE Leap 15, una distribución comunitaria, está basada en SUSE Linux Enterprise 15  lo cual nos proporciona una extraordinaria estabilidad, una enorme variedad del software más nuevo, una fácil migración a SLE, actualizaciones transaccionales, roles de servidor y  imágenes escalables para la nube y portátiles con Linux.

Otras novedades de esta nueva distribución las cojo prestada del gran blog de Victorhck in the freeworld, el cual ya ha realizado un gran análisis y que resumo a continuación:

  • Kernel Linux 4.12.
  • Plasma 5.12 la versión LTS de la comunidad KDE.
  • Gnome ahora vendrá con Wayland predeterminado
  • Más de 11.000 paquetes de software en sus repositorios
  • Nuevo “backend” de particionado en YaST
  • Firewalld reemplazando a SUSE firewall2

Otros aspectos destacables son:

  • openSUSE Leap 15 vuelve a publicar imágenes “live” del sistema, que pueden ser descargardas en este enlace y probarlas en tu equipo sin necesidad de instalar.
  • Aspecto gráfico evolucionado: Nuevo fondo de escritorio, nuevos colores, nueva página de inicio del sistema con nuevas animaciones, nueva imagen con diseño y fuentes renovadas. Nuevo diseño para la wiki, nuevo diseño de la página de descarga, … ¡Gecko se sigue adaptando a los nuevos tiempos!

Puedes descargar openSUSE Leap 15 en este enlace. Si estás pensando en actualizar tu sistema, no olvides barajar esta… seguro que no te arrepentirás.

Más información: Anuncio de la publicación de la versión Leap 15

February was a big month for the Promo team - we held a long-awaited sprint in Barcelona, Spain from the 16th to 18th. The aim of the sprint was to look at information we had collected over the prior years, interpret what it meant, and use it to discuss and plan for the future. The activities we came up with should help us accomplish our ultimate goal: increasing KDE's visibility and user base.

Nine members of the team made it to Barcelona: Aleix Pol, Ivana Isadora Devčić, Jure Repinc, Kenny, Łukasz Sawicki, Lydia Pintscher, Neofytos Kolokotronis, Paul Brown, and Rubén Gómez. We met at Espai 30, an old factory converted into a social center for the neighborhood. Coincidentally, that is one of the places where the project started -- rather fitting for a meeting that comprised Free Software and communication.

Day 1: Informal Afternoon Meeting

Although Friday was "arrival day" without an official agenda, we could not resist talking shop over pizza and beer. Discussions gravitated towards the website, which will be migrated from an old and clunky backend to a Wordpress framework. The improvement to the framework got us thinking on how we could improve the content, too.

The consensus was that we want to inform the general public about what KDE is - not a desktop, but the community that creates, maintains, documents, translates, and promotes a large body of multi-purpose software. Our software collection does include a desktop environment, but it also offers utilities, games, productivity applications, media players and editors, an environment and applications for mobile phones, development frameworks, and much more.

We should also make sure the website caters equally to the tech savvy and unsavvy, since KDE's software is meant for everybody. The new site should clearly direct users to our products, allowing end users to simply download and use them. At the same time, the website should ease the way for potential contributors to join the community.

Day 2: Espai 30, Stats stats stats, and Improved Communication

At the break of dawn the next day... well, actually, at 10 o'clock, sprint sessions started in earnest. Ivana gave a recap of Promo's main activities over the last year or so, revisiting funding campaigns we promoted and communication tactics we implemented.

Next we looked at hard, cold data, collected from social media accounts, web statistics, and distro popcons (application popularity contests). The bad news is that visits to our main sites have gone down over the last year. The good news, however, is that followers and interactions on social media have seen a significant increase. Although data collected from popcons are partial, it also looks like Plasma's user base is growing steadily.

Want to help us with data-collecting and processing, or have ideas about where we can collect more useful information? Send your suggestions to our mailing list and we'll look into it.

Paul made the team look at bar charts
for the better part of an hour.

The data also helps us pinpoint wins and fails in our approach to communicating with the outside world. We found a direct relation between the traffic to our news site ( and to the main website. Therefore it makes sense to seriously work on increasing the traffic to first, in order to improve the visibility and effectiveness of our announcements and campaigns. We also identified ways to make our social media posts more attractive, which should help them garner more re-tweets, boosts (the equivalent of re-tweets in Mastodon), shares and upvotes, and spread our messages further.

Another way of reaching more people is through events. We discussed Akademy and our plans for promoting the 2018 edition before and during the event, so that news coming out of Vienna in August can reach as many people as possible.

We also talked about visiting other technical and even not-so-technical events. By showcasing our applications and letting users play with them, we think we will be able to increase our user base. In any case, we need to be well-prepared for all types of conferences, so we made a list of essentials based on our previous experiences.

We noticed that even within the FLOSS community, there is a large portion of businesses, organizations and developers who are unaware of technologies that KDE develops. Speaking and setting up booths at technical, but non-KDE/Qt events (like the upcoming Embedded Linux Conference organized by the Linux Foundation), could help solve this problem and even attract contributors for KDE.

Do you have suggestions for events we should attend? Join the Attend External Events task and tell us about them.

This brought us to the discussion on how Promo can help with the long-term community goals, especially the goal of streamlining the onboarding of new contributors.

One of the things we have started doing, for example, is creating a list of simple tasks for beginners. We are also trying to identify where people struggle in the process of joining Promo, and working on eliminating obstacles. On a more one-to-one basis, we want to be able to identify people's skills so we can direct them to teams they can join. This was one of the topics we tackled during the last day of the sprint.

Day 3: Teams, Market Research, and Publicity Stunts

We already noticed there are wide variety of jobs for our team, and agreed it would be more efficient to classify them and assign them to smaller groups of people with the best skills to carry them out.

For example, we'd like to have a smoother communication channel with developers, so that we can better understand their work and advise them on how to promote it. The best way to do this, we thought, would be to recruit developers already in the Promo group as liaisons with their colleagues.

Likewise, experienced YouTubers and videographers can create promotional videos for product releases; journalists and editors can write or help improve blog posts and news articles; and people with a background in marketing can use their knowledge to do some serious market research.

That last thing is important because the Promo team must discover what technologies people use, how they use them, and what they like and dislike about them to be able to market KDE products. We decided to take a step back and work on a market research project that will provide us with solid information on which to base our actions.

Got experience in marketing? Join the effort!

At the same time, we can entice people to use Plasma and KDE applications with straightforward advertising, or rely on the more subtle art of product placement. Regarding the former, we looked at publicity stunts that had helped other community projects in the past, like full page ads in prominent newspapers, or messages on public transport. For example, ads at bus stops in university areas may help encourage students join the community.

Got an idea for advertising campaign which is both effective and cheap to carry out? Share it with us!

As for the latter, it turns out that TV shows and movies sometimes have a hard time when they want to show a flashy computer or mobile device interface. Because they can be endlessly customized, Plasma, Plasma Mobile and the applications that run on them are perfect candidates for the likes of The Blacklist, CSI Cyber, Mission Impossible 7... Okay, maybe we will have to start more modest, but remember that KDE tech was already featured on Mr Robot, albeit as the choice of the villain.

We discussed other ways of indirectly increasing the popularity of KDE, including working with journalists, bloggers and vloggers from outside of our community. We started brainstorming a list of "influencers", journalists and publications.

Do you know somebody with a solid audience on the fringes of open sourcedom that could influence a large group of people? Go and add them to the list.

We also want to improve our presence in businesses. To do that, we would first have to approach businesses and contractors that already work with KDE/Qt-based technologies. The idea is to get them on board and create a marketplace/support network that other companies can rely on when considering a migration to desktop Linux.

While brainstorming other ways to increase awareness, we realized we could improve videos and help them reach a wider audience by adding subtitles. If you would like to help creating subtitles in your language, sign up for the video group and tell us what you can do.


So much stuff still needs to be done...

This was an intense and intensive sprint. The full list of topics we discussed is longer than this report, but we managed to devote enough time to the most pressing issues. We came up with ideas for targets and ways to work towards them that will translate into real results. We are now progressively implementing tasks that will help us reach those targets, but we need your help.

If you think you can help us achieve our goals, please join the Promo group. We have a mailing list, IRC channel, and a Telegram group. You can also take a look at our workboard and leave your feedback on tasks that are in progress.

Developing KDE's software is super-important, but so is spreading the message that the software exists and that everybody, regardless of their level of computer-literacy, can and should use it. That is what the Promo team is all about, and we will keep practicing what we preach.

May 24, 2018

Este año estoy dejando de lado a los eventos que organiza los chicos de Barcelona Free Software. Se me pasa promocionar sus charlas, y eso que siempre creo que son muy interesantes. Espero que me perdonen y que vean mi buena voluntad promocionando la próxima charla en la que tendremos a Docker en los meetups de Barcelona Free Software. Si pudiera, no me lo perdería.

Docker en los meetups de Barcelona Free Software

Docker en los meetups de Barcelona Free SoftwareSegún podemos leer en la página de la Wikipedia, Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux.

Así que si quieres saber más Docker te propongo que asistas al próximo Meetup del Barcelona Free Software donde el gran Alex Fiestas no solo nos lo presentará y nos animará a realizar un taller en vivo.

Los datos importantes de Docker en los meetups de Barcelona Free Software son los siguientes:

Además, recuerda que tendremos el usual “networking” con cerveza gratis incluida. Este meetup está organizado por KDE España, la asociación nacional de usuarios y desarrolladores de KDE, un proyecto de software libre que crea el Plasma Desktop y cientos de aplicaciones usando Qt y QML

No te lo pienses. ¡Te esperamos el martes 29 de mayo

Más información: Barcelona Free Software

¿Qué es Meetup?

Las charlas de Barcelona Free Software se organizan mediante Meetup, una red social que tiene una diferencia básica respecto a otras redes sociales, ya que  promueve la formación de grupos en torno a intereses con el fin de que sus miembros se conozcan cara a cara.

Es decir, los usuarios establecen contacto a través de grupos digitales nuevos o ya creados, partiendo de intereses comunes como política, libros, juegos, películas, salud, mascotas,

Now that Qt 5.11 is released, it is finally time to upgrade the last Qt 1.0 applications out there… No, not really. �� I want to take a look at how well we have kept compatibility in Qt over the years since the first official release.

Qt guarantees source and binary compatibility between minor releases, and we take that seriously. Making sure that you don’t have to rewrite (or even recompile) your application when you upgrade to a newer version of Qt is important to us. However, there are times when we need to make bigger changes in order to keep Qt up to date. This is done in major releases. Since the release of Qt 1.0 in 1996 (almost twenty-two years ago), we have broken source compatibility four times: in 2.0, 3.0, 4.0 (some of you may remember that as a painful transition), and 5.0.

We do try to keep breakages to a minimum, even in the major releases, but the changes do add up. This raises the question: How hard would it be to port a Qt application from Qt 1.0 to 5.11?

To find an answer to this question, I took the tutorial example from the Qt 1.0 release, and tried to compile it against Qt 5. Since the Qt archives only go back to version 1.41, I actually had to retrieve it from ancient history which has been preserved through four different source code control systems …but I digress. Its name is t14 because it is the 14th and final chapter of the tutorial.

Here are the steps I needed to make to get it to build and run.

  • Import tutorial 14 from Qt 1.0 10 files changed, 798 insertions(+)

    This is the state of the art: the official recommendation from Troll Tech (we weren’t Trolltech yet) on how to write programs with Qt 1.0, in 1996.

  • Translate to qmake 3 files changed, 2 insertions(+), 148 deletions(-)
    Before qmake, there was tmake. tmake was written in Perl. The basic syntax was the same, except that qmake no longer allows embedding Perl code in the project files. This is probably for the best…

    Also, tmake was not public, so we would generate Makefiles for the release packages. Having completely different internal and external build systems added excitement to the release process.

  • Fix include file names 4 files changed, 8 insertions(+), 8 deletions(-)
    Back in the old days, Windows only allowed eight character file names. We did have proper include files on Unix, but if you wanted your code to be portable, you had to use wonderful names like "qscrbar.h" and "qbttngrp.h".
  • Add missing includes 1 file changed, 3 insertions(+)

    Dependency on indirect includes was a problem back then as well.

  • Change TRUE/FALSE to true/false 1 file changed, 13 insertions(+), 13 deletions(-)
    Kids these days. They don’t know how lucky they are. We had to make our own bool type.
  • Fix things moved to the Qt:: namespace 3 files changed, 15 insertions(+), 15 deletions(-)
    The Qt namespace was introduced in 1998 … as a class, since we didn’t have those fancy namespaces back then.
  • Remove “name” argument 6 files changed, 26 insertions(+), 26 deletions(-)
    All constructors of QObject subclasses used to take the object name as a parameter.
  • The QScrollBar API has changed 1 file changed, 5 insertions(+), 5 deletions(-)
    Sometimes we have to get rid of old, bad APIs. Having individual setter functions is much better than a constructor that takes 7 arguments.
  • Use QString instead of const char * 2 files changed, 2 insertions(+), 2 deletions(-)
    QString has been in Qt since 1994. It used to be 8 bit Latin1 with an automatic cast to const char*, so the API would use const char * arguments. Unicode support was introduced in Qt 2.0.
  • warning() is called qWarning() now 1 file changed, 1 insertion(+), 1 deletion(-)

    We avoid putting identifiers into the global namespace. Except for the letter ‘Q’. We own that.

  • Remove calls to old QApplication functions 1 file changed, 2 deletions(-)
    Qt does the right thing automatically these days. In 1996, most displays used 8 bits per pixel. You had to tell Qt if you wanted to use other colors than the 256 standard ones.
  • Replace QAccel with QShortcut 1 file changed, 4 insertions(+), 3 deletions(-)
    QShortcut is more powerful and easier to use, and the name is not an abbreviation. It was introduced in 2004.
  • Fix repaint logic 1 file changed, 7 insertions(+), 7 deletions(-)
    In the ’90s, we could just paint directly onto the widgets whenever we wanted. Nowadays everything is buffered and composed, so we have to make an update request, and later repaint the widget when we get a go-ahead. Fortunately, this simplifies the logic.
  • QObject::killTimers() doesn’t exist anymore 2 files changed, 3 insertions(+), 2 deletions(-)
    This function was just too dangerous. It would kill all timers belonging to an object, including those used by Qt internally. Now you have to kill timers individually.
  • QWMatrix is now QMatrix 1 file changed, 2 insertions(+), 2 deletions(-)

    A simple name change.

  • QWidget::setBackgroundColor() is gone. 1 file changed, 3 insertions(+), 1 deletion(-)
    Background color is no longer a separate concept: it’s wrapped inside QPalette together with all the other color roles. Also, child widgets are now transparent by default. We have to tell Qt to draw the background.
  • Can’t fill pixmap with contents of widget anymore 1 file changed, 1 insertion(+), 1 deletion(-)
    We use a transparent pixmap instead, since Qt supports that now.
  • Rectangle painting has changed since Qt 1.0 1 file changed, 1 insertion(+), 1 deletion(-)
    This is the worst incompatibility so far: In Qt 4.0 QPainter::drawRect() was changed so that “a stroked rectangle has a size of rectangle.size() plus the pen width”. Therefore, we need to subtract the pen width (i.e. 1) before passing the rectangle to QPainter.

Now we have a fully functional port of the tutorial example, and here is a screenshot:

t14 take one

Oops… Some of the text is clipped. It turns out that the example used hardcoded sizes and positions for most of the elements, and font sizes have changed a bit since 1996. The solution is to use QLayout, which was not available in Qt 1.0 (the first version was added in Qt 1.1, and it was completely rewritten for 2.0).

With this change, everything looks as it should:

t14 with layouts

So, what did we learn? It did not take that much effort to port tutorial 14 from Qt 1.0 to Qt 5.11. It probably took me longer to write this blog post. Most of the 1.0 API still lives on in recognizable form. The incompatible changes have improved the usability, readability and safety of Qt code.

This was just a small example, of course. Porting a full-sized application across multiple major versions would probably be more difficult. Fortunately, we have a vibrant Qt ecosystem with several companies offering consultancy services .

The post Porting guide from Qt 1.0 to 5.11 appeared first on Qt Blog.

May 23, 2018

Hi everyone,

The first week of the coding period was great and I got to learn a lot of new things. My mentors help me on every stage and the work is going on as planned ��

The aim of my project is to create kids interest in drawing, designing, animations, and graphics through educational activities in GCompris. I started with the “Drawing” activity. This activity will provide the tools and workspace to the kids for drawing beautiful arts and know about the basic drawing tools. This activity was started in the previous GSoC, but it still requires a lot of work and new tools implementations. The main aim is to provide as much as possible canvas region to draw on. I and my mentors decided to make a foldable-panels based UI. Here is the first look at the activity, it still needs a lot of work on UI, which I have planned to do in upcoming weeks.


For displaying different brushes, stamps, and settings for a tool available, we will be displaying a pop-up for these settings. First look at the tools mode ->


Improvement in the overall UI is still in progress. Other than this, I have been working on refactoring the current code for this activity and breaking the whole code into various elements. For the next week, my main task is to complete the overall UI of this activity and add more geometries for drawing.

I’d appreciate your feedback on the work done so far and suggestions on the improvement of this activity.

Work branch ->

Link to proposal ->

Happy coding ��

May 22, 2018

The forthcoming new release of Plasma 5.13 will have some lovely new features such as rewritten System Settings pages and Plasma Browser Integration.  But we need testers.

Incase you missed it the Plasma 5.13 release announce has a rundown of the main features.  If you are an auditory learner you can listen to the Late Night Linux Extra podcast where Jonathan “great communicator” Riddell talks about the recent sprint and the release.

You can test it out with the KDE neon Developer Edition Git-Stable ISO which you can download now.  Git-stable includes beta builds of KDE’s software.  Or you can try the latest KDE neon Docker image which runs the desktop inside Xephyr with a simple command of neondocker -e dev-stable.

What have the public been saying about Plasma 5.13 beta? Let’s pick some random comments from Reddit:

br_shadow – Plasma is by far the best linux DE

Thanks br_shadow!

aturfer 26 points  – I’m going to make another financial donation to the KDE project.

Good idea aturfer!


> KDE Plasma

> lightweight

What a time to be alive

Oh yes it is mleko69!

masteryod 17 points 

Holy shit that changelog is amazing!

We try to please mastyod!

tnsittpsif190 points I am so pleased with KDE and the development team. I love the workflow it offers. It is both, beautiful and professional at the same time.

We succeed in pleasing tnsittpsif!

So give it a try, report problems, 2.5 weeks until final is out.

Yesterday I came back from 3,5 days of Krita Sprint in Deventer. Even if nowadays I have less time for Krita with my work on GCompris, I’m always following what is happening and keep helping where I can, especially on icons, and a few other selected topics. And it’s always very nice to meet my old friends from the team, and the new ones! ��

A lot of things were discussed and done, and plans have been set for the next steps.
I was in the discussions for the next fundraiser, the Bugzilla policies, the next release, the resources management rewrite, and defining and ordering the priorities for the unfinished tasks.

I did start a little the french translation for the new manual that is coming soon, mostly porting the existing translation of the FAQ and completing it. Again about the manual I gave a little idea to Wolthera who was looking at reducing the size of png images.. result is almost half smaller, around 60Mo for 1000pages, not bad ��

I discussed with Valeriy, the new maintainer of kcm-wacomtablet, about some little missing feature I would like to have, and built the git version to test on Mageia 6. Great progress already, and more goodies to come!

As we decided to make layer names in default document templates translatable, we defined a list of translatable keywords to use for layer names in those default templates. The list was made by most artists present there (me, Deevad, Wolthera, Raghukamath and Bollebib).

Also I helped Raghukamath who was fighting with his bluish laptop screen to properly calibrate it on his Linux system, and he was very happy of the result.

Many thanks to Boudewijn and Irina who organised and hosted the sprint in their house, to the Krita Foundation for the accommodation and food, and to KDE e.V. for the travel support that made it possible to gather contributors from many different countries.

You can find more info about this sprint on the Krita website:

Krita 2018 Sprint Report

KDAB is a major sponsor of this event and a key independent contributor to Qt as our blogs attest.

Every year, dedicated Qt contributors gather at Qt Contributors’ Summit to share with their peers latest knowledge and best practices, ensuring that the Qt framework stays at the top of its game. Be a Contributor to Qt!

We look forward to meeting you in Oslo!

The post KDAB at Qt Contributor’s Summit 2018, Oslo appeared first on KDAB.

This weekend, Krita developers and artists from all around the world came to the sleepy provincial town of Deventer to buy cheese — er, I mean, to discuss all things Krita related and do some good, hard work! After all, the best cheese shop in the Netherlands is located in Deventer. As are the Krita Foundation headquarters! We started on Thursday, and today the last people are leaving.

Image by David Revoy

Events like these are very important: bringing people together, not just for serious discussions and hacking, but for lunch and dinner and rambling walks makes interaction much easier when we’ve gone back to our IRC channel, #krita. We didn’t have a big sprint in 2017, the last big sprint was in 2016.

So… What did we do? We first had a long meeting where we discussed the following topics:

  • 2018 Fund Raiser. We currently receive about €2000 a month in donations and have about eighty development subscribers. This is pretty awesome, and goes a long way towards funding Dmitry’s work. But we still want to go back to having a yearly fund raiser! We aim for September. Fund raisers are always a fun and energizing way to get together with our community. However, Kickstarter is out: it’s a bit of tired formula. Instead we want to figure out how to make this more of a festival or a celebration. This time the fund raiser won’t have feature development as a target, because…
  • This year’s focus: zarro bugs. That’s what bugzilla used to tell you if your search didn’t find a single bug. Over the past couple of years we’ve implemented a lot of features, ported Krita to Qt5 and in general produced astonishing amounts of code. But not everything is done, and we’ve got way too many open bug reports, way too many failing unittests, way too many embarrassing hits in pvs, way too many features that aren’t completely done yet — so our goal for this year is to work on that.
  • Unfinished business: We identified a number of places where we have unfinished business that we need to get back to. We asked the artists present to rank those topics, and this is the result:
    • Boudewijn will work on:
      • Fix resource management (
      • Shortcut and canvas input unification and related bugs
      • Improved G’Mic integration
    • Dmitry will work on:
      • Masks and selections
      • Improving the text layout engine, for OpenType support, vertical text, more SVG2 text features.
      • SVG leftovers: support for filters and patterns, winding mode and grouping
      • Layer styles leftovers
    • Jouni will work on animation left-overs:
      • Frame cycles and cloning
      • Transform mask interpolation curves
    • Wolthera will work on:
      • Collecting information about missing scripting API
      • Color grading filters
  • Releases. We intend to release Krita 4.1.0 June 20th. We also want to continue doing monthly bug-fix releases. We’ve asked the KDE system administrators whether we can have nightly builds of the stable branch so people can test the bug fix releases before we actually release them. Krita 4.1 will have lots of animation features, animation cache swapping, session management and the reference images tool — and more!

We also discussed the resource management fixing plan, worked really hard on making the OpenGL canvas work even smoother, especially on macOS, where it currently isn’t that smooth, added ffmpeg to the Windows installer, fixed translation issues, improved autosave reliability, fixed animation related bugs and implemented support for a cross-channel curves filter for color grading. And at the same time, people who weren’t present worked on improving OpenEXR file loading (it’s multi-threaded now, among other things), fixed issues with the color picker and made that code simpler and added even more improvements to the animation timeline!

And that’s not all, because Wolthera, Timothee and Raghukamath also finished porting our manual to Sphinx, so we can generate off-line documentation and support translations of the manual. The manual is over 1000 pages long!

There were three people who hadn’t attended a sprint before, artist Raghukamath, ace windows developer Alwin Wong and Valeriy Malov, the maintainer of the KDE Plasma desktop tablet settings utility, who improved support for cintiq-like devices during the weekend.

And of course, there was time for walks, buying cheese, having lunch at our regular place, De Rode Kater, and on Sunday the sun even started shining! And now back to coding!

Image by David Revoy.

The 2018 Krita sprint was sponsored by KDE e.V. (travel) and the Krita Foundation (accommodation and food).

After more than a year of work, I’m pleased to release another version of heaptrack, the Linux memory profiler! The new version 1.1.0 comes with some new features, significant performance improvements and – most importantly – much improved stability and correctness. If you have tried version v1.0 in the past and encountered problems, update to the new v1.1 and try again!

Notable Changes

The most effort during this release cycle was spent on improving the correctness of heaptrack. The initial version suffered from bugs that could lead to corrupted or truncated data files. Heaptrack v1.1 is generally much better in this regard, and you should be able to use it in more situations than before. Furthermore, attaching heaptrack to an already-running process will catch more allocations and thus produce more accurate data. To verify the quality of the heaptrack code base, more tests have been added as well. These tests also finally enable us to use Valgrind or the Sanitizers on most of the heaptrack code, which wasn’t possible previously.

Additionally, some important new features have been added which greatly improve the usability of heaptrack:

  1. When extended debug information is available, stack traces now include inlined frames.
  2. Split debug information in separate files is now supported.
  3. Compressed debug information is properly handled.
  4. The embedded flamegraph view is now searchable.

Finally, quite some work went into optimizing heaptrack to further reduce its overhead. The initial version was quite good already from a performance point of view, but version 1.1 is even better! Most notably, the analysis of large data files is now often much faster. This is in great parts due to the new optional dependency on zstd. This fantastic state-of-the-art compression algorithm greatly reduces the CPU overhead during recording while compressing the heaptrack data. But not only that – decompression at analysis time is significantly reduced compared to the standard gzip compression. In case you wonder: Data files are now often slightly smaller too!

Last but not least, heaptrack v1.1.0 can be downloaded as a portable AppImage which should run on most 64bit Linux systems in use these days!

Download heaptrack v1.1.0

If possible, wait for your distribution to provide you with an updated package for heaptrack v1.1.0. Otherwise, download the AppImage, make it executable and run it. If neither of these two options works for you, grab the sources and compile the code for your target platform:

The GPG signatures have been created by Milian Wolff with the key A0C6B72C4F1C5E7C.

Many thanks to the various people who contributed to this release. Please continue to hand in your patches, preferably via KDE’s phabricator instance or via heaptrack on GitHub. Bugs can be reported on

If your company needs commercial support for heaptrack, then get in touch with us at KDAB. We offer workshops and trainings specifically about profiling and debugging on Linux.

The post Heaptrack v1.1.0 release appeared first on KDAB.

WebAssembly is now supported by all major web browsers as a binary format for allowing sand-boxed executable code in web pages that is nearly as fast as native machine code. Qt for WebAssembly makes it possible to run Qt applications on many web browsers without any download steps or special server requirements (other than serving the wasm file).

To give you a closer look, we compiled some demos. For best performance, use Firefox.

Here is the complete list along with some descriptions:
An example which renders a Qt logo using OpenGL calls. This example shows that you can also use this for custom OpenGL code.
A larger example of an interesting industry automation use case. In principle, it is possible to show live data retrieved using Qt WebSockets, but this is just showing generated dummy data for illustration purposes.
A gallery of available controls in Qt Quick Controls 2. This shows that you can use Qt Quick and Qt Quick Controls 2 to make your web-deployed applications.
A simple text editor, written with Qt Widgets. This example shows that you can also use Qt Widgets to create your web-deployed applications.

As always, let us know what you think!

The post Qt for WebAssembly – check out the examples! appeared first on Qt Blog.

May 21, 2018

Earlier this year, I had the chance to speak about one of KDE community's cool projects that is helpding developers erase the line between desktop and mobile/tablet UI's with ease. I'm referring to the Kirigami UI framework - a set of QtQuick components targetted at the mobile as well as desktop platforms. This is particularly … Continue reading Revisiting my talk at FOSSASIA summit, 2018

Well, It's been a week since the coding period started. There were quite some implementations out of the pre-plans and were huge. They got me very nervous at first. Such changes meant big updation in the code base and lots of time to have everything in place and with no warnings/errors ( well I can't …

Are you using Kubuntu 18.04, our current LTS release?

We currently have the Plasma 5.12.5 LTS bugfix release available in our Updates PPA, but we would like to provide the important fixes and translations in this release to all users via updates in the main Ubuntu archive. This would also mean these updates would be provide by default with the 18.04.1 point release ISO expected in late July.

The Stable Release Update tracking bug can be found here:

A account is required to post testing feedback as bug comments.

The Plasma 5.12.5 changelog can be found at:

[Test Case]

* General tests:
– Does plasma desktop start as normal with no apparent regressions over 5.12.4?
– General workflow – testers should carry out their normal tasks, using the plasma features they normally do, and test common subsystems such as audio, settings changes, compositing, desktop affects, suspend etc.

* Specific tests:
– Check the changelog:
– Identify items with front/user facing changes capable of specific testing. e.g. “weather plasmoid fetches BBC weather data.”
– Test the ‘fixed’ functionality.

Testing involves some technical set up to do, so while you do not need to be a highly advanced K/Ubuntu user, some proficiently in apt based package management is advisable.

Details on how to enable the propose repository can be found at:

Unfortunately that page illustrates Xenial and Ubuntu Unity rather than Bionic in Kubuntu. Using Discover or Muon, use Settings > More, enter your password, and ensure that Pre-release updates (bionic-proposed) is ticked in the Updates tab.

Or from the commandline, you can modify the software sources manually by adding the following line to /etc/apt/sources.list:

deb bionic-proposed restricted main multiverse universe

It is not advisable to upgrade all available packages from proposed, as many will be unrelated to this testing and may NOT have been sufficiently verified as updates to assume safe. So the safest but a little involved method would be to use Muon (or even synaptic!) to select each upgradeable packages with a version containing 5.12.5-0ubuntu0.1 ( for plasma-discover due to an additional update).

Please report your findings on the bug report. If you need some guidance on how to structure your report, please see Testing is very important to the quality of the software Ubuntu and Kubuntu developers package and release.

We need your help to get this important bug-fix release out the door to all of our users.

Thanks! Please stop by the Kubuntu-devel IRC channel or Telegram group if you need clarification of any of the steps to follow.

Yes, folks. This year SIGGRAPH 2018 is in Canada and we’ll be there at the Qt booth, showing off our latest tooling and demos. These days, you’d be surprised where Qt is used under the hood, even by the biggest players in the 3D world!

SIGGRAPH 2018 is a five-day immersion into the latest innovations in CG, Animation, VR, Games, Digital Art, Mixed Reality and Emerging Technologies. Experience research, hands-on demos, and fearless acts of collaboration.

Meet us at SIGGRAPH 2018!

Book your place for the most exciting 3D event of the year!

The post KDAB at SIGGRAPH 2018 appeared first on KDAB.

KDAB is proud to be bronze sponsor at Italian C++ Conference, the largest conference in Italy specifically focused on C++ development for professionals, students and businesses using C++.

It’s free, organized by the Italian C++ community, and there’s Italian icecream to think about too… It’s an offer you can’t refuse ��

Sign up and see you in Milan in June!

The post KDAB at Italian Cpp 2018 appeared first on KDAB.

There are many ways to understand a community.

For instance, Kevin Ottens has been writing about understanding the KDE community by the “green blobs” method, showing who is active when. Lays Rodrigues has written about using Gource to show Plasma growing up. Nate Graham describes the goings-on in the KDE community nearly every week.

Those are, roughly: a metric-, a visual-, and a story-based approach to understanding the community, over different timescales. But understanding of a system doesn’t come from a single dimension, from a single axis of measurement. It comes from mixing up the different views to look the system as a whole.

To that end, I’m going to apply Kevin’s and Lays’s approaches to .. well, not to something Nate has written, but to a recent this-week-in-Elisa post by Matthieu Gallien. The relevant period is april 22nd (the release of Elisa 0.1.1) to may 16th (latest post on Elisa progress).

ComDaAn is the toolbox Kevin has come up with for dealing with activity and centrality. It’s a Python3 application — it almost works with Python2, except that timestamp-formatting in Python2 does not support the %z flag (in spite of the documentation). No strange dependencies, and easy_install or system packages get everything (even on FreeBSD). The green-blobs tool is called and can take a date range to limit what is shown, for instance ComDaAn/ -f 2018-04-21 -u 2018-05-16 ~/src/kde/elisa/ , which gives us this (image links to an actual HTML page with all the fanciness).

Image of contributions to Elisa

Elisa Contributors, 2018-04-22 — 2018-05-16

Gource is what Lays used to show off Plasma development. I used the same video (regenerated locally) as a blinkenlights show at the KDE booth at FOSS-North. Gource also takes a date range, for instance , which gives us this (image links to the video).

Elisa Gource Screenshot

A moment in Elisa time

The time period here is short; it’s unwise to draw any conclusions from any of these visualisations. They do support the story that Matthieu tells, and the natural order of things is that the main developer does the most commits, with features and fixes coming (ir)regularly from others. The movie shows that the structure of Elisa (or the source code, at least) remains stable over this period. Together, the visualisations along different axes enliven the story of Elisa — and running those tools over a longer period of months can help understand how the community around that application grows and changes.

[[ As an aside, there’s a really neat use of Gource out there: instead of visualising source-code changes, use it to watch other kinds of events, like those that DTrace can provide from a running system. FreeBSD users can enjoy Devin Teske’s dwatch-gource, which uses dwatch to produce logs suitable for gource, and then make a movie of what their system is doing. Maybe not great for parties, but excellent for figuring out why the desktop is suddenly slow while building Qt, LLVM and GCC in parallel (all three with -j8). ]]

I like to cook. And sometimes store my recipes. Over the years I have tried KRecipes, kept my recipes in BasKet notes, in KJots notes, in more or less random word processor documents.

I liked the free form entering recipes in various notes applications and word processor documents, but I lacked some kind of indexing them. What I wanted was free-ish text for writing recipes, and some thing that could help me find them by tags I give them. By Title. By how I organize them. And maybe by Ingredient if I don’t know how to get rid of the soon-to-be-bad in my refridgerator.

Given I’m a software developer, maybe I should try scratch my own itch. And I did in the last month and a half during some evenings. This is also where my latest Qt and modern C++ blog posts comes from

The central bit is basically a markdown viewer, and the file format is some semi structured markdown in one file per recipe. Structured in the file system however you like it.

There is a recipes index which simply is a file system view with pretty titles on top.

There is a way to insert tags into recipes.

I can find them by title.

And I can find recipes by ingredients.

Given it is plain text, it can easily be synced using Git or NextCloud or whatever solution you want for that.

You can give it a spin if you want. It lives here There is a blueprint for a windows installer here:

There is a markdown file describing the specifics of the file format. It is not declared 100% stable yet, but I need good reasons to break stuff.

My recipe collection is in my native language Danish, so I’m not sure sharing it for demo purposes makes too much sense.

Once more in Florence, QtDay Italy is almost upon us and we’ll be there.

Giuseppe D’Angelo will be giving a talk on Gammaray, KDAB’s open source profiling and debugging tool.

GammaRay is a “high-level debugger”, able to show the status of various Qt subsystems inside an application, with an easy to use interface (that does not require any knowledge of Qt internals). GammaRay can, amongst other things, show the properties of any QObject in the application, show the status of all state machines, inspect and debug layouting and stacking of both widgets and Qt Quick applications, analyze raster painting, show the 3D geometry in a Qt3D scene, and much more.

This talk introduces the basics of GammaRay usage, with some interesting cases as examples of problem solutions.

See you in Florence!

The post QtDay Italy, May 23-24 appeared first on KDAB.

May 20, 2018

This week was mainly focused on three things

  • Enable loading/unloading of QML plugins in Falkon
  • Adding permission to existing plugin infrastructure for allowing plugin in incognito
  • Developing QML Bookmarks API similar to WebExtension API

Enable loading/unloading of QML plugins in Falkon

QML plugins will now be loaded into Falkon from the subdirectory qml in the standard plugin paths, similar to Python plugins. Also in metadata.desktop file for plugin, the main entry file (QML) can be specified so that the plugin named X can have the entry file Y.qml.

Adding permission to existing plugin infrastructure for allowing plugin in incognito

Plugins will now support permission to allow them in incognito mode. Also the information for plugins is moved from ini files to sql database.


Developing QML Bookmarks API similar to WebExtension API

The following table demonstrates the browser compatibility of WebExtension API for Falkon compared with other browsers.

Falkon Chrome Edge Mozilla
BookmarkTreeNodeType ❌*
BookmarkTreeNodeUnmodifiable ❌*
CreateDetails ❌*
getSubTree ❌*
getTree ❌*
onChildrenReordered ❌*

To enable the support of API's marked with ❌*, the additional API includes:

  • BookmarkTreeNode.type
  • BookmarkTreeNode.parent
  • Bookmarks.rootItem, Bookmarks.toolbarFolder, Bookmarks.menuFolder, Bookmarks.unsortedFolder
  • Bookmarks.lastUsedFolder
  • Bookmarks.isBookmarked

Currently I am, with a great help from my mentor David Rosca, working on developing autotests for the Bookmarks API.

Happy Summers :)

The other day, some user of Extra CMake Modules (A collection of utilities and find modules created by KDE), asked if there was an easy way to query cmake for wherever the KDEInstallDirs points to (KDEInstallDirs is a set of default paths that mostly is good for your system, iirc based upon GNUInstallDirs but with some extensions for various Qt, KDE and XDG common paths, as well as some cross platform additions). I couldn’t find an easy way of doing it without writing a couple of lines of CMake code.

Getting the KDE_INSTALL_(full_)APPDIR with default options is:

$ cmake -DTYPE=APPDIR ..

and various other options can be set as well.

$ cmake -DCMAKE_INSTALL_PREFIX=/opt/mystuff -DTYPE=BINDIR ..
KDE_INSTALL_FULL_BINDIR: /opt/mystuff/bin

This is kind of simple, but let’s just share it with the world:

cmake_minimum_required(VERSION 3.0)
find_package(ECM REQUIRED)



I don’t think it is complex enough to claim any sorts of copyrights, but if you insist, you can use it under one of the following licenses: CC0, Public Domain (if that’s in your juristiction), MIT/X11, WTFPL (any version), 3-clause BSD, GPL (any version), LGPL (any version) and .. erm. whatever.

I was trying to get it to work as a cmake -P script, but some of the find_package calls requires working CMakeCache. Comments welcome.

Cheap talk

Last weekend, I went to İstanbul to attend Özgür Yazılım ve Linux Günleri (Free Software and Linux Days 2018) to represent LibreOffice. We had 3 presentations during the event about LibreOffice Development and The Open Document Format. We had booth setup with stickers, flyers, roll-up etc. These were all thanks to The Document Foundation’s supports! You can find detailed information about the event from here :

Summary of the event ��

I came back from the event in Monday and since then, I have been working on the Workspace KCM rewrite and single/double click bug fix so just find time to write blog. Workspace KCM rewrite and single/double click bug fix are done and the code is pushed to the master. If you’re on the dev unstable repo, and if you have updated your system in the last 4 days, just go to “System Settings > Desktop Behavior > Workspace” and check it. You should be using new Workspace KCM �� But there are more. I finished a new design for it yesterday and it’ll be pushed soon, after some discussion with maintainers.
See the evolution of Workspace KCM :

KCM Rewrite

Single/double click bug fix

Kirigami redesign

Show me the code

1. The old Workspace KCM is rewritten in QML. Commit is here.
2. In Wayland, there was no “single/double click” options and in Xorg, it was under “Mouse KCM” but this doesn’t make sense. When user change the setting, it doesn’t affect only mouse, it affects whole system because it is not about input devices. So we discussed the issue and decided to move the setting to Workspace KCM. This also solved the issue for Wayland. In short, single/double click options is moved to Workspace KCM. Commit is here.
3. Workspace KCM is redesign by using Kirigami and the code has same improvement. See the work from here (D12973) and here (D12974).


These were very active days for me. I have been in lots of discussions, did have lots of conversations. Basically I understand how things going on in the background. Nate and Roman are great mentors, friends and the KDE is a great community.

Now, my todolist is as following:
1. Rewrite Touchpad KCM in QtQuick.
2. Rewrite Mouse KCM in QtQuick.

Hope to see you next week! ��

The post This Week in KDE, Part 2 : OYLG, Workspace KCM, Single/Double Click appeared first on Bir Coder'ın Günlüğü.

This week we announced a beta of the upcoming KDE Plasma 5.13 release, and so far the internet seems pretty excited about it. �� But we’re nowhere near done, and here’s another week of Usability and Productivity enhancements to highlight:

New Features


UI Polish & Improvement

See all the names of people who worked hard to make the computing world a better place? That could be you next week! Getting involved isn’t all that tough, and there’s lots of support available. Give it a try today! It’s easy and fun and important.

If my efforts to perform, guide, and document this work seem useful and you’d like to see more of them, then consider becoming a patron on Patreon, LiberaPay, or PayPal.

Become a patron Donate using Liberapay donate with PayPal

May 19, 2018

KDevelop 5.2.2 and 5.2.3 released

We today provide a stabilization and bugfix release with version 5.2.2 and 5.2.3. 5.2.2 was tagged 6 weeks ago, but we never managed to release it because we did not have the patience to fix the Windows installers in time due to a broken CI. Windows installers are provided for 5.2.3 again. We'll only provide source tarballs for 5.2.2 and we encourage everyone to just skip this release and use 5.2.3 which contains a few more bug fixes.

This is a bugfix-only release, which introduces no new features and as such is a safe and recommended update for everyone currently using KDevelop 5.2.1.

You can find the updated Windows 32- and 64 bit installers, the Linux AppImage, as well as the source code archives on our download page.

Please let us know of any issues you encounter when using KDevelop on the bug tracker, in the mailing lists for development or users (,, or in the comment section of this release announcement.

Change log


  • KDevelop : support whitespace between the '#' and 'include' (or 'import'). (commit. fixes bug #394200. code review D12903)
  • Shell: Display generic project managers again. (commit. code review D12279)
  • Github: Fix Github repositories not fetched. (commit. fixes bug #392553. code review D11980)
  • Avoid emptry entries in project files filter list. (commit. code review D11912)
  • Note org.kdevelop.IBasicVersionControl@kdevgit as dep for kdevghprovider. (commit. code review D11823)
  • Never assert when the assert can fire sporadically. (commit. See bug #357585)
  • Sublime: Release space in tab bar when no status. (commit. See bug #314167)
  • Shell: Save entries of recent projects action. (commit. fixes bug #385915)
  • Lldb: don't issue command when there's no env variables to set, fix Bug 391897. (commit. code review D11524)
  • Fix crash when activating code completion item. (commit. fixes bug #391742)
  • Do not add return type to constructors declaration when editing definition in signature assistant. (commit. fixes bug #365420. code review D11291)
  • Make lambda introduce a context in DU chain. (commit. fixes bug #387994. code review D11303)
  • Fix bug 384082 - cppcheck is checking CMake generated files. (commit. fixes bug #384082. code review D11041)
  • Never run qmlplugindump on plugins that already offer plugins.qmltypes. (commit. code review D10872)
  • Fix CodeCompletion of Strongly Typed Enum. (commit. code review D10738)
  • Make sure qmlplugindump works on my system. (commit. code review D10782)
  • Make sure we don't crash when stopping all jobs. (commit. code review D10874)
  • Help automoc to find metadata JSON files referenced in the code. (commit. code review D10693)
  • Link against KF5::Purpose if it's available. (commit. code review D9921)
  • Properly quote expected string value in lldb formatter unittests. (commit. code review D9929)
  • Unbreak the GDB QUrl pretty printer test. (commit. code review D9922)
  • Unbreak QtPrintersTest::testQString. (commit. code review D9923)
  • Also unbreak QtPrintersTest::testQByteArray. (commit. code review D9924)
  • Work around bug in kLineEdit. (commit. code review D9809. fixes bug #373004)
  • Fix crash when stopping process. (commit. code review D9858)
  • Performance: Reuse the global icon loader. (commit. code review D9783)
  • Cache ProblemPointers per translation unit. (commit. fixes bug #386720. code review D9772)
  • Only set CMAKE_AUTOMOC_MACRO_NAMES with KF5 < 5.42. (commit. code review D9778)
  • Format comments before setting them on the DUChain. (commit. code review D9472)
  • Set toolbar/toolbutton font on quickopen line edit. (commit. code review D9481)


  • Ensure that always returns something on stdout to unlock m_mutex. (commit. fixes bug #392031. code review D11474)
  • Fix crash with contexts opened in the baseclass list of a class definition. (commit. fixes bug #389326)
  • Fix appstream metadata filename and some content, and install it. (commit. code review D9488)


No changes

kfunk Sun, 2018/05/20 - 00:00


Thank you for your work! I use Kdevelop everyday and I'm happy to see a new version.

After almost two years, here comes a new version of Doxyqml, the QML filter for Doxygen. This new version adds a new command-line option: --namespace to wrap the generated C++ in a namespace, and makes the parser more robust. Nothing ground-breaking, but some nice changes nevertheless.

What's interesting with this project is that I don't use it these days, but it still receives contributions from time to time. This puts me in the unusual position (for me) where most of my contributions to the project are reviewing code, cleaning things, a bit of infrastructure (I just added code coverage checks: 88%, not too bad) and release management.

Surprisingly, I like doing this, I am happy to see this little tool remains useful enough that others keep it alive.

All that to say, you can now pip install --upgrade doxyqml to get the latest version, and enjoy documenting your QML components!

@tetris4 wrote:

Also available in Italian and Taiwanese Mandarin.

Hello everyone!

On your next system upgrade you will receive all the latest versions of KDE’s Plasma, Applications and Frameworks, in addition to several other package updates. For more details and the full changelogs on KDE’s software releases, you can read the official announcements:

Other noteworthy package updates include wine 3.8, skypeforlinux and pypy 6.0.0.

Konqis by KDE under CC BY-SA

It should be safe to answer yes to any replacement question by the package manager application. If in doubt or if you face another issue in relation to this update, please ask or report it below.

Most of our mirrors take 12-24 hours to synchronize with the central repositories on the origin server. Use the mirror status web page to see when your mirror of choice last synchronized.


Posts: 1

Participants: 1

Read full topic

Older blog entries



Planet KDE is made from the blogs of KDE's contributors. The opinions it contains are those of the contributor. This site is powered by Rawdog and Rawdog RSS. Feed readers can read Planet KDE with RSS, FOAF or OPML.