September 18, 2019

Parece que se ha abierto al veda a los iconos estilo Neon para Plasma. Si hace unos mesme pareció curioso el tema Oie Icons y el Epsilon Icons, los cuales destacaban por su simpleza y  su semejanza al típico cartel luminoso de neon, hoy toca hablar de Punk Theme, otro tema similar realizado a base de gruesas líneas,  colores degradados y muy vistoso.

Punk Theme, más iconos estilo neon para Plasma

Cambiar el tema de iconos de un escritorio es una de las formas de personalización casi más completa que puedes realizar sobre tu PC,ya que cambia totalmente el aspecto del mismo a la hora de interaccionar con tus aplicaciones, documentos y servicios.

Para el escritorio Plasma de la Comunidad KDE hay cientos de temas disponibles, y en el blog le hemos dedicado muchos artículos a ir presentando algunos de ellos, pero siempre aparece alguno nuevo o remozado que hace que siempre le volvamos a dedicar una nueva entrada.

De esta forma me complace presentar el tema de iconos Punk Theme un trabajo de rtl88 nos ofrece un pack de iconos estilo neon, con degradados coloridos, simples y divertidos, que hará las delicias de los usuarios minimalistas y que combina a la perfección con temas oscuros.

 

Punk Theme, más iconos estilo neon para Plasma

Punk Theme está disponible en cuatro estilos: Pain, Sweet, Ozone y Gamma, para abarcar el máximo de gustos posibles.

 

Y como siempre digo, si os gusta el pack de iconos Punk Theme podéis “pagarlo” de muchas formas en la nueva página de KDE Store, que estoy seguro que el desarrollador lo agradecerá: puntúale positivamente, hazle un comentario en la página o realiza una donación. Ayudar al desarrollo del Software Libre también se hace simplemente dando las gracias, ayuda mucho más de lo que os podéis imaginar, recordad la campaña I love Free Software Day 2017 de la Free Software Foundation donde se nos recordaba esta forma tan sencilla de colaborar con el gran proyecto del Software Libre y que en el blog dedicamos un artículo.

Más información: KDE Store

Let's continue where we left off in the first post. We saw an example of a Qt Quick application running on Linux on top of OpenGL and Vulkan. We also saw a Vulkan frame capture in RenderDoc, which is not just an invaluable tool during Qt development work, but can also be useful to anyone who wants to dig deeper and understand better how Qt Quick renders a frame (or for that matter troubleshoot problems in an application's rendering). Now in this post we are going to focus on what Qt 5.14 offers for macOS and Windows.

Metal on macOS

Quite unsprisingly, running the qt5-cinematic-experience demo with QSG_RHI=1 (and QSG_INFO=1) on macOS 10.13 or 10.14 results in:

September 17, 2019

El pŕoximo sábado 21 de septiembre se va a celebrar el Software Freedom Day 2019, un día muy especial para la Comunidad ya que en él conmemoramos el desarrollo de un proyecto que en realidad va más allá del Software. En el blog ya he hablado de él en repetidas ocasiones, pero debo reconocer que estos últimos años el evento se me ha escapado. No será el caso en esta ocasión, y a varios días del megaevento, quiero compartirlo con vosotros.

Software Freedom Day 2019, un día muy especial

Celebrate SFD with us on September 17, 2016!Cada mes de septiembre se celebrar el Software Freedom Day, y este 2019 no es una excepción. De esta forma, la organización sin ánimo lucro Software Freedom International coordina los (SFD) Software Freedom Day SFD como un evento global, proporcionando soporte, material de promoción y puntos de colaboración.

El objetivo fundamental de esta celebración es educar al público sobre los beneficios de usar FLOSS de alta calidad en la enseñanza, en el gobierno, en el hogar y en el trabajo — en pocas palabras y resumiendo ¡en todas partes!.

Así que asiste a algunos de los eventos que hay programados para el 21 de septiembre (lástima que no haya ninguno en territorio español pero si en Argentina) o muestra tu amor por el Software Libre mediante cualquier acción que la haga visible. A modo de ejemplo os propongo: Software Freedom Day 2019 #softwarefreedomday

  • Habla con tus familiares y amigos
  • Muestra tu distribución con orgullo
  • Comenta las ventajas del Software Libre, no solo las económicas sino las éticas.
  • Ponte tu camiseta de tu Proyecto de Software Libre favorito
  • Haz ruido en las redes sociales con la etiqueta #softwarefreedomday
  • Anímate a participar en las Comunidad de Software Libre de forma activa. No es necesario ser programador para hacerlo.
  • Comparte tus conocimientos con la gente que te rodea.
  • Agradece a los desarrolladores de los proyectos su trabajo.
  • Haz donaciones, dentro de tus posibilidades, a los proyectos.
  • Diseña un bonito fondo de pantalla y compártelo con otros.
  • Haz un entrada en tu blog, aunque no sea de esta temática.
  • Habla con tu compañero periodista, ¡el Software Libre es de interés general!
  • Habla a tus alumnos del Software Libre
  • Habla a tus profesores del Software Libre
  • … (pon aquí lo que se te ocurra)

En definitiva, un excelente día para empezar a ser más activo en términos de Software Libre o de seguir siéndolo si ya lo eres.

Así que prepárate para el próximo sábado para ponerte su camiseta especial, mostrar con orgullo las aplicaciones que han hecho otras personas para ti y hablar a todo el mundo de una idea que poco a poco se va imponiendo en nuestra realidad digital, y que sería fantástica si se pudiera trasladar al mundo real.

Más información: Software Freedom Day 2019

While we’re spending quite some time now finalizing the next release of LabPlot which will be announced soon, we continue getting feedback from our users and we try to incorporate as much as possible into the upcoming release.

This feedback usually consists of different discussions around the existing features in LabPlot or features that need to be added in near future, around bugs, etc. Recently we’ve got a somewhat different feedback informing us about the availability of a Chocolatey package for LabPlot.

Chocolatey is an advanced package manager for Windows allowing to manage the installation, configuration, update and uninstallation of applications on Windows.

Installing LabPlot on Windows with chocolatey from the PowerShell is as simple as
C:\> choco install labplot

Similarly, upgrading to a new version is done via
C:\> choco upgrade labplot

Great news!

September 16, 2019

I just released version 1.3.0 of SFXR Qt, my Qt port of the SFXR sound effect generator.

Screenshot

There aren't that many new features for end users:

  • A new wave form: Triangle.
  • A new file format: SFXJ.

The new file format opens the road to adding new features. I have a few ideas in mind, will see how it goes.

Nevertheless, this release brings several under the hood changes:

  • Improved error handling so that you get a message dialog when the app cannot load or save a file.
  • Unit-tests using Catch2, which I really like.
  • Continuous Integration through Travis CI.

Finally, I borrowed Nanonote CMake code for packaging, so deb and rpm packages are available on the release page. Let me know if they work for you.

That's it, hope you enjoy generating fun sound effects!

El mejor gestor de imágenes de la Comunidad KDE, y de los mejores de todo el mercado, sigue su desarrollo. De esta forma, ha sido lanzado digiKam 6.3, una nueva versión del gestor de imágnes que incluye pocas pero interesantes novedades como el soporte de plugins.

Lanzado digiKam 6.3, ahora con soporte de plugins

El pasado 10 de febrero fue lanzado digiKam 6.0.0, la nueva versión de uno de los gestores de imágenes más completo que puedes encontrar en el mundo GNU/Linux.

Esta nueva versión vino cargado de novedades, las podéis ver abajo, pero eso no significaba el final del desarrollo de este software. De esta forma, el pasado 8 de septiembre fue lanzado digiKam 6.3, la tercera gran actualización de la rama 6.x de este magnifico software que incluye pocas novedades pero importantes, destacando entre ellas el soporte de plugins de terceros.

Lanzado digiKam 6.3, ahora con soporte de plugins

Además de las habituales resolución de errores, esta nueve versión ofrece las siguientes novedades:

  • GMic-Qt: Primer plugin de digiKam que permite procesar imágenes de forma visual con la herramienta G’MIC.
  • Inclusión del DPlugins Demo Project en GitHub, que facilita a los desarrollo de nuevos plugins.
  • Migración del proyecto a Gilab (como están haciendo muchos proyectos KDE)

Más información: digiKam 6.3

Las novedades de digiKam 6

Como siempre, muchas serán las novedades de una actualización masiva. No obstante los desarrolladores quieren destacar las siguientes:

  • Compatibilidad total con la gestión de archivos de vídeo.
  • Integración de todas las herramientas de servicio web de importación/exportación en LightTable, Editor de imágenes y Showfoto.
  • Motor de decodificación de archivos sin formato compatible con nuevas cámaras.
  • Los datos de similitud ahora se almacenan en un archivo de base de datos separado.
  • Autenticación de servicios web simplificada utilizando el protocolo OAuth.
  • Nuevas herramientas para exportar a Pinterest, OneDrive y Box-services.
  • Capacidad de reorganizar los contenidos de la vista de iconos manualmente.
  • Soporte Exiv2 0.27, la nueva herramienta para el tratamiento de metadatos Exif, IPTC y XMP
  • Nueva herramienta para ajustar la fecha y la hora de mis imágenes.
  • Soporte para DrMinGw para Windows, ya que cada vez digiKam es más popular en el sistema privativo.

Lanzada la segunda beta de digiKam 6

Y, por supuesto, muchos errores solucionados, con lo que parece que tendremos la mejor versión de digiKam que puede tener vuestro ordenador.

Más información: digiKam

¿Qué es digiKam?

La mejor forma de definir digiKam es buscar como se describe esta aplicación de userbase.kde.org y realizar una pequeña síntesis:

«DigiKam es una aplicación que te permite la importación de fotografías desde  cámaras, creación de álbumes, etiquetado con fechas, temas y otras propiedades, utilidades de búsqueda excelentes y modificación de imágenes en masa.»

En otras palabras, con digiKam podrás ver, administrar, editar, mejorar, organizar, etiquetar y compartir fotos de una forma profesional.

Could you tell us something about yourself?

Sure. I’m Julius Grels, and “I like to call myself an artist whenever I’m wasted enough”. In all seriousness though, I think I’d describe myself more as a self-taught caricaturist or illustrator. I usually like to take some existing premise from real life or history, e.g. painting a picture of a (famous) person, depicting wildlife, et cetera. I’m also very fond of making comics, music and video games whenever I have the time (if only?).

Do you paint professionally, as a hobby artist, or both?

I’m most definitely a hobbyist, since I haven’t done any professional commissions (apart from some miniscule design work in the past), and what I do for living right now isn’t even remotely connected to art! That said, I’d most certainly would love to work as an illustrator, comic artist, or anything alike! My biggest wish would be to illustrate (and/or write) a children’s book someday.

What genre(s) do you work in?

I’m most comfortable when doing caricatures and comics; in the latter I can also infuse my story-telling abilities, the little there are. I prefer to illustrate living things; people, animals and nature itself. I’m not exactly keen on drawing in-animate objects, though I’m learning to force myself out of this comfort zone. I like to keep things simple and clean, or at least I try my best not to get lost in time-consuming detailing. Guess that’s one argument I can use as to why I prefer using simple black background on most of my works…

Whose work inspires you most — who are your role models as an artist?

I mostly draw (clever, eh?) influence and inspiration from animation, comics and video game art. I’m hesitant to drop any names because I don’t really have role models per se, and I tend to find pretty much any artist’s work interesting and inspiring. I guess as a Finn I could mention Tove Jansson and Mauri Kunnas. Jansson is of course famous for creating the Moomins, but she was also an accomplished artist and writer in her own right. Kunnas is a well-loved artist best known for his children’s books – pretty much every child in Finland has read at least one of his stories. In my opinion he’s also one of the greatest illustrators this country has to offer.

In addition to the aforementioned, I basically inhaled Franco-Belgian comics as a child; I loved reading Astérix, Lucky Luke, Iznogoud and the rest, so artists like Uderzo, Tabary and Tardi have also had a huge influence on me. Whenever possible, I browse through concept art of different video games. Video games are an interesting subject anyway because they not only combine art, design and technology but have to make all three work together even-handedly to create an enjoyable interactive experience.

 

How and when did you get to try digital painting for the first time?

If we don’t count MS Paint doodles, I think my first real try at digital painting was at elementary school somewhere around the late 90’s where we were introduced to Paint Shop Pro as a part of some “build your own website” -course. We were only able to use mouse for drawing, which was extremely clunky and made me think the whole idea of drawing and painting with a computer was just insane; I’d rather stick to my pencils and brushes, thank you very much. It wasn’t until later when I realised there are equipment specifically made for digital artwork, and once I got my hands on a Wacom tablet, I was sold.

What makes you choose digital over traditional painting?

Nothing? I mean, they are completely different working methods, and I still paint traditionally. Nevertheless, I’ve started to slowly leer towards digital painting, since it’s much easier to control your work and you can experiment more without the fear of ruining something irreversibly (especially when it comes to inking comics and other drawings). While it’s arguable whether digital painting is more cost-efficient than traditional methods in the long run, I think it’s at least less painful to start working with; you only need to set up your computer and programs ready, while with traditional painting you need to take out easel, canvas, gesso, colours, brushes, pencils? you get the idea. Furthermore, in my case where I don’t have a separate studio I have to find and clear a space in my apartment to set all that stuff up. Hassle, hassle!

How did you find out about Krita?

At one point I started to search for open source alternatives for the myriad number of programs I was using, and Krita was a recommendation somewhere to replace Photoshop, with high ratings from users.

What was your first impression?

I guess I’m still languishing in my first impression, because I haven’t been able to use Krita as much as I have wanted. In any case, my very first impression upon opening the program was a relieved “this looks familiar” sigh, and it was incredibly easy to start using Krita from there on.

What do you love about Krita?

Like I mentioned above, I find the interface very easy to use. I also love the fact the community is so alive, and you can find answers to just about any dilemma. All in all, Krita is a magnificent tool for making 2d artwork.

What do you think needs improvement in Krita? Is there anything that really annoys you?

Majority of my problems with Krita are due to the fact I’ve yet to learn most of its nuances, so I can’t really say about improvements that much. Krita seems to be quite a memory-hog, which can cause lot of lag and freezing especially when working with bigger canvases. That, and I’m not too happy with the text tool/editor either and prefer not to use it at all. It’s the one thing in Krita that’s needlessly complicated in my opinion.

What sets Krita apart from the other tools that you use?

Krita is the only digital painting software I use. Being open source is probably what makes it stand out the most. I use other open source programs as well, e.g. Blender, OpenToonz and Aseprite, but they obviously aren’t that much similar to Krita?

If you had to pick one favourite of all your work done in Krita so far, what would it be, and why?

Not much to choose from, but nevertheless, I’d say Megantereon, which was my first serious Krita artwork that I actually managed to finish. The main reason why I like it so much is simply because I had no initial planning; I took my Wacom, opened Krita and started doodling “something tiger-like”. After an hour or so, I began to realise there might be more to it, and continued working. The first version had plain fur, simplistic ear and lifeless green eye. I published it on deviantart.com, but wasn’t happy with the result, and later on decided to tweak the cat a bit. The fur got more detailed with stripes and spots, and I completely overhauled both the ear and the eye. The final result is what you see here, and I quickly replaced my previous attempt with this better version. I also like Megantereon as it neatly represents my interests (wildlife, history) and my preferred style (stylized, semi-realistic).

What techniques and brushes did you use in it?

Every brush I used is a Krita default. I used Basic and Fill Circle for outlining and some detail, Bristle Texture and Square for texturing and Inkpens for smaller detailing. There might be some Smudge tool I used too, but I honestly can’t remember.
I made a rough outlining on one layer against a black background and constructed the beast from bones to muscles to fur et cetera from there on. In the end I had laid out 23 layers with such genius descriptions as “skull”, “Layer 17”, “BLOOD SALIVA”, “hideTheBeard” and “washing”. In retrospect, I highly recommend people to use layers more scarcely if possible – they slow down the program, and the whole working process ends up confusing. At least name your layers better than I did!
I have two versions of the final work; with and without Noise Effect, which I used to achieve a more horror-esque vibe. I send the noiseless version here so the details aren’t obstructed too much.

Where can people see more of your work?

At the moment, my most recent work will be published at https://www.deviantart.com/jgrels . Don’t hold your breath, though; I publish work at a snail’s pace. You can also follow me on Twitter @JuliusGrels if you so desire, where I’m giving more information about my possible future projects, like a couple of webcomics I’ve planned to do.

Anything else you’d like to share?

Maybe just some general advice to any aspiring artist: never stop honing your skills, get out of your comfort zone, don’t fear experimenting, and most importantly; have confidence. Believe in yourself. Even if you don’t think you’re that great of an artist but love doing art, just keep working and publishing your work for everyone to see. You can doubt your talent, but never doubt your passion.

Finally, I want to send my thanks to the Krita Foundation and give my highest appreciation for the great work you’ve done. Thank you!

In my quest to improve the website of KDE, I updated the Plasma Desktop webpage. This is a huge improvement to the old website, which didn’t show any screenshots and didn’t list any Plasma features.

I already teased the improvements I made in the Plasma BoF in Milan to the Akademy.

Me (Carl Schwan) at the Plasma BoF showing the new Plasma Desktop webpage

The redesign got a lot of positive feedback by the Plasma team and after some small modifications the changes landed.

The webpage looks like this now:

Plasma desktop webpage

Thanks to all the people from the Promo team and vinz who helped me write the text and give me some ideas.

Improving the KDE websites: Junior Jobs

If you want to help improving the web presence of KDE, I regularly add some Junior Job to this Phabricator Workboard. Lots of things need to be updated, so don’t hesitate to propose other changes in the kde-www mailing list.

Discussion: Reddit or Mastodon

Now that the first beta of Qt 5.14 is getting closer, it is time to start talking about one of the big new features. We cannot possibly cover all the details around the graphics stack improvements and the road to Qt 6 in one post, so in part 1 and 2 we will describe the background and take a closer look at what 5.14 will ship with, and then dive into the technical details and future directions in another set of posts later on.

September 15, 2019

See, I told you I’d continue to blog about the cool things that have happened in KDE-land. 🙂

On that subject… Kate is now available for free on the Microsoft Store! So far the ratings are quite good. 🙂 KDE has always aspired to make our apps available to as many users as possible, and getting them on today’s distribution platforms continues that.

For those of you who switched from Windows or macOS, think back to how helpful it was that a bunch of your favorite apps (Firefox, Chrome, VLC, LibreOffice, Inkscape, Blender, Krita, etc) were already available on Linux and you already knew how to use them. Getting more of our apps on other platforms is a key part of easing the transition for future generations of switchers. 🙂

Beyond that, it’s been a somewhat light week because everybody was off at Akademy planning the future. A lot of really great things got discussed and decided, the results of which should start to trickle into subsequent weeks’ blog posts. 🙂 So stay tuned!

New Features

Bugfixes & Performance Improvements

User Interface Improvements

How You Can Help

This is a new section I’m adding to these weekly blog posts, highlighting a new way to get involved every week!

Do you have any web design experience? KDE community members are currently working on redoing the ancient and inconsistent assortment of websites hosted on kde.org, and help is needed! If this sounds like your cup of tea, join the kde-www mailing list and check out the tasks on the Phabricator Workboard.

You can also check out https://community.kde.org/Get_Involved, and find out other ways to help be a part of something that really matters. You don’t have to already be a programmer. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

After eight densely packed days Akademy 2019 is over. As always it was very nice to meet everyone again, as well as to meet some people I have been working with online for the first time in real life.

Akademy 2019 group photo CC-BY Photo by Paul Brown

Talks

There was some interesting feedback for my talks, and overlap with work of others:

  • Secure HTTP usage (slides) - my suggestion to encapsulate secure defaults for QNetworkAccessManager (QNAM) in a KF5 class that isn’t bound by as strict backward compatibility requirements as QNAM itself is didn’t seem popular with the Qt community, and started a discussion to instead fix this in QNAM itself, at least for Qt 6. That’s of course the even better solution.
  • KPublicTransport (slides) - I mentioned the lack of public transport data coverage especially in India and Asia, which resulted in Bhushan digging up a few Indian GTFS feeds that can probably be added to Navitia to fix that.
  • KDE Frameworks on Android (slides) - There’s some overlap with the needs of the Kirogi drone control app that Eike presented, regarding Android support in existing frameworks as well as further things like embedding an interactive map. So even more reasons to address this all properly on the KF5 level.

Akademy Awards

The yearly Akademy awards ceremony provided a very unexpected surprise as I was given this year’s Jury Award. Thanks to David for the nice words, and to everyone for signing the award :)

Akademy Jury Award 2019 Akademy Jury Award 2019

Meetings/BoFs

Monday to Friday saw a large number of meetings on a wide range of topics, the BoF wrap-up session videos (Monday, Tuesday, Wednesday/Thursday) provide a good overview on those. The below are my key takeaways from some of the sessions I participated in.

KDE Frameworks 6 (KF6)

With Qt 6 on the horizon we need to start looking into what we want to achieve with KF6, beyond just porting to Qt 6 and cleaning up obsolete/deprecated API. We now have a Phabricator workboard to collect and discuss plans and tasks around that, and hopefully we’ll have a sprint in the not too distant future to plan this in more detail. If you have issues with or wishes for KDE Frameworks that might require breaking API or ABI, or otherwise require more invasive changes such as moving functionality between libraries, now is the time to bring this up.

More details: David’s summary

PIM

The most important goal for me here was to get some more collaboration between the Plasma Mobile team and the currently desktop-focused PIM team going, and it looks like we made progress there :)

The move of KContacts and KCalendarCore to KDE Frameworks also got its final go and should be executed next week. The next module to look at is the KDAV protocol library, which ties in with reviewing the KF5 HTTP stack.

More details: Notes, Dan’s KAccounts integration demo

Creating KItinerary Extractor Scripts

I hosted a session on how to create custom extractors for KItinerary in which we looked at the kinds of data we can encounter, the methods and tools we have available for processing this, as well as on how KItinerary Workbench can help with writing and debugging extractors. As a result there were a few new extractor contributions already.

More details: Slides

KDE Frameworks on Android

Aleix had already addressed my top agenda item before the meeting, the F-Droid repository holding the nightly builds from binary factory is synchronized again correctly and should be distributing continuous updates again.

Other topics included where to put the JNI helpers from KDE Itinerary, and how to improve packaging with androiddeployqt for plug-ins with mandatory dependencies.

More details: Notes

KUserFeedback

With all the policy/legal/procedural questions now hopefully sorted out in form of the Telemetry Policy and the Software Privacy Policy we can finally start to deploy the KUserFeedback telemetry and survey system.

More details: Notes

Hacking

Next to all the meetings and discussions there was of course also some time for more hands-on work. My personal highlight is Kai’s work on KDE Itinerary browser integration, it has come a long way since our initial research on this.

We also managed to collect quite some sample data for improving KDE Itinerary, thanks to everyone who donated their data! Some of the immediate results are Daniele’s work on completing our understanding of the barcodes from Trenitalia, as well as initial support for Renfe tickets thanks to Luca.

Thanks

A big thanks to everyone who made this event possible, the Kennys, the local team and everyone else who helped, as well as the sponsors and the KDE e.V.! Akademy is immensely valuable, the above is just a tiny glimpse into the productivity we achieve when having everyone together for a week, not to mention the massive motivational boost we get out of this.

September 14, 2019

The last week I was in Milan with my wife Aiswarya to attend Akademy 2019, the yearly event of the KDE community. Once again it was a great experience, with lots of interesting conferences and productive BoF sessions (“Birds of a Feather”, a common name for a project meeting during a conference).

On Sunday, we presented our talk “GCompris in Kerala, part 2”. First, Aiswarya told some bits of Free-Software history in Kerala, gave examples of how GCompris is used there, and explained her work to localize the new version of GCompris in Malayalam (the language of this Indian state). Then I made a quick report of what happened in GCompris the last 2 years, and talked about the things to come for our next release.

GCompris talk at Akademy 2019

On Monday, I attended the KDE e.V assembly. On a side note, if you are a KDE contributor, you should probably consider joining KDE e.V. as an active member.

On Tuesday morning, we attended the KDE India BoF, where we discussed why the conf.kde.in conference didn’t happen for 2 years and how we can make sure it will happen next year.

On Tuesday afternoon, we had the GCompris BoF. We discussed about using the KDE Wiki for our documentation instead of self-hosting our own wiki. We also discussed the state of some translations that need to be updated. On that topic, if your language is not yet supported in the latest version of GCompris, maybe you can help us (you can check the translation status on this page). Also during this session, Aiswarya started working on some new options to adapt the speed in some activities to make them usable for people with cognitive or physical difficulties.

On Wednesday morning, we attended the “Wayland user feedback” BoF. I discussed with the plasma team about the biggest issues for using Krita on Wayland, namely tablet support and color management. The team seemed very interested to fix those, so I’ll try to provide useful feedback to help them.

On Wednesday afternoon, it was the “Day trip” to the Lake Como, a great occasion to relax and have fun with old and new friends in a beautiful place.

Congratulations to the team for organizing a great event, and also big thanks to KDE e.V. for providing travel support.

September 13, 2019

“Who are you people?”

That’s what the woman selling the ferry tickets at Varenna asked me once she realized I speaked Italian. She was definitely not used to a group of ~80 people wearing a blue badge. Another woman who was selling stuff on the street asked me if we were a school.

It’s been an amazing week and a very productive Akademy. A lot has been discussed and a lot has been decided. On my side, I’ve hosted a Dolphin BoF where we discussed both boring things (e.g. where to send bugzilla notification mails) as well as the awesome new features we are getting into Dolphin. Alexander talked about the status of the KIO Fuse project, while Méven talked about his work on the kioslave for the recently used files.

On the coding side, I wish I could have done more, but I lost a lot of times fighting with Google bureaucracy which was required to create a new API key for KIO GDrive. We need to urgently sort this out because it is blocking a working Google support in Kontact. Despite that, I managed to write a simple PoC of KUserFeedback usage in Dolphin. KUserFeedback is very easy to use if you just want the basic reportings (OS version, Qt version, and so on.). Hopefully it won’t be too hard to also get more interesting information, such as which are the features that our users use the most.

And finally, a big thanks goes to the Akademy team and the local team for the organization of the event. See you next year!

When test engineers hear about test automation the first word that comes to mind is of course Selenium which is the most popular testing library that helps us writing scripts for web applications. There are also ready solutions for mobile apps like Appium, Robotium, Espresso, UI Automator and others. The challenge is when we have some project-specific technologies that are not as easy to automate as web applications. But while using Qt we have some advantage over other non-web applications because there is some ready solution that we can use. 


I attended my first ever Akademy! The event was held at the University of Milano-Bicocca in Milan, Italy this year. And the experience was splendid. During the 2 day conference, I had the opportunity to talk at the Student Showcase, where all of the SoC students presented their work to the community. There were about 8 students, and everyone gave a good briefing on their project.

me speaking

My project this summer was with Kdenlive, the open source non linear professional video editor. I proposed to revamp one of the frequently used tools in the editor, called the Titler tool, which is used to create title clips. Title clips are video clips that contain text and/or images that are composited or appended to your video (eg: subtitles). The problem with the titler tool as it is, is that it uses QGraphicsView to describe a title clip and QGraphicsView was deprecated since the release of Qt5. This obviously leads to problems - upstream bugs crawling affecting the functionality of the tool and an overall degradation in the ease of maintenance of the codebase. Moreover, adding new features to the existing code base was no easy task and therefore, a complete revamp was something in sights of the developer community in Kdenlive for a long time now. I proposed to rework on the backend for the period of GSoC replacing the use of XML with QML and use a new rendering backend with QQuickRenderControl, along with a new MLT module to handle the QML frames. I was able to cover most of the proposed work, I seek to continue working on it and finish evolving the titler tool.

The folks from Kdenlive have always been very warm and helpful especially with the whole learning curve (which definitely was steep) and working with the community so far has been great, I’ve learned a lot from the experienced developers in Kdenlive and from the Kdenlive community. I seek to continue working with the Kdenlive team and KDE to continue making Kdenlive a great tool to use and a great community to be a part of.

All in all, Akademy was an unforgettable experience, I met a lot of brilliant people from the KDE community in person and the other SoC students from other parts of the world. I’m extremely thankful to the KDE community for presenting us, students, with such a fine opportunity and a platform to work and talk on our projects. Kudos to the Akademy Team for orchestrating such an event!

Here’s my GSoC Work Report: https://community.kde.org/GSoC/2019/StatusReports/AkhilKGangadharan

September 12, 2019

Wednesday continued the Akademy BoFs, group sessions and hacking in the morning followed by the daytrip in the afternoon to Lake Como, to have some fun, get away from laptops and get to know each other better. Thursday was back to BoFs, meetings and hacking culminating in a wrapup session at the end covering the last two days so that what happened in the different rooms can be shared with everyone including those not present.

Watch Thursday's wrapup session in the video below

Dot Categories:

Our Windows Store submission succeeded, we are now officially in the store.

Try out how the Kate text editor performs on Windows for your personal workflow.

If you see issues and want to help out, contributions are welcome on our GitLab instance.

Our Windows team is small, any help is very welcome! Thanks again to all the people that made it possible to use Kate nicely on Windows.

A few Kubuntu Members (and Councillors!) met Thursday before KDE Akademy’s end. We discussed the coming release (will be 19.10) and the upcoming LTS (20.10) – which will be Plasma LTS *and* Qt LTS. This combination will make this LTS super-supported and stable.

We also discussed snaps and when Ubuntu possibly moves to “all snaps all the time” for applications at least. This may be in our future, so it is worth thinking and discussing.

Tobias Fischbach came by the BOF and told us about Limux which is based on Kubuntu. This has been the official computer distribution of Munich for the past few years. Now however, unless the Mayor changes (or changes his mind) the city is moving to Windows again, which will be unfortunate for the City.

Slightly off-topic but relevent is that KDE neon will be moving to 20.04 base soon after release, but they will not stay on the Plasma LTS or Qt LTS. So users who want the very latest in KDE Plasma and applications will continue to have the option of using Neon, while our users, who expect more testing and stability can choose between the LTS for the ultimate in stability and our interim releases for newer Plasma and applications.

Of course we continue to ask for those of our users who want to help the Kubuntu project to volunteer, especially to test. We’ll soon need testers for the upcoming Eoan, which will become 19.10. Drop into the development IRC channel: #kubuntu-devel on freenode, or subscribe to the Kubuntu Development list: https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel

Since a few years Kate is working well on Windows. You can grab fresh installers since then from our download page.

But the visibility of it was very low for Windows users.

Already last year the plan was made to increase the visibility of KDE applications by getting them into the official Windows Store.

Like always, Akademy is a great chance to get the last bits ironed out and the stuff done!

Now, thanks to the help of Hannah von Reth and others, we finally got Kate submitted to the Windows Store!

The submission still needs to be processed by Microsoft, stay tuned when our nifty editor will really be available there for download!

Thanks to all people that contributed to this!

September 11, 2019

I am happy to Announce we have released Qt 5.12.5 today.

KDE Project:

Following Volker's last blog on this topic, here are some highlights of the recent work that has been done around Kontact / PIM during this summer. First of all, stats: there were around 1200 commits in the past two months, leading to the new 19.08 release.

KDE Itinerary

You can have a good overview of Volker's work by following this blog.

Kontact

It seems our team was mostly focused on cleaning, fixing and introducing little UI features during summer:

Laurent added folder specific exportation from PIM within its PIM data exporter, contact selection from LDAP servers, refactoring some PIM libraries to new ECM macros and cleaned up deprecated method preparing for a Qt 6 future.
In addition to that some bug fixes got in, most notably adding reminders to new events in KOrganizer, text-to-speech fixes and general KMail behavior corrections.

Reminders to new events in Korganizer:

Choosing a contact from LDAP server :

All of the libraries have been adapted to compile with Qt 5.13 and soonish we should reach 5.14 compilation state.

Volker spent time unifying instant message address storage in vCards to KContacts, KContacts soon to be its own framework. The visual style for inline messages in KMail's message viewer was updated too, following the Breeze style as you can see in the picture.

Visuals for inline message boxes in the mail view :

Sandro Knauß worked on the begining of an implementation for MemoryHole support : the idea is to encrypt the mail header (containing metadata) to enforce even further user privacy. In order to achieve that, they wrote a new interface between MimeTreeParser and MessageViewer so we now can update mail headers for later extraction, stay tune for more deails about that next blog posts. In addition and with the help of Glen Ditchfield they put their effort on making messagelib tests green again!

David Faure ported the all of KDE PIM to D-Bus activation as a way to start applications, which enabled the deprecation of KDBusServiceTrader and maybe in a long term future a refactor to simplify KLauncher.

Akonadi

Dan worked on a better support of PostgreSQL (better handling of table name case sensitivity and the sorting of versioned directories). Akonadi server received some love with a few cleanup and modernization treats, you will have more detail about what Dan cooked in his kitchen in his blog so stay tuned!

Infrastructure

Volker and Laurent made sure all KDE PIM modules would appear correctly under the api.kde.org, to make the KDE PIM codebase easier to follow and discover.

Help us make Kontact even better!

All these efforts to provide good free software to the world would not be possible without our committers, if you want to take part on that feel free to contact us #kontact and #akonadi IRC channels on Freenode, see the below section to get started:
https://community.kde.org/KDE_PIM/Development.

And again, if you are attending Akademy, feel free to come see us !

This is a guest post from Franck Arrecot due to technical issues with his blog.
Thanks Franck for writing up the above!

The KStars team is glad to announce the release for KStars v3.3.6 for Windows, MacOS, and Linux.

This release is packed with many small quality of life improvements and bug fixes.

Intuitive Popup Menu

We cleaned up the popup menu so that mount actions are more intuitive. Took this chance as well to add some lovely Breeze icons to the mix.


We will continue to make mount controls even more accessible, especially to users over VNC.

Live Debayering


The KStars Live Video window can now debayer frames in real-time, thereby allowing for color video streams.



FITS Viewer


A few improvements landed in FITS Viewer:

  • Updated Statistics display that can display value for each color channel separately, if present.
  • Faster loading times thanks to a performance patch by Hy Murveit.

Astrometry.net Config and Indexes


Robert Lancaster made huge improvements to the handling of Astrometry.net configuration management and indexes. This should make these features a lot more accessible to a wider pool of users.


You can edit the astrometry.net configuration file directly in KStars. Furthermore, you can easily add/remove folders that that contain the index files. Many users have the indexes files stored in external hard drivers, and with this feature, it is now very easy to add the additional folders so they get utilized by the solver.


This change is accompanied by changes to the index downloader. Now you can check all your collections, and you have the ability to download indexes to a particular folder in your collection. A green index file indicates that the file is available in the system and does not require to be downloaded.

Observatory Weather Info


Wolfgang Reissenberger continued his outstanding work in improving the Observatory Module. With this release comes weather data directly displayed in the module. Along with the configurable thresholds for Warning and Alert states, you can rest easily knowing that KStars can take the appropriate actions to protect your observatory from adverse weather conditions.


Meridian Flip


A small quality-of-life improvement to the Meridian Flip value. You can now toggle between Degrees (default) and hours. Many mounts indicate the meridian flip limit in degrees so we opted to make this as default.


Mount Control Motion Reverse


You can now reverse the direction of each axis of motion separately, in case you prefer to controls to behave in the way you expect them to in the Mount Control Panel.

Setting Coordinates Manually


The dialog now opens pre-populated with the currently selected object coordinates. You can easily switch between JNow, J2000, or your own custom Epoch.


Under The Hood


Yuri Chornoivan is the unsung hero of internationalization efforts in KStars. Many volunteers work in KDE internationalization effort and Mr. Chornoivan keeps a vigilant eye on KStars to make sure it remains accessible to the widest audience possibly globally.

Mr. Chornoivan replaced many obsolete functions in KStars with their up-to-date alternatives.


September 10, 2019

According to the now traditional schedule, Akademy 2019 started with two days of conference talks. Hosted by unixMIB at the University of Milano-Bicocca in Milan, Italy, the central conference of the KDE community attracted more than a hundred attendees during this past weekend. Many of them were attending Akademy for the first time ever, which is always a reason to celebrate.

For those of you who were not able to join us, we've prepared a recap of all the talks from this year's Akademy. The conference program on both Saturday and Sunday was split into two tracks after the lunch break, and included plenty of time for socializing (and hacking!) in between.

Day 1 - Saturday, September 7: Goals, Reports, and the Future of Qt

Akademy 2019 started in the morning of September 7 with an introductory session by Lydia Pintscher, President of KDE e.V., followed by the first keynote. In the keynote, Lars Knoll from Qt presented the path towards Qt 6 all the way from the very beginning of the project. Lars also spoke of what upcoming changes in Qt 6 may potentially impact the KDE ecosystem.

The next batch of talks was dedicated to the KDE community goals. Ivan Čukić started by presenting the progress of the Privacy and Security goal in his talk "Everything to hide: Helping protect the privacy of our users". Ivan pointed out that security and privacy should come before usability, even if some users hate it, because it's our duty and responsibility to protect them.


Ivan shows how to capture a password from an insecure application.

Eike Hein talked about the Usability and Productivity goal and wondered: "Are we there yet?". Massive improvements have been made to KDE software as part of this goal, and Eike emphasized the importance of communicating this progress (as illustrated in weekly blog posts by Nate Graham). The achievements of the third community goal - Onboarding New Contributors - were presented by Neofytos Kolokotronis, who listed the adoption of Matrix as a communication tool, the on-going adoption of GitLab, and the creation of the KDE Welcome team as some of the major moments.

After looking back at the previous set of goals, it was time to look forward to the new ones. During the panel with Ivan Čukić, Eike Hein, and Neofytos Kolokotronis, Lydia Pintscher announced the three new goals that the KDE community is going to focus on. The creators of the goal proposals spent some time talking about their plans and tasks that will kick off the new goals.

In the afternoon round of quick talks, Adriaan de Groot presented QuatBot, a meeting-managing bot he wrote for the Matrix IM service, and talked about the power and versatility of KDE Frameworks. Attendees also got a chance to hear how Carl Schwan brought in new contributors from Reddit and Aleix Pol dispensing valuable advice on how to organize a sprint.

Over in the Security track, Albert Astals talked about the cool ways developers can use oss-fuzz to test their code, and encouraged KDE developers to use it for projects such as Baloo, kfilemetadata, and PIM-related code. Volker Krause presented parts of the work carried out for the Privacy goal in his talk "Secure HTTP Usage", and warned about the importance of having secure defaults in KDE software.

The Community session included a talk on building developer portals by Ivana Isadora Devcic, followed by Ray Paik's talk on making a difference in the community. As a Community Manager at GitLab, Ray shared his experience with identifying crucial community metrics, attracting new contributors, and improving leadership and inclusivity efforts.

Meanwhile, the tech talk session continued with Marco Martin and Bhushan Shah discussing the future of Plasma on embedded devices. They rightfully pointed out that the assumption your software will only be used on a desktop is not true anymore, and explained how KDE Frameworks enable creating software for different platforms. Aleix Pol talked about the details of optimizing Plasma to run fast on low-end hardware; more specifically, on the Pinebook. Aditya Mehra presented a demo of Plasma and Mycroft being used to voice-control a car, and Kai Uwe Broulik gave an in-depth look into the overhauled notification system shipped with the latest version of Plasma.


Aditya shows us how some day KDE tech may control your car.

The first day of Akademy 2019 closed with reports by Google Summer of Code students developing fresh new code for KDE, and the KDE e.V. Board and Working Group reports that provided an insight into growth and health of the KDE community.

Day 2 - Sunday, September 8: New Technology, FOSS Revolution in Italy, and Akademy Awards

The second day of Akademy 2019 opened with a keynote "Developers Italia and the New Guidelines: Let the Open Source Revolution Start" by Leonardo Favario from the Team Digitale IT. Leonardo presented the work that his team has been doing to establish guidelines for Free and open source software distribution in the Italian administration. Continuing on a similar topic, Michiel Leenaars talked about NGIO (Next Generation Internet Zero); a EU initiative focused on helping non-profit organizations build a better Internet for everyone.

The tech talks on Sunday were fascinating, with new, innovative technology introduced left and right. Cristoph Haag explained how Collabora made Plasma desktop usable in a Virtual Reality environment, and set up demos that the attendees could play with during the day. Trung Thanh Dinh showed how AI face recognition can be used in digiKam, KDE's photo management app, and Eike Hein presented a completely new KDE application called Kirogi, which provides a FLOSS ground control for consumer drones that works on mobile devices.


Eike points to the skies, which is where KDE is going next with Kirogi.

In the afternoon sessions, Katarina Behrens from the Document Foundation talked about integrating LibreOffice products with KDE Plasma, while Timothée Giet and Aiswarya Kaitheri Kandoth told the story of how a single floppy disk with LaTeX on it resulted in schools using GNU/Linux and GCompris in Kerala, India.

Volker Krause gave two more talks - one about the development and usage of KPublicTransport, a framework for interacting with data from public transport operators; and another on how the limitations of the Android development platform impact KDE Frameworks. In another developer-oriented talk, Daniel Vràtil gave his perspective on using C++ to build APIs. Attendees also heard from Caio Jordao Carvalho, who presented the progress on kpmcore, the heart of KDE's partitioning and disk management tools.

Meanwhile, a session on different ways to package and distribute KDE software was chaired by Dan Leinir Turthra Jensen, with participants explaining advantages and shortcomings of different solutions (AppImage, Flatpak, Snap, Steam, Google Play...).

The session was followed by two community-related talks. In "What We Do in the Promos", Paul Brown gave a realistic look into how people outside the FOSS bubble perceive (or do not perceive) KDE software, and explained the reasoning behind activities carried out by KDE Promo. Afterwards, Aniketh Girish explained how code reviews can be toxic and put off new contributors, so he offered some advice to prevent that. Last but not least, Dan Leinir Turthra Jensen presented the "Get Hot New Stuff" project and its development.

Following the lightning talks from Akademy 2019 sponsors, the second day of the conference closed with the announcement of Akademy Awards winners:

  • Best Application: Marco Martin for work on the Kirigami framework
  • Best Non-Application: Nate Graham for persistent work on the "KDE Usability & Productivity" blog
  • Jury Award: Volker Krause for long-term contributions to KDE including KNode, KDE PIM, KDE Itinerary and the UserFeedback framework

The organizers win a special award for an excellent Akademy.

Akademy 2019 continues this week with daily BoF (Birds of a Feather) sessions, meetings, and various activities that help us strengthen the community bonds. The recap video of the first BoF day is already available - stay tuned for more. And for something completely different, take a look at the sketchnotes from Akademy 2019 talks by Kevin Ottens.


Kevin sketches Akademy talks.

About Akademy


Akademy 2019, Milano

For most of the year, KDE - one of the largest free and open software communities in the world - works online by email, IRC, forums and mailing lists. Akademy provides all KDE contributors the opportunity to meet in person to foster social bonds, work on concrete technology issues, consider new ideas, and reinforce the innovative, dynamic culture of KDE. Akademy brings together artists, designers, developers, translators, users, writers, sponsors and many other types of KDE contributors to celebrate the achievements of the past year and help determine the direction for the next year. Hands-on sessions offer the opportunity for intense work bringing those plans to reality. The KDE community welcomes companies building on KDE technology, and those that are looking for opportunities. For more information, please contact the Akademy Team.

Tuesday continued the Akademy BoFs, group sessions and hacking. There is a wrapup session at the end of the day so that what happened in the different rooms can be shared with everyone including those not present.

Watch Tuesday's wrapup session in the video below

Dot Categories:

The OpenForum Academy held its second 2019 workshop in Brussels this week. OpenForum Academy is a European-based independent think tank which explains the merits of openness in computing to policy makers, industry and communities across Europe. This workshop series aims at being a forum for practitioners, academics and policy makers to collaborate on various topics of openness and freedom. It is organized by OpenForum Europe, enabling it to bridge between the abstract academic world and policy discussions at the European Commissions. We set out to explore focus topics to answer current challenges to openness that the academy will develop insights and recommendations for. These topics will shape the work of OpenForum Academy for the near future.

A bit later than expected, because of a regression found during beta testing, we’re releasing Krita 4.2.6. Over 120 people have participated in the beta test survey, so this is something we’ll repeat for the next release.

This release also contains an important workaround for users with an AMD Ryzen 5 3500 CPU. This CPU has a bug in its hardware random generator that caused crashes.

New features:

  • Add new layer from visible to layer right-click context menu.
  • When running Krita for the first time on Windows, Angle is now the default renderer. Note that if you have an NVidia GPU and Krita’s window is transparent, you need to select Angle manually in Krita’s settings; if you have another GPU and you have problems with the canvas not updating, you might need to manually select OpenGL in the same window.

We want to especially thank Karl Ove Hufthammer for his extensive work on polishing the translatable string.

Bugs fixed

  • Allow selection overlay to be reset to default. (BUG:410470)
  • Set date for bundle creation to use ISO-Date. (BUG:410490)
  • Fix freeze with 32bit float tiff by using our own tiff reader for the thumbnails. (BUG:408731)
  • Ensure filter mask button is disabled appropriately depending on whether the filter supports it. (BUG:410374)
  • Enable the small color selector if opengles is available as well (BUG:410602)
  • Fix mixed Zoom, Pan, Rotate on macOS (BUG:410698)
  • Ensure that checkboxes are shown in menus even when using the fusion theme
  • Isolate Layer Crash (BUG:408785)
  • Properly fix font resetting when all the text in the editor removed (BUG:409243)
  • Fix lags in Move Tool when using tablet device (BUG:410838)
  • Fix Shift and Alt modifiers in Outline Selection Tool (BUG:410532)
  • Ensure Convert group to Animated Layer shows text in the toolbar. (BUG:410500)
  • Allow ‘Add Clone Layer’ to Work on Multiple Layers (BUG:373338)
  • Fix saving animated transparency masks created through conversion (BUG:409895)
  • Partially fix the curve change despite ‘Share curve across all settings’ checked (BUG:383909)
  • Try harder to make sure that the swap location is writable
  • Properly handle timezones in bundles
  • Make sure all the settings dialogs pages are always shown in the same order
  • Make the settings dialog fit in low-res screens (BUG:410793)
  • Remove misleading ‘px’ suffix for ‘move amount’ shortcut setting
  • Make string for reasons for image export problems translatable (BUG:406973)
  • Fix crash when creating a bezier curve (BUG:410572)
  • Fix deadlocks in KoShapeManager (BUG:410909, BUG:410572)
  • Fix a deadlock when using broken Wacom drivers on Linux (BUG:410797)
  • Fix absolute brush rotation on rotated canvas (BUG:292726)
  • Fix deadlock when removing reference image (BUG:411212)
  • Fix a deadlock in handling of vector objects (BUG:411365)
  • Fix autosave saving only once (BUG:411631)

Download

Windows

Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes.

Linux

(If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.)

OSX

Note: the gmic-qt is not available on OSX.

Source code

md5sum

For all downloads:

Key

The Linux appimage and the source .tar.gz and .tar.xz tarballs are signed. You can retrieve the public key over https here: 0x58b9596c722ea3bd.asc. The signatures are here (filenames ending in .sig).

Support Krita

Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time.

The GSoC coding period is now over and it is only appropriate that it is discussed what has been achieved and what needs to be done to see KIOFuse officially included in as a KDE project, allowing the 75324 bug report to be finally closed after a whole 15 years! Before I continue, I’d like to thank my mentors, Fabian Vogt (fvogt) and Chinmoy Ranjan Pradhan (chinmoyr) for all their support and advice during the course of GSoC. I’d also like to thank various reviewers of upstream code who quickly reviewed and merged code that I submitted. My previous posts (here and here) have discussed the work accomplished in May/June in detail.

Currently the way KIOFuse works is that I/O is implemented on top of a file-based cache, in particular, on temporary files. Reading and writing occurs on the temp file. Flushing works by calling KIO::put, which sends the data in our cache to the remote side via a TransferJob. However, whilst this is happening, there’s nothing stopping write requests coming in for that same node, which marks the cache as dirty. Once the job is done, we check if the node is dirty. If it is, we start another TransferJob, as it would be incorrect to say that the node is flushed. If this scenario keeps occurring, we’d never reply with a successful flush. A simple solution, which doesn’t guarantee that this scenario doesn’t occur but can decrease its likelihood, is as follows: every time a chunk of data is requested by the TransferJob we check if the node is dirty. If so, if it is less than 85% complete, restart the job, otherwise let it finish. The patch for this can be found here.

Another task was to refresh the attributes of nodes after a while. Currently, the existence of nodes is only checked lazily, i.e. if lookup or readdir are called. For each new node found (or created) the stat struct (the node’s attributes) is filled with the values from KIO::UDSEntry. However, this is only done once and any changes on the remote side are not noticed. One could always refresh the attributes on every lookup but that may be overzealous, and so the solution chosen was to do a KIO::listDirin readdir if it hasn’t been called on that node in the last 30 seconds. The patch for this can be found here.

Another problem that KIOFuse had was that write permission wasn’t checked, we’d just forward the permission bits received from the remote side and if we in fact couldn’t write we’d only know during flush, which is a bit too late. Although we cannot fully guarantee write access, there are steps taken to try and get as close as possible to a guarantee. First we start a KIO::chown job, which changes the owner to ourself. If we can, then we assume that the owner permission bits are valid, and forward them. If KIO::chown isn’t supported we just allow write requests to go through, as there is simply no way we can actually check. If the job fails (i.e. we’re not the owner of the file), then changing the modification time can actually help us; it doesn’t help us if we’re the owner as we can change the modification time independent of our write permission. If we can change it, then we can write, if KIO::setModificationTime isn’t supported, we just allow write requests to go through. The patch for this can be found here.

As mentioned previously, file I/O is implemented on top of a file-based cache. Data on the remote side is transferred via the help of KIO::get and KIO::put. Some slaves support KIO::open, in particular sftp/smb/file, which means that it is possible to engage in seek-based file I/O. This means that we do not need to use a file-based cache for those slaves, and can simply read and write directly from and to the remote side. This obviously introduces a bit more latency, but also means that we can easily handle large files, such as videos. The biggest issue with getting this implemented is that the documentation on the how to implement KIO::open correctly and its assorted functions consists of one-liners. This means that each slave author has their own idea of what it means to read/write/seek. The solution to this was to study what all three slaves did, and converge on one definition of what we mean by the different functions provided by the FileJob interface. In addition several bugs were squashed. The most surprising of which was the close signal never being emitted; a big sign that no one has used this API properly since its inception in 2006! Issues in the smb/sftp slaves and the mtp slaves were also fixed. The above mentioned patches have all been merged meaning that KIOFuse now requires KF5 Frameworks 5.62 (and kio-extras 19.08.1). The patch that allows KIOFuse to take advantage of KIO::open can be found here.

The main benefit of KIOFuse is obviously integration into KIO itself. The idea is to create a KIOFuse KDED module loaded at startup, which starts the kio-fuse process. On the KIO side, every time we wish to send a KIO URL to an app that we identify as not supporting the given URL, a DBus request is sent to our KDED module, which mounts the URL and sends back the local path of the URL. We then pass it to the application. The beauty of this is that the conversion is transparent and requires no setup from the user; it also induces no slowdown to KIO-enabled applications. In fact, many people won’t even be able to tell that they’re using KIOFuse, non-KDE apps will seamlessly access the KIOFuse path instead of KIO URLs they don’t understand. The patch for the KDED module can be found here, and the patch in KIO that uses that KDED module can be found here.

So, what’s required for KIOFuse to be production ready? Firstly, some of the linked MRs have not been merged, which just requires a bit of time to get it reviewed and in. Secondly, there are still some bugs that need resolving. GDrive files which don’t have a size (usually GDoc files) get corrupted on read (and potentially write), this issue has been looked at but I’ve not yet found a resolution. MTP doesn’t seem to work at all for some reason. Whether this is an issue in the MTP slave or KIOFuse has not been determined, which is making it harder to resolve this issue. Another thorny issue is that conversion from a local path to a remote URL is a bit buggy. This should be resolvable, but it needs to time to get it right. Ideally, we’d like more testing on all slaves. One potential cool way of testing KIOFuse is using fio, which performs several intensive tests, usually for kernel file systems; this is something we definitely should explore. There is also the question of how KIOFuse will be included in KDE, for example, will it be a framework?

Note that I’m at Akademy, so feel free to ask any questions about it either there or on this blog.

September 09, 2019

Monday was the first day of Akademy BoFs, group sessions and hacking. There is a wrapup session at the end of the day so that what happened in the different rooms can be shared with everyone including those not present.

Watch Monday's wrapup session in the video below

Dot Categories:

Or: More preparation for the autumn of version 5 of KDE Frameworks

Consumer and producer interest in legacy in a library API

During the development life-time of a library in a API-compatible major version, quite some part of its API can be found to be insufficient and thus be deprecated in favour of API additions that serve the purpose better. And the producers of the library want to make the consumers of the library aware about those changes, both to make the investment into the improved API pay out for the consumers as well as prepare them for the future removal of the old API. As a deprecation note in the API documentation or release notes might be missed for existing consumer software, the compiler is pulled into the game using deprecation attributes on the API symbols, so developers looking at the build log have a chance to automatically be pointed to use of deprecated API in their software.
Next, once the chance for dropping the legacy parts of an API arrives on a change to a new major version, again having the compiler support pointing out that part is easier then grepping over the codebase for potentially pattern-less informal notes in code comments or the documentation.

At the same time consumers of a library might be well aware about API deprecations. But they might want to support a range of released versions of the library, using a single code base without variants for the different library versions. They might have more important issues to solve than deprecated API and want to get rid of any deprecation warnings at all. Or they want to ensure that no new uses of deprecated API is added.
Others consumers again might want to use custom builds of the library with all the implementation for deprecated API dropped, at least until a certain version, to save size when bundling the library product.

KDE Frameworks: … TODO

KDE Frameworks, the continuation of the “kdelibs” bundle of libraries, but with emphasis on modularization, is now at API-compatible major version 5. Yet one can find legacy API already deprecated in version 3 times, but done so only as comment in the API dox, without support by the compiler. And while lots of API is also properly marked as deprecated to the compiler, the consumer has no KDE Frameworks specific option to control the warnings and visibility. While some “*_NO_DEPRECATED” macros are used, they are not consistently used and usually only for deprecations done at version 5.0.

As you surely are aware, currently the foundations of the next generation of Qt, version 6, are sketched, and with the end of 2020 there even exists a rough date planned for its initial release. Given the API breakage then happening the same can also be expected for the libraries part of KDE Frameworks. And which would be a good time to also get rid of any legacy cruft.

New: ECMGenerateExportHeader, enabling more control about deprecated API

A proposed new addition to KDE’s Extra CMake Modules (ECM) should allow to improve the situation with KDE Frameworks, but also other libraries: ECMGenerateExportHeader (review request).

It would generate an extended export macro definition header which also includes macros to control which parts of the deprecated are warned about, are visible to the compiler for library consumers or included in the build of the library at all. The macros would be inspired by similar macros introduced with Qt 5.13, so the mind model can be transferred.
(Inspired, but not a plain copy, as e.g. the name “QT_DISABLE_DEPRECATED_BEFORE” is a bit misleading, as the macro is specified to work as “before and including”, so the proposed inspired name uses “*_DISABLE_DEPRECATED_BEFORE_AND_AT”.)

More elaborated example usage would be like this (note the difference between FOO_BUILD_DEPRECATED_SINCE and OO_ENABLE_DEPRECATED_SINCE, see documentation for explanation):

CMakeLists.txt:

include(ECMGenerateExportHeader)

set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control what part of deprecated API is excluded from build [default=0].")

ecm_generate_export_header(foo
    VERSION ${FOO_VERSION}
    EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
    DEPRECATION_VERSIONS 5.0 5.12
)

Installed header foo.hpp:

#include <foo_export.h>

enum Bars {
    One,
#if FOO_BUILD_DEPRECATED_SINCE(5, 0)
    Two,
#endif
    Three,
};

#if FOO_ENABLE_DEPRECATED_SINCE(5, 0)
/**
  * @deprecated Since 5.0
  */
FOO_DEPRECATED_VERSION(5, 0)
void doFoo();
#endif

#if FOO_ENABLE_DEPRECATED_SINCE(5, 12)
/**
  * @deprecated Since 5.12
  */
FOO_DEPRECATED_VERSION(5, 12)
FOO_EXPORT void doBar();
#endif

class Foo {
#if FOO_BUILD_DEPRECATED_SINCE(5, 12)
  /**
    * @deprecated Since 5.12
    */
  FOO_DEPRECATED_VERSION(5, 12)
  virtual void doFoo();
#endif

Source file foo.cpp:

#include "foo.hpp"

#if FOO_BUILD_DEPRECATED_SINCE(5, 0)
void doFoo()
{
    // [...]
}
#endif

#if FOO_BUILD_DEPRECATED_SINCE(5, 12)
void doBar()
{
    // [...]
}
#endif

#if FOO_BUILD_DEPRECATED_SINCE(5, 12)
void Foo::doFoo()
{
    // [...]
}
#endif

Other, better approaches?

The author is not aware of other approaches currently, but would be happy to learn about, to compare, improve, or even discard in favour of another the proposed approach.

Please also have a look at the documentation for the proposed CMake macro ECMGenerateExportHeader (review request) and tell your thoughts.

For this macro being applied, see a patch for KCoreAddons and a patch for KService.


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.