KDevelop 5.6 released

We are happy to announce the availability of KDevelop 5.6 today.

This release brings half a year of work, focused mainly on stability, performance, and future maintainability. Many existing features have received small improvements again, and there is one highly-visible addition: optional display of inline notes for problems at the end of the line (commit). Learn more at David Redondo's blog post introducing this feature.

KDevelop 5.6.0 in action, showing inline problem notes

Improved CMake project support

  • Also highlight CMake 'Generating done' messages. (commit)
  • Do not remove project information when ChooseCMakeInterfaceJob fails. (commit)
  • Fix a cmake test linker error with Qt 5.9. (commit)
  • Optimize CMakeManager::fileInformation for path lookups. (commit)
  • CMake: trim build dir parameters we read from configuration files. (commit)
  • CMake: don't add .rule files to targets. (commit)
  • CMake: skip utility targets with empty sources. (commit)
  • Reload project when non-{generated,external} CMake file becomes dirty. (commit)
  • CMake-file-api: query for and parse cmakeFiles. (commit)
  • Support grouping of cmake targets into sub folders. (commit)
  • Actually use the cmake-file-api for project import, if possible. (commit. fixes bug #417202)
  • Increase error reporting on CLI when cmake import fails. (commit)
  • Actually parse the cmake-file-api response files. (commit. See bug #417202)
  • Start implementation of cmake-file-api support. (commit. See bug #417202)
  • Improve error handling when failing to create cmake build dir. (commit)

Improved C++ language support

  • Take -U into account when extracting defines from compile flags. (commit)
  • Allow passing custom args to clang through clang-parser utility. (commit)
  • KDev-clang: don't skip unexposed declarations from different files. (commit. fixes bug #402066)

Improved PHP language support

  • Update phpfunctions.php to phpdoc revision 350290. (commit)
  • Support PHP 7.1's syntax for catching multiple exceptions. (commit)

Improved Python language support

  • Support for Python 3.9. (commit. fixes bug #419290)
    • Distro packages may be compiled against an earlier CPython version, and thus not include this.
  • Set parser feature version correctly for Python 3.8+. (commit)
  • Fix highlighting range bugs with CPython 3.8.2+ (commit)

Other Changes

  • Fix keyboard focus for plasmoid. (commit. fixes bug #422774)
  • Only reload sessions in dataengine when relevant files/paths change. (commit)
  • Show empty sessions in data engine. (commit)
  • Sublime: fix tab bar base frame not being drawn between tabs & view status. (commit)
  • Associate loaded breakpoints with a moving cursor. (commit. fixes bug #424431)
  • Make sure DebugController is initialized before UI is shown. (commit. fixes bug #424430)
  • Remove "text/x-diff" alias from supported MIME types. (commit)
  • Support also new name KSysGuard of what was before named KF5SysGuard. (commit)
  • Execute: remember the option to kill a process that is already running. (commit)
  • Make compile with MSVC++ 19.24. (commit)
  • Optimize and improve environment variable expansion. (commit)
  • Support escaping backslash before dollar in environment variables. (commit)
  • Consider catchpoint to be a code breakpoint. (commit)
  • Actually remove temporary item repository directories. (commit)
  • Workaround behavior change in QUrl::adjusted(QUrl::NormalizePathSegments). (commit)
  • Prevent recursion in environment variable expansion. (commit)
  • Don't crash when there is no documentation for a given URL. (commit)
  • Skip unexposed DecompositionDecl. (commit)
  • Allow expansion of custom defined variables inside other variables. (commit)
  • Allow usePreview=true for user-created source formatter styles. (commit)
  • Clean up AStyleFormatter declarations. (commit)
  • [Documentation] Allow link following between providers. (commit)
  • Only cache PCH and completion results for files opened in editor. (commit)
  • Fix Ctrl+mouse_scroll zoom of documentation view. (commit)
  • Use data-error/warning/information icons to mark problems. (commit)
  • Fix resetting documentation view's zoom factor via Ctrl+0 shortcut. (commit)
  • Allow navigating with forward & back mouse buttons from CMake and ManPage home pages. (commit)
  • Fix documentation view navigation via forward & back mouse buttons. (commit, commit)
  • Do not force update when reloading projects. (commit)
  • ProblemNavigationContext: fix pixel-scaled icons in problem tooltip. (commit)
  • Jump to declaration when definition file doesn't belong to a project. (commit)
  • Do not canonicalize paths to non-existent files. (commit)
  • Do not include end-of-line markers in build dir settings. (commit)
  • Don't crash when we fail to find a screen for the active tooltip. (commit. See bug #417151)
  • Unbreak duchainify. (commit)
  • Don't crash when signatures don't match in AdaptSignatureAssistant. (commit)

Get it

Together with the source code, we again provide a pre-built one-file-executable for 64-bit Linux as an AppImage. You can find it on our download page.

The 5.6.0 source code and signatures can be downloaded from download.kde.org.

Should you have any remarks or in case you find any issues in KDevelop 5.6, please let us know.

kossebau Mon, 2020/09/07 - 19:09
Category
Tags

Over the last year, I have lost my ability to blog frequently about my code contributions and there has been around 1.5 years since my last post about marK. If you don’t know what marK is, please read the mentioned post here:

In the meantime, a lot of things have happened. Now the project has an official KDE repository and I have been working with Jean Andrade (jyeno) on some improvements, trying to include more interesting features for a release.

I have improved its GUI, so it is completely different from what you have seen in my previous post. Of course, it still needs some fixes and we need to change some parts of the GUI to be compatible with KF5, but now we have an idea of how marK is going to show its files, options, etc.

Now we can train an AI model to detect Konqis on images, haha. 🙂

Jean has worked on marK during Season of KDE and Google Summer of Code. During SoK, he has helped on some code refactoring and has implemented important features related to image annotation such as the XML/JSON import/export process and temporary files.

Example of XML exported file:

<annotation>
  <object>
    <class>konqi</class>
    <Polygon>
      <pt>
        <x>616</x>
        <y>325</y>
      </pt>
      ...
      <pt>
        <x>616</x>
        <y>325</y>
      </pt>
    </Polygon>
  </object>
</annotation>

Example of JSON exported file:

[
  {
    "Class": "konqi",
    "Polygon": [
      {
        "pt": {
          "x": "616",
          "y": "325"
        }
      },
      ...
      {
        "pt": {
          "x": "616",
          "y": "325"
        }
      }
    ]
  }
]

I have worked on improving marK architecture, so now we have a Painter structure to help on dealing with different types of data in the Container widget. During GSoC, Jean has worked on implementing text support, which allow you to annotate textual datasets for natural language processing tasks.

Text annotation support.

We are currently working on some bug fixes to prepare it for a release (I hope so). See you soon!

Monday

7 September, 2020

During the Annual General Meeting of KDE e.V. at Akademy 2020 elections were held for three board positions. The terms for Aleix, Eike and Lydia were expiring. All three ran for re-election and were re-elected by the membership of the association. As a result, the board and the board-roles are unchanged relative to 2019. The newly-re-elected members will serve 3 year terms.

I had the pleasure of speaking at Akademy 2020 this weekend. This year Akademy is virtual, but I still got the feeling of a very interactive event. Interesting questions, greenroom for the speakers, and generally a nice experience. Big thank you to the organizers!

The video below should start roughly when I go on stage.

For the interested listener, you can find the slides here: https://e8johan.se/presentations/2020-09%20akademy%20v1.1.pdf.

In the day job we use Microsoft Teams. The good news is that it is running on the Linux Desktop, and specifically KDE. So far, so good, however, there was a problem with screensharing for me.

Whenever I tried to share my KDE screen, the screen became black, surrounded with a red rectangle as indicator for the shared area. The people who I shared with also just saw the black area, and also the mouse pointer as me.

The problem is described in a bugreport and there are two ways of solving it:

  1. Enable compositing: The red indicator rectangle requires that the window manager supports compositing. KWin can of course do that, and with that enabled, sharing works fine including the red rectangle.
  2. If compositing can or should not be used there is another workaround: As the bug report shows, renaming the file /usr/share/teams/resources/app.asar.unpacked/node_modules/slimcore/bin/rect-overlay so that it is not used by teams fixes it as well. Obviously you wont have the red rectangle with this solution.

That said, it is of course preferable to use an open source alternative to Teams to help these evolve.

Sunday

6 September, 2020

Programming Languages, Child's Play, and Big TVs

Day 2 of the conference stretch of Akademy (day 3 of the overall event) kicked off with a heavy-duty programming courtesy of Ivan Čukić who talked about C++17 and 20 Goodies. Most KDE applications are developed using C++ so Ivan covered the new features that C++17 and 20 bring and how they could be combined with each other.

Something more user-centric was going on in Room 2, where Marco Martin and Aditya Mehra were Showcasing Plasma Bigscreen, KDE's interface for large smart TVs. Marco and Aditya took attendees through the various features and the technology that powers Bigscreen, such as Plasma, Kirigami, and KDE Frameworks with a touch of Mycroft's open-source voice assistance platform. You can try Bigscreen now by burning it to a micro SD card and loading it into a Raspberry Pi 4 hooked up to your TV.





Plasma Bigscreen melds Plasma, Mycroft and a Raspberry Pi to make any TV a smart TV.

In the next slot, the audience in Room 1 was subject to another talk about programming languages, in this case, Rust from a KDE Perspective. In this talk, Méven Car explained what Rust could offer to the KDE developer community and the features that made it a unique programming language.





Janayugam: The Indian daily newspaper that took the leap to Free Software.

In Room 2, we learned about a success story of KDE in the Real World™: back in October 2019, the staff of Janayugom, a local daily newspaper in Kerala with 100,000 readers, decided to move their publication to Free Software. In his presentation on Free Software, Press Freedom & KDE, Ambady Anand S., a sysadmin involved in the move, told us the story of how the migration went.

Later, back in Room 1, Andreas Cord-Landwehr introduced a different way of developing in his talk Test It! – Unit testing for lazy developers. Andreas proposed developers turn things on its head and prepare tests for the code before actually writing the code. He argued that code written to pass tests was leaner and more focused. Andreas also discussed why automated tests are important for projects and strategies on how to design them.

Meanwhile, in Room 2, Timothée Giet was Celebrating 20 Years of GCompris, as well as the fact that the universally acclaimed classic FLOSS toolset for teachers is nearing version 1.0. It only took two decades! Seriously though, Timothée showed us some of the new activities which are coming to GCompris, such as new counting and arithmetic games, and a fun-looking electric circuits simulator.

Next up in Room 1, David Faure told us about KIO: A Story of Young and Old Jobs. The presentation aimed at application developers and KIO contributors gave an overview of the job mechanism as it is used in KIO, laid out the jobs added in the last two months and explained the concept of "delegates" which are used to solve the inverse dependency problem.

In Room 2, Marta Rybczynska told us about her Year in KDE from Outside. During her year "away," she analyzed media reporting on KDE and tracked what news sites, blogs, and podcasts chose to focus on when they talked about KDE.

Next up in Room 1 Daniel Vrátil talked about Static Code Analysis with Gitlab CI. Daniel showed the benefits of using static analysis tools and linters to automatically check code quality, and explained how to configure GitLab CI to run those tools automatically on each pull request or as a part of regular builds.





GCompris, the world's favorite educational software for children, celebrated its 20th anniversary at Akademy 2020.

In Room 2, Leinir and Andrew Shoben literally couldn't hide their excitement while presenting KDE Wags Your Tail, in which they explained how to control animatronic tails and ears using software based on free software and KDE's Kirigami framework.





The news of the availability of KDE-controlled tails caused sensation among a certain demographic.

The first set of the day's talks wound up with three 10-minute fast track talks in which Bhushan Shah talked about his experience with and gave advice on online sprints; Adriaan de Groot explained the Fiduciary License Agreement, a tool that the KDE community uses to manage licensing in the long-term; and Kai Uwe Broulik revealed some of the less obvious tips and tricks to get the most out of KDE's Plasma desktop.

After a four-hour recess, the KDE Community got together again to listen to the event sponsors.
KDE displayed deep gratitude to Canonical, KDAB, MBition, openSUSE, GitLab, Froglogic, Collabora, CodeThink, FELGO, DorotaC.eu, The Qt Company, Pine64 and Tuxedo for their generosity thanks to which Akademy is made possible.

Next up in Room 1, Dimitris Kardarakos talked about Creating a Convergent Application Following the KDE Human Interface Guidelines. Dimitris introduced attendees to the primary components of Kirigami and showed how an application can look equally good on the desktop and mobile. Using the Calindori calendar app as an example, Dimitris aimed to inspire attendees to create their own Kirigami applications.

Meanwhile, in Room 2, Nicolas Fella explained in Konquering the Droids that, to stay relevant, KDE needed to expand from its traditional desktop space and into the mobile world. He argued the most realistic and quickest way to do that was to create apps for the Android ecosystem, and explained the porting process.

Aleix Pol took to Room 1's virtual stage again in Getting into KWin and Wayland to explain how contributors could get involved with the development of KDE's Wayland experience.





Doctor Luis Falcón explains how they ported GNUHealth to mobile thanks to Python, Qt and KDE.

In Room 2, Doctor Luis Falcón told us about MyGNUHealth: GNU Health Goes Mobile with KDE and Kirigami. GNU Health (GH) is a Libre Health and Hospital Information System which has been deployed in many countries around the globe, from small clinics to very large, national public health implementations. MyGNUHealth is the GH's Personal Health Record application that integrates with the GNU Health Federation and is focused on mobile devices. Dr. Falcón told us about what led him to choose KDE's Kirigami framework to develop MyGNUHealth and the technical insights gained by the community behind the project.

Following these two talks, Neal Gompa presented Fedora KDE in Room 1, explained how it started and what makes it special within Fedora; while at the same time in Room 2, Aniqa Khokhar introduced us to Change Management and helped us learn how to accept changes and newcomers in KDE.

A bit later in Room 1, Volker Krause showed how, by Using Wikidata and OpenStreetMap data, it was possible to make applications smarter. Volker went into depth and explained how those two data sets are structured, how they can be accessed, how to comply with their licenses, and how developers can make use of them for their apps.

In Room 2 Catharina Maracke spoke to attendees about Open Source Compliance. Catharina told us about how in today's complex world of OSS license compliance, it is very important to know the basics of copyright and licensing structures as well as some of the relevant tips and tricks for the most common OSS licenses.





Aniqa Khokhar discusses change and how to overcome the anxiety it generates.

A little later in Room 1, David Edmundson and Henri Chain co-hosted a talk on Next Generation Application Management and explained how using cgroups, developers could contribute to making everything amazing.

And, speaking of amazing, in Room 2, Massimo Stella told us about Kdenlive's Journey to Being a Leading Open Source Video Editor. He showed us a video of Kdenlive's new capabilities and provided a live demo of the new features of KDE's powerful video editing software.

The regular talks wrapped up with two technical talks aimed at developers: In Room 1 Carson Black talked about API Design and QML and in Room 2 Benjamin Port explained how Plasma's System Setting have recently all been ported to KConfigXT and the advantages gained from the move in System Settings: Behind the Scenes.

To finish off the day, we had a star keynote presentation delivered by Nuritzi Sanchez, Senior Open Source Program Manager at GitLab and prior President and Chairperson of the GNOME Foundation. In her presentation, Open Source Resilience and Growth: Creating Communities that Thrive, Nuritizi talked about some of the initiatives that KDE is involved in that help it become a more resilient community, while at the same time pointing out areas of opportunity. She also explored topics around building more diverse and inclusive communities, including collaborative communication, and ideas for outreach.

As usual, YouTube recorded the streams which allows you to enjoy the conference in case you missed anything, albeit in a big blobby, unformatted form:

We will post edited and cut versions of the talks to PeerTube and YouTube soon. Watch this space!

From Monday to Thursday, Akademy attendees will participate in Bird of a Feather (BoF) meetings, private reunions, and hackathons.

We'll be back with more talks on Friday, September 11, when we will hear from students working on KDE projects and some of KDE's most active veteran contributors.

Color Themes aka “Schemas”

KTextEditor (and therefore Kate/KWrite/KDevelop/…) has a concept of color themes since more than one decade.

In the KTextEditor UI this is called a “Schema” at the moment. (Don’t ask me why it wasn’t called color theme or something like this, seems I wasn’t that clever at choosing names in the past.)

The user can configure the colors inside the settings and the stuff is saved in some very ancient way (nice string lists of hand-crafted text output of colors/bools/…) inside KConfig INI files. There is some import/export of this stuff based on KConfig INI files, too.

Frameworks starting with version 5.75

Two years ago, we migrated our syntax highlighting to KSyntaxHighlighting. That was some work done mostly at the Akademy 2018.

What we didn’t touch during that port: KSyntaxHighlighting has an own color theme concept that allows more or less all that we did support in KTextEditor but on the base of much better defined JSON .theme files.

This means you can now have a theme being self-contained in a small file and you need not to import it somewhere into a large configuration mess but just place it like a highlighting definition file in some folder in either the system-wide or user-wide XDG directory “org.kde.syntax-highlighting/themes”.

If you use KSyntaxHighlighting or KTextEditor in your own application, you can even just bundle these themes as Qt resources in “:/org.kde.syntax-highlighting/themes” inside your application binary. This simplifies bundling of own themes a lot.

Starting with Frameworks version 5.75 we will start to make use of this variant of color themes. KSyntaxHighlighting themes now show up as color themes inside KTextEditor based applications like Kate and are usable out of the box. The change was done in this merge request.

The UI is changed to call this “Color Theme” instead of “Schema”, the font choosing is decoupled from this now in the settings dialog. Color themes can only alter the coloring and text attributes like bold/italic/underline/…, but not switch the font itself.

Per default the default color theme for KTextEditor based applications in now automatically selected based on the configured KDE color theme, e.g. for dark themes you will get a dark theme per default, for light themes a light one.

You still can just set the theme you want as default and it will be enforced like before, but I think the automatic selection variant is much nicer any new user. Not longer a “white” Kate editor widget if the user starts to use a “Breeze Dark” KDE theme ;)

As the automatic selection uses the Qt application palette to decide which theme to use, this should work on Windows and macOS, too

What still needs to be done is saving user modification as JSON .theme files. At the moment this still goes back into the old KConfig INI files.

The “Export…” feature already allows to create JSON files (with the global color/style settings, without settings specific for individual highlighting definitions) if one selects the ending “.theme” for the file to save to.

We try to preserve user configured settings as good as possible, but I assume there will be some disruptions.

Already the first step required some internal renaming code and for sure there are cases where some settings are lost.

But I hope that the new solution will be a lot more stable in that respect.

The JSON file format should stay compatible, just like our XML syntax highlighting format is more or less compatible since more than one decade.

The documentation is still lacking, but given the format is very easy and all keys should be self-explaining, learning by example should be a good enough start.

We started to add more bundled color themes, too, like Dracula, added here. This might make for a good example how to contribute own themes for bundling.

All bundled themes are show cased on our color themes page.

That theme was created using the “Export…” functionality in the settings UI (choose “.theme” as file name ending).

More ideas which themes might be nice can be found/collected here.

The future…

I hope that we arrive in the near future at the state that we directly save all configuration as .theme files without any additional INI file stuff.

This will again lead to some UI changes (e.g. you will not overwrite existing system shipped themes but clone them as new local ones that then are saved).

I guess that will be the step that definitively looses even more compatibility with the old INI file settings people have around. Perhaps an import tool for old stuff is feasible.

Help is always welcome to make this transition more smooth!

See e.g. the contributing via merge requests post how to contribute to our stuff.

We are happy to receive merge requests that help to transit our code to pure KSyntaxHighlighting theme usage and to get more popular MIT licensed bundled themes.

Dear digiKam fans and users, After this long summer, we are now proud to release digiKam 7.1.0. This maintenance version is a result of a long period of bug-triaging on bugzilla. It introduces plenty of fixes and some features. Check out some of the highlights listed below and discover all the changes in detail. Better Canon CR3 Metadata Support digiKam tries to support as many digital cameras’ file formats as possible, but support for RAW files is a big challenge.

Saturday

5 September, 2020

A Smorgasbord of Fascinating Talks

Written by Blumen Herzenschein, David C. and Paul Brown

The first day of Akademy talks were varied and interesting, covering a wide range of topics, from managing project goals and technical advances in Qt and KDE technologies, to Open Source in dentistry and Linux in automobiles.

Aleix Pol, President of KDE, kicked off the day at 8:50 UTC sharp by playing a video made by Bhavisha Dhruve and Skye Fentras welcoming everybody to the event.

After acknowledging the very special circumstances of this year's Akademy, Aleix introduced the first keynote speaker Gina Häußge.

Gina is the creator and maintainer of OctoPrint, a highly successful and feature-rich system for controlling your 3D printer over a web interface. Gina used her time to reveal the good and not so good things about becoming an independent Open Source maintainer. She talked about the sense of freedom and purpose gained through Open Source work, but also the downsides of monetary instability and frequently feeling on her own despite working for hundreds, maybe thousands of users. Despite these disadvantages, she happily admitted that she would do it all over again, that the sensation of helping others and the fulfillment she experienced made up for all the darker patches.





Gina's talk, summarized in graphic form by Kevin Ottens.

After that it was time for another veteran Open Source contributor: Jonathan Riddell talked about his steering of one of KDE's current Community-wide goals: It's All about the Apps, the project in which KDE community members work to promote and distribute KDE applications on their own merits, beyond their link to KDE's Plasma desktop. Jonathan gave us the motivations behind proposing the goal and its evolution since it was officially announced in Akademy 2019.





Jonathan Riddell speaks of the progress made in All About the Apps goal.

Likewise, Niccolo Venerandi talked about the Consistency goal. This goal seeks to unify the look and feel of Plasma and all KDE apps to provide a coherent experience to users. Niccolo pointed out that Plasma does not have serious consistency problems, but different approaches to design in apps that sometimes lead to a bewildering array of looks and behaviors. Niccolo then showed us the future of KDE applications and, frankly, it looks amazing.

The presentations covering individual goals wound up with Méven Car talking about Wayland. It is no secret that the ride of porting KDE software and technologies to Wayland, the replacement for our venerable X window system, is being a bumpy one. That is why the KDE Community decided to make Wayland a priority. The Wayland goal is a big task requiring updates to multiple components and forcing to refactor KDE's whole display stack. But as Méven explained, the community has made significant progress since Akademy 2019.

Following the presentation of individual KDE goals, Niccolo Venerandi, Méven Car, Jonathan Riddell, Lydia Pintscher and Adam Szopa got together for a round table that tackled how the first year of their goals went and what they learned along the way.

Following the round table, Andreas Cord-Landwehr used a ten-minute fast track slot to talk about SPDX, a system for better license statements. In the talk we learned that SPDX identifiers are an important step towards enabling automatic tooling for checking license statements. Andreas explained the advantages of using license statements and how simple it is to apply them. He also gave a short overview of what has already happened inside the KDE Frameworks and where contributors could help to support the conversion to SPDX.

Then Shawn Rutledge covered Editing Markdown with QTextDocument in another 10-minute talk. Shawn added markdown support in Qt 5.14 as a first-class format and as an alternative to the limited subset of HTML that QTextDocument had traditionally used. During the talk he demoed WYSIWYG editors written with widgets and with Qt Quick.

In the final fast track talk before lunch, Carl Schwan expounded on How to Create a Good Promotional Website for your Project. Carl has been the main developer behind the overhaul of many of KDE's main sites, including kde.org. During the talk, Carl presented the KDE Jekyll theme, the motivation behind the project, and briefly explained how it could be used to create a KDE website. He also showed some counter-examples, examples of poorly designed websites and how they could be improved to make the projects more attractive to potential users.





Akademics enjoy some downtime between the morning and evening talks.

In the afternoon, things started with a presentation from the KDE e.V. Board and reports from the Working Groups. The Board told the attendees all about the things they had done over the year since the last Akademy. Highlights included expanding the number of paid employees from three to five, the migration to GitLab, and the funding of more support for community members. The Board followed up with details on the activities of the different working groups, although some of their presentations had to be moved to the end of the day due to time constraints.

The full text of the KDE Annual Report 2019 is available for you to read at your leisure.

Then we launched back into the talks proper with the Input Handling Update, again by Shawn Rutledge. In this talk, Shawn talked about what's coming up and the several goals for input events in Qt 6.





Cornelius Schumacher tells the story of the KDE Free Qt Foundation.

Meanwhile, in Room 2 Cornelius Schumacher was talking about the KDE Free Qt Foundation. Established in 1998, the KDE Free Qt Foundation was founded to keep the Qt toolkit free for KDE and all other free software projects. The Foundation has held steady during the more than two decades of sometimes turbulent times Qt and KDE have gone through together. Cornelius told the story of how this worked.

And speaking of The Qt Company... A little later, back in Room 1, Richard Moe Gustavsen, talked about Native Desktop Styling Support for Qt Quick Controls 2 and the ongoing work at The Qt Company to support writing desktop applications using Qt Quick Controls 2.

At the same time, in Room 2, Aleix Pol was talking about KDE's Products and how to visualise their relationship with users. In the talk, Aleix introduced a framework to help developers make sure the Free Software community and its users are best taken care of.

In the next slot, Patrick Pereira presented in Room 1 QML Rapid Prototyping -- Developing tools to improve QML prototypes and development. In his talk, Patrick talked about how QML prototyping is something that all developers do, and how it can be achieved more efficiently. He used two projects as examples: QHot (a hot reload for nested QML files) and QML Online (an online QML editor created with WebAssembly) to help explain how to bring down the development time and learning curve for QML.





Jonah Thelin delivers a talk about Linux in cars from inside his car.

In Room 2, Johan Thelin introduced his talk Linux in Cars - So What? from, get this, inside his car. Literally. Johan talked about why cars are still also using so much proprietary software you would be hard pushed to find the Open Source bits, even though they may be using Linux deep down. He also talked about what needed to be addressed to improve the situation and how KDE software could work for those use cases.

Following this batch of regular talks, there were another three 10-minute fast track presentations.

In Flatpak, Flathub and KDE: A Quick Summary, Albert Astals Cid introduced the audience to Flatpak, explained what Flathub was and how KDE interacted with both of them.

Then Nicolás Alvarez spoke of Improving KDE Server Infrastructure, the formation of the Sysadmin Working Group, and told attendees how the Sysadmin team was making KDE servers more manageable by reducing "technical debt", moving manual tasks into scripts, improving documentation, and making more things testable locally before putting them on the real servers.

In the last fast track of the day, David Edmundson gave tips on How to Win an Argument with a Maintainer, having partaken in and witnessed hundreds of discussions on Bugzilla and Phabricator that then turned into arguments that yielded angry stalemates. He shared with the audience the methods he had seen work to achieve happy mediums and warned against attitudes that escalated situations into miserable experiences for everybody.

Next came one of the more surprising presentations of the day, delivered by Tej Shah, a Doctor of Medicine in Dentistry from the US. Tej talked about his project Clear.Dental and his attempt to move dentistry to Open Source using the power of Linux, Qt, and KDE. He reviewed the state of Dental software (which is pretty dire), the problem with the current software available, and how Clear.Dental could contribute to solve it.

At the same time, in Room 2, Camilo Higuita was talking about his own passion project: Maui and gave the audience a rundown of all the updates on the group of apps, services, libraries, and UI (User Interface) frameworks Maui provides to produce attractive-looking applications.

In the next session, Rohan Garg gave attendees a lesson in Linux Graphics 101 in which he explained how the growing popularity of ARM devices has led to platform architectures with quirkier graphics hardware. He talked about the basics of how the Linux graphics stack works and the history behind how we've come to the current Gallium design in Mesa.

Finally, Google Summer of Code participant Amy Spark showcased how she Integrated Hollywood Open Source with KDE Applications by porting a Disney Animation technology to Krita. SeExpr gives Krita artists access to procedurally generated texturing, allowing for fine surface details, lighting effects, overlays, and more to be added at the push of a button. As a scripting language, it gives creators the flexibility needed to ensure perfect results every time by tailoring the algorithm to their needs. Amy had to overcome many technical barriers during the porting process, as SeExpr was originally built to run only on a very specific proprietary stack.





David Revoy shows an example of how SeExpr can be used in an image from "Pepper and Carrot".

In case you missed it, the today's talks are already available online in three blocks — one for the morning and two for each of the rooms used in the afternoon. We have also recorded all the talks and you will be able to watch each talk separately on KDE's available video platforms soon.

Tomorrow, we will again be streaming via BigBlueButton, directly from our servers, and through YouTube.

Today my Akademy talk about KDE’s Fiduciary License Agreement goes live. The title in the schedule is FLA FLA FLA FLA FLA’ing Alive which I thought was a marginally clever play on something by the Bee Gees but .. marginally clever. So in my talk I’ll just use the title KDE’s Fiduciary License Agreement (you trust us with your life, right?) which still suffers from marginal cleverness, but is a little better.

This article is a 2-minute summary of the talk.

  • Your copyright is important
  • Your Open Source license is important
  • When you contribute to KDE you contribute to a community
  • Your copyright lasts a long time
  • There are cases where it might be necessary to contact the author of a piece of code, and this might be long past when you care about that code
  • You can change the holder of the copyright through a variety of legal means
  • A fiduciary license agreement (FLA) changes the holder through copyright assignment to a trusted other party
  • The KDE FLA assigns copyright to KDE e.V. and gives you a hugely broad license back
  • Effectively you move the long-term license holder to KDE e.V. while keeping the flexibility of treating your code as your code (with all the economic exploitation possibilities that entails)

Signing the KDE FLA is entirely optional but if you do, you

  • make the KDE community stronger in the long run
  • take a potential worry about the copyright and license on your code and move it elsewhere

What KDE e.V. can do with the covered code is bounded by the FLA itself (PDF) and the Fiduciary Relicensing Policy (PDF). This ensures that Open Source remains Open Source.

The FLA expressly is not a Contributor License Agreement or an impalanced assignment: it is optional, and ensures that you have full rights to use, distribute, modify and relicense copies of the covered code.

Other times I’ve written about the FLA: SPDX and the KDE FLA (2020), prescription of the FLA (2009), GonFLAr el ballon (2008). You can tell I have a history of marginally clever titles – but also that the FLA has been around for over 12 years, slowly building up the amount of covered code and the strength and standing of the fiduciary – whom you trust with your code.