Feeds
Ned Batchelder: Cogged GitHub profile
Cog is my tool for using bits of Python to generate content inside an otherwise static file. I used it in extreme ways to generate my GitHub profile page.
If you haven’t seen it before, you can customize your GitHub profile by creating a README.md in a repo named the same as your username. So my profile is rendered from nedbat/nedbat/README.md.
My profile has a bit of static text, but much of it is badges, blog posts, links to PyPI projects, and so on. The README.md is literally a Markdown file that can be displayed by GitHub, but it’s full HTML comments containing Python code that generates the content. The generation happens once a day in a GitHub action.
There are three kinds of lines in a file run through cog: static content, code that will generate content, and generated content. My README.md is lop-sided: it has 225 lines of code, 38 of static content, and 43 of generated content.
The badges are made with shields.io image URLs. To make this easier, there are Python functions for Markdown image syntax, for building shields.io badge URLs, and so on.
I can’t walk through all of the code, but I can show a few simplified versions to convey the idea. Read the file itself if you are interested in the full details.
This makes a shields.io URL:
def shields_url(label=None,
message=None,
color=None,
label_color=None,
logo=None,
):
params = {"style": "flat"}
url = "".join([
"/badge/",
quote(label or ""),
"-",
quote(message),
"-",
color,
])
url = "https://img.shields.io" + url
if label_color:
params["labelColor"] = label_color
if logo:
params["logo"] = logo
return url + "?" + urlencode(params)
This makes a Markdown image:
def md_image(image_url, text, link):return f'[![{text}]({image_url} "{text}")]({link})'
Now we can make a Markdown badge:
def badge(text=None, link=None, **kwargs):return md_image(image_url=shields_url(**kwargs), text=text, link=link)
Anything print’ed will become part of the generated portions of the file. We can add a badge to the page with:
print(badge(logo="discord", logo_color="white", label_color="7289da",
message="Discord", color="ffe97c",
text="Python Discord", link="https://discord.gg/python",
))
There are other functions built on top of these to make Mastodon badges, Stack Overflow badges, a row of badges for a PyPI project, and so on.
Building the page ends up pulling data from 10 URLs, including a JSON summary of my blog for including blog posts. It’s satisfying to be able to have this update automatically instead of having to copy data around.
The result is a convenient mix of static and generated, and it was a fun exercise in light-touch automation.
Akademy went to me
This year’s Akademy was a special one for me in many ways.
First of all, instead of me travelling to Akademy it took place in my hometown of Würzburg, Germany. While I did have a hand in organizing it, most of the credit for it goes to Tobias and David. I had a lot of fun introducing people to my area and the concept of drinking wine on a bridge.
Qt Contributor SummitRight before Akademy there was the Qt Contributor Summit, also in Würzburg (what a coincidence!). It was great to meet old and new Qt faces and talk about topics that are relevant to KDE, like the upcoming migration of KDE API documentation to qdoc.
Akademy TalksThis Akademy I gave two talks: One long one where I looked back at the Qt6/KF6 transition, what went well, what didn’t, and looked towards the future of what’s next for our software platform. Then I also had a lightning talk where I talked about the role of maintainers in open-source projects, why KDE doesn’t have traditional maintainers, and why that’s a good thing.
Besides that there were also a lot of interesting talks from other people, too many to mention right now. Speaking as a member of the program committee we had some tough decisions to make about what to include.
GoalsDuring the conference we announced the new set of Goals that were recently elected. I’m excited that my own proposal “Streamlined Application Development Experience” got selected and I’m looking forward to working on it with you. Besides that I also want to see how I can help out with the other elected goals: “We care about your input” and “KDE needs you 🫵”.
Akademy AwardsAnother way this Akademy was special for me is that I was awarded with an Akademy award for my work on KDE Frameworks and Plasma. It feels great to get recognition for all the work I’ve been doing for the last seven years.
BOFsDuring the week we had lots of smaller meetings and workshops (a.k.a BOFs, world’s most terrible acronym). I was leading two of them, one about my newly-elected goal where I was presenting my proposal in more detail, and one about the ongoing work of mine to migrate our API documentation to qdoc. Thanks to our sysadmin Ben we now have a website where the current (still very much WIP) state of the new API documentation page can be seen.
Other ThingsWhat’s great about Akademy isn’t just talks and BOFs, it’s meeting people you only see online all year, talking to them in person, getting your code reviewed while staring on a screen together, chatting over random visions, complaining about things, laughing and enjoying things together, and wrapping up the day with a nice beer in your hand.
I’m already looking forward to next year’s Akademy, wherever that will be. Maybe it will be your place, organizing it is a lot less scary than you’d think ;).
Web Review, Week 2024-37
Alright… this is published a bit later than usual due to travels and lack of energy. Anyway, let’s go for my web review for the week 2024-37.
Fediverse Discovery ProvidersTags: tech, fediverse, search
Nice to see such a project be funded. Let’s see how far this will go.
Tags: tech, html, quality
This is clearly not a great outcome. The browser monoculture probably doesn’t help.
https://meiert.com/en/blog/html-conformance-2024/
Tags: tech, ai, machine-learning, gpt, law
This is bad. There was no way to know the book was AI generated and clearly it contained errors and lies.
Tags: tech, gpt, security
Looks like an interesting venue to attack systems which use LLMs.
https://conspirator0.substack.com/p/baiting-the-bot
Tags: tech, web, browser, servo
It’s good to see servo getting closer to being usable in a browser. Makes me dream of Falkon or Konqueror being resurrected with Servo as the engine.
https://servo.org/blog/2024/09/11/building-browser/
Tags: tech, windows, unix, design, system, architecture
Interesting exploration of the NT design compared to Unix. There was less legacy to carry around which explains some of the choices which could be made. In practice similarities abound.
https://blogsystem5.substack.com/p/windows-nt-vs-unix-design
Tags: tech, debian, redhat, security
Interesting comparison of the difference in approaches between RedHat and Debian about default system hardening.
https://unix.foo/posts/insecurity-of-debian/
Tags: tech, linux, kernel, power
Ever wondered what happens when you suspend or hibernate on Linux? Here is a very deep exploration of the process from the kernel perspective.
https://tookmund.com/2024/09/hibernation-preparation
Tags: tech, multithreading, system, kernel
Good reminder of what OS threads entails and why they can’t be optimized much further. There’s so much you can do properly in userland.
https://utcc.utoronto.ca/~cks/space/blog/tech/OSThreadsAlwaysExpensive
Tags: tech, networking, performance, quic
Looks like there is still some work required on QUIC. There is a path forward though.
https://dl.acm.org/doi/10.1145⁄3589334.3645323
Tags: tech, json, tools
Looks like a very nice tool to deal with JSON files.
https://github.com/josephburnett/jd
Tags: tech, linux, profiling, tools, processes
Looks like an interesting little profiling tool. The article explains quite well how it’s been done. Can be a nice blueprint to make other such tools.
https://tinkering.xyz/proctrace/
Tags: tech, python, packaging
It feels more and more that uv might turn out to be a game changer for the Python ecosystem.
https://mkennedy.codes/posts/python-docker-images-using-uv-s-new-python-features/
Tags: tech, python, foss, community, business
There is a sane conversation going on around uv in the Python community. Here is a good summary.
https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/
Tags: tech, c++
Clearly nice examples of better quality of life adjustments coming with C++26.
https://mariusbancila.ro/blog/2024/09/06/whats-new-in-c26-part-1/
Tags: tech, c++, performance, memory
Good reminder that packing your data is generally the right move when squeezing for performances.
https://lemire.me/blog/2024/09/09/replace-stdstring-by-stdstring_view-when-you-can/
Tags: tech, failure, exceptions
A couple of flaws in this article I think. For instance, the benchmark part looks fishy to me. Also it’s a bit opinionated and goes too far in advocating exceptions at the expense of error values. Still, I think it shows quite well that we can’t do without exceptions at all, even in the case of error values being available. In my opinion, we’re still learning how both can be cleverly used in code base.
https://cedardb.com/blog/exceptions_vs_errors/
Tags: tech, version-control, git
A bit too much of a rant for my taste (even though I agree with the GitHub flaws). That said it illustrates nicely a use of git range-diff which is often overlooked.
https://gist.github.com/thoughtpolice/9c45287550a56b2047c6311fbadebed2
Tags: tech, quality, agile, project-management, product-management
He is spot on again. The scope is what will allow to create flexibility in a fixed price project. This is what leads to the necessity to work incrementally.
https://tidyfirst.substack.com/p/scope-management-101
Tags: tech, engineering, career, learning
Interesting musing about what it takes for engineers to grow. Clearly there are a few paradoxes in there… that gives ideas to manage your career though.
https://tidyfirst.substack.com/p/the-impossibility-of-making-an-elite
Bye for now!
Akademy 2024
This week I attended the 2024 edition of KDE Akademy in Würzburg, Germany.
Akademy CC-BY-SA 4.0 by Andy BettsAkademy is the people. Just a bit over 100km away from Würzburg I attended my very first Akademy in 2004. Twenty years later I still meet some of the same people, as well as some I had never met in person before. Some people I had met in several countries this year alone already, some I hadn’t seen again since before the pandemic. It’s a week of hanging out with friends.
I got back physically exhausted but refreshed with many ideas and a huge motivational boost, and I can’t wait to see what will come out of all the things discussed and started there.
A big thank you to everyone who helped to make Akademy happen, and to those of you who enabled people to attend with your donations!
TopicsI’ll try to list some of the topics I ended up involved in discussing, in talks, BoFs or elsewhere, but that’s bound to only scratch the surface. Also check out Planet KDE for more reports.
CI/CD and Craft- If/how could we give tooling the ability to create MRs (e.g. for release automation)?
- How can we get CI coverage for Craft and Craft Blueprint changes? At least for the latter there are some ideas.
- Possible branching strategies for Craft Blueprints, to address the problem of all changes hitting the stable package builds immediately.
- Ways to work around or remove assumptions in our CI/CD infrastructure about the amount of parallel branches. Usually we have a development and a release branch, but there are cases of multiple still active release branches (e.g. Plasma LTS, or overlaps during the Gear release cycle).
- Removing the strong version locking between the Android CI image and the target Qt version.
- Using Qt’s upcoming SBOM tooling to generate package manifests, to automate collecting and maintaining information about 3rd party dependencies we ship in application packages (for FOSS license compliance).
See also the CI/CD BoF notes and Ben’s, Hannah’s, Julius’ and my talk.
KWallet successorHow to evolve our password and credential store was also a topic, following previous discussions at GPN22 and FrOSCon.
There generally seem to be two different types of data that need their own handling and consumer-facing APIs:
- Usernames and passwords, passkeys or 2FA secrets that you might want to sync between different devices.
- Device-bound secrets that are not shareable, like OAuth tokens or XDG portal secrets.
Building blocks for parts of this exist, but even when putting everything together there’s still gaps.
Migration from the status quo will also be challenging, as many different things need to happen in the right order, not all of which are under our control.
Localization- Qt 6.6 added QQmlEngine::markCurrentFunctionAsTranslationBinding() which should allow us to make our i18n QML functions automatically reevaluate on language changes. That would be an enormous step forward for making runtime language changes work in QML applications, but it still requires a creative solution for dependency issues its use would cause in KF::I18n.
- Debugged various cases of our Android apps mixing up translations from different languages. All of that seems to trace back to a wrong fallback handling of non-US English-language locales (we should prefer en_US as a fallback in that case, but end up using secondary languages first instead). And newer Android versions seem to have a separated region from the language settings, making it easier to hit this issue.
Being able to build our libraries and applications statically has been on the wishlist since a long time. Work has happened into that direction, but we haven’t gotten to the point to put all this together yet.
There’s now a stronger need for this though, with the first bits of iOS support landing in Craft, and Qt on iOS can only be linked statically.
Emergency alertsThursday morning the Plasma Mobile BoF coincided with the yearly test of Germany’s emergency alert systems. And while we didn’t manage to capture the cell broadcast with ModemManager, the push notification based system worked.
Public emergency alert notification.I also got a data feed for New Zealand earthquake warnings and we discussed ways to make push notifications work on Linux mobile devices even in power save mode, something that will benefit not just the emergency alerts.
Android- There’s a new Qt JNI array API coming, similar to something we already have in the KAndroidExtras code. More of that in Qt should help reducing the dependencies on the Android platform calendar integration, making it easier to move that to KF::CalendarCore.
- All pieces of the window insets color API have been merged, so the Android status and navigation bars now follow the Breeze style color for KDE apps.
- There’s agreement on retiring the KDE Frameworks 5 Android CI coverage, which would remove quite some maintenance burden. We don’t use this anywhere anymore, and external users of KF5 on Android are exceedingly unlikely as Qt5 will likely not produce APKs anymore which are in line with Google Play store guidelines.
- We discussed ideas for a cross-platform alarm/wakeup API, to be added to KIdleTime. That is, timers that also work while the application isn’t running, or even when the device is in sleep mode.
Kongress generally worked, and given the incoming wishes for additional features it seems it was actually used.
We did learn though that rolling out updates to event specific content for the map needs to be possible fairly quickly, this tended to need manual CDN flushes too often.
I also got a chance to try the indoor localization solution from the team we met at 37C3 in the Akademy venue. It’s unfortunately not Free Software, but it’s nevertheless interesting to see what performance/precision can be achieved without special infrastructure in the building, with just the existing radio beacons, inertial sensors and a building map. Still a bit out of reach for us, but if the past is any indication we’ll eventually get there as well I guess.
See also my talk on OSM indoor venue maps in Kongress.
ItineraryConference travel of course also results in work around KDE Itinerary:
- Nobody got lost on the way to Akademy due to Itinerary issues it seems. That’s a big relief.
- As this was my first chance of field testing the new two-level timeline view, a bunch of fixes and improvements followed from that.
- Identified why opening the bus stop map showed the full city map instead in Würzburg (it’s the fault of the “Ringpark”…).
- Improved stop point/quay display for large bus stations on the map.
- Andy Betts designed new public transport icons, replacing the current incoherent mix of different styles.
- As one attendee got Frankfurt Hahn’ed we are now looking into having Itinerary warn about airports with SEO names.
Looking forward to the next opportunity to meet all of you again! At least for some I don’t have to wait very long, considering the Nextcloud Community Conference 2024 today and the Matrix conference next week in Berlin.
This week in Plasma: 6.2 beta release!
Technically Akademy isn’t part of Plasma, but most of KDE’s movers and shakers were here in Würzburg for Akademy 2024 this week, so the list of technical work merged was understandably light; we were all busy with conference things! I’ve already blogged about my Akademy experience separately; check it out here if you’re interested.
Despite the pressures of Akademy, quite a few things happened anyway, including Plasma’s release manager Jonathan Riddell releasing a beta version of Plasma 6.2 while at the conference. I’m very happy with Plasma 6.2. It feels great already to me. I had no hesitation pulling down git master and compiling everything while at the airport waiting for my return flight, and indeed everything was fine. But please do test the beta and report bugs!
In addition some code work also got merged; check it out below! Expect the pace of work to pick up next week and beyond as we start implementing all the cool stuff we talked about during the conference.
Notable UI ImprovementsImmutable tool view tabs (as opposed to tabs for documents) now have a fancy new style! We’ll be opting into it over the course of Plasma 6.3 and other following gear and Frameworks releases, and replacing other tab-like-but-not-actually-a-tab UI elements with the real one (Carl Schwan, Plasma 6.3.0. Link):
Pressing the Meta+B shortcut to switch power profiles now cycles through them as you continue to press the key, rather than showing an overlay from which you would choose an exact profile (Jakob Petsovits, Plasma 6.2.0. Link)
System Settings’ Login Screen (SDDM) page no longer shows blurry preview images, and the dialogs that contain them have been updated to use the new modern dialog style (me: Nate Graham, Plasma 6.2.0. Link):
The alternative actions in the context menus of Plasma’s “Peek at Desktop” and “Minimize All” widgets are now expressed comprehensibly rather than being static and showing a checkbox, which made them look like persistent settings (Christoph Wolk, Plasma 6.2.0. Link)
Pressing Shift+delete to force-quit a process using SIGKILL in System Monitor now tells you that this is what will happen, rather than leaving it a secret (me: Nate Graham, Plasma 6.2.0. Link)
Throughout System System Settings’ grid views, all elided text labels now appear in a tooltip on hover, rather than only some of them (Han Young, Frameworks 6.7. Link)
Notable Bug FixesFixed a high-priority Plasma crash that could happen when certain apps did certain weird things with their windows in a way that the Task Manager didn’t approve of. This also fixed a similar bug whereby certain apps might be missing from the Task Manager (Demetrius Belai, Plasma 6.2.0. Link 1 and link 2)
Fixed an issue that could cause certain added keyboard layouts to not appear in all of Plasma’s various lists of keyboard layouts you can switch between (Ismael Asensio, Plasma 6.2.0. Link)
Custom shortcuts with commands that result in their .desktop files having the same file name as an app’s own .desktop file are no longer capable of shadowing the app in software that fails to respect the NoDisplay=True key in apps’ .desktop files (David Edmundson, Plasma 6.2.0. Link)
In Plasma’s wallpaper chooser view, image previews no longer sometimes have single-pixel lines gaps around some of the edges when using certain fractional scale factors (Méven Car, Frameworks 6.6. Link)
Special KDE-specific keywords of apps and System Settings pages are now translatable into German (Alexander Lohnau, right now! Link)
Other bug information of note:
- 1 Very high priority Plasma bug (same as last week). Current list of bugs
- 32 15-minute Plasma bugs (same as last week). Current list of bugs
- 73 KDE bugs of all kinds fixed over the last week. Full list of bugs
Fixed a performance bottleneck in KWin that caused it to sometimes unnecessarily copy textures across GPU devices on multi-GPU systems. This fix also happens to make Plasma Mobile work on the Librem 5 phone (Xaver Hugl, Plasma 6.2.0. Link)
How You Can HelpPlasma 6.2 just branched for the beta release, so please test it! We have focused a lot on stability for this release and want to make sure we haven’t missed anything big before the final release in about a month. Your bug reports do not go into a black hole; we triage every one! So enthusiastic testing and bug reporting is encouraged.
Otherwise, visit https://community.kde.org/Get_Involved to discover additional ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite! Or consider donating instead! That helps too.
Akademy & Qt Contributor Summit 2024
I attended KDE’s Akademy and the Qt Contributor Summit that happened this year. I also completed my personal goal of giving a talk at a conference! These conferences were back-to-back and were located in Würzburg, Germany during the 5th-8th of September.
Somewhere inside Würzburg. TravelI stopped in IAD before flying into FRA, and the journey was fortunately uneventful compared to last year. My IAD->FRA flight was delayed by an hour due to (another plane’s) mechanical issues and the ATC was backed up. When they announced that they were “sequencing” departures, I was surprised to find them actually putting all of the departing planes in a physical line on the runway.
On the IAD->FRA flight, they were having some troubles with the satellite connection and tried restarting the in-flight entertainment. While that probably did not please many of the people enjoying their movies and shows, it did reveal the in-flight entertainment system for United flights were running Android. Boo, that’s no surprise.
The trains I were on weren’t too late and I quickly arrived in Würzburg after a transfer to Frankfurt Central Station. To save some money, I purchased a Deutschland-Ticket which covered most local transportation, including the buses in Würzburg proper. The ticket was only 50€, which if I had paid for the trains separately would mean at least 65€! I didn’t bother calculating how much bus fares would’ve cost. So the D-Ticket was definitely worth it during my stay.
At one of the stations outside the airport. Yes, I did take the S-Bahn in the wrong direction…On my returning overseas flight, the plane was half-empty. So I had a row with window seat all to myself, it was pretty sweet! Is this how flying first-class feels?
A full row to myself! HotelI stayed in Hotel Amberger, close to the central station. It’s a cute little hotel, housed in a building that was clearly repurposed (my guess is some kind of hospital.) The hotel rooms are dead simple, but I didn’t really care. The first few days were really hot and the lack of a central air conditioning was really noticeable. Once the weather cooled off, the room was much more hospitable.
My hotel room.The hotel room had a TV, but mine did not work. No German TV for me this time! There was multiple bus stops near the hotel, so it was very easy to get to the Akademy venue. The QtCS venue was within walkable distance, so I walked there each day.
Qt Contributor SummitThis being my first Qt event, I didn’t really know what to expect. The venue is hosted in this expensive-looking conference center ( Congress Centrum Würzburg) near the river. There was catered food, which included lunch and coffee breaks. Dinner was served on the first day. I noticed the wait staff and looked young so I wonder if they were local culinary students.
The talks were a mixed bag of topics, but I still found value going there. Most of the non-Qt people there were either KDE or KDE adjacent, of course. One of the cooler things for me was meeting a bunch of Qt people in person. Of whom I only knew by name, mentioned in e-mails and Gerrit, so on. Lots of people recognized me by my work on qmlformat, so that was neat.
The talk that interested me the most was Vladimir Minenko discussing “QML Next”, plans to use languages other than C++ with QML. Some languages discussed were Swift, and C#. Curiously Rust was absent, which he did duly note. They did mentioned they were hiring a developer to work on Rust support later this year. The talk itself the concept was a bit vague, but that’s because they’re still in the exploratory stage.
If you’re interested in the other talks in this conference, there are notes and slides available from the Qt Wiki.
An unrelated picture of a tram, because I didn’t have any pictures of QtCS. AkademyAkademy was hosted in Julius-Maximilians-Universität Würzburg, which was much farther than the venue for QtCS. That necessitated travel by bus, but that was also covered by the D-Ticket. The talks were hosted in two identical-looking lecture halls. On a bus heading towards Akademy one day, I noticed one of the screens didn’t work. Of course, I had to take a picture…
The bus screen in some sort of debug mode.My talk was about integrating C++, Qt, Rust (and KDE Frameworks.) For proper disclosure, this talk is on behalf of my company for spreading the word of our cxx-qt library which eases integration of all of these technologies. I think was a bit too rough structurally but lots of people seem to enjoy it. One of my goals was to raise awareness of the usage of Rust you can find in KDE today, and that seemed to be successful! I want to express my gratitude to my fellow colleague Leon Matthes for helping review my slides. Also thanks to Darshan Phaldesai for his KDE work featured in the presentation.
A picture of me hastily giving my presentation.The results of my talk I think were really cool! Within the KDE community, there seems to be some interest in picking up Rust. Lots of KDE developers were in varying stages of Rust interest. No one told me how stupid it was to glue the two together, so the general vibe I think is “it’s pretty neat, let’s see how well this works.” Unfortunately due to technical issues my talk was not recorded properly. A colleague recorded my talk on his phone, and will hand that over to the Akademy organizers soon. So please be patient, but the slides are available online while you wait.
Oh yeah, and the KDE goal I’m championing “We care about your Input” was selected! I’m pretty excited to keep hacking away on graphics tablets in KDE Plasma. Thanks to NLnet for sponsoring us to work on that, along with Wayland accessibility improvements.
One of my favorite talks was Xaver Hugl’s “What even is color?”. The work he’s doing in KWin is excellent, and I think he did a really great breakdown to understand what color management is.
Day TripIn the day trip we went to Rothenburg. It was rainy, cold and miserable most of the day but we still had fun. One of my favorite parts was climbing up the tower to get an excellent view of the town.
A picture of the tower. A view from the top of the tower.That’s all I have to say about Akademy + QtCS, I had lots of fun this year! I’m happy that I was able to attend the talks this year, and meet a lot of people I missed last year. I hope everyone else were able to return home, and I’m excited to see what event I’ll attend next. See you!
My Akademy 2024 trip
Akademy is this yearly thing where bunch of KDE people go to talk about and work on KDE software. I had never been in one before, but this year I managed to make it there! This year Akademy was held at the city of Würzburg. This was also my first time in Germany, which is the furthest I've ever been from home.
I also had my wife Jenny with me, since if I had gone alone I would have gotten lost in some random mountain somewhere, or started a new life at the dark corners of Frankfurt airport, completely confused.
Friday, the day of flying (or so I thought)On Friday the 6th, we left from Oulu to Helsinki first. Hop on plane at 14.30 and- Oh, a small delay.
Eh, it's fine, we hopped on the plane at 16.00 and-...
The flight was canceled.
So, we wait til like 19.30 or something to get to Helsinki. But of course, our flight from Helsinki to Germany had already left! No worries though, the next flight to Germany would leave soon.
Wait, what do you mean it leaves at 7.00?
Aaaaaaaaaahhhhggggggggggg....
Well, we got paid airport hotel room with paid dinner and breakfast. So we slept at Helsinki the first night. We were supposed to be at Würzburg at 23.55 or something, but of course not. Oh well, with some effort I might be able to make to the event, although I would miss the first few talks.
I had the most saddest (but still good) slab of lasagne at very sad and empty airport hotel restaurant. Very frustrated by everything. Sure it'll get better, right?
Saturday, the day of sleep deprivationThis time the airplane actually started to fly, instead of getting canceled for scandalous airplane activities, and we were on route to Frankfurt pretty soon. I spent some time in the airplane just working on my never-ending game project.
At Frankfurt, we got our luggage and went to the funny ICE train, which was a bit late. Apparently being late is some German train thing, I don't really understand it, but we have similar thing at Finland so it wasn't that shocking.
At the train, we were exhausted with our 4h of sleep due to stress not allowing us to sleep, so we just find some seats and sit down. Five minutes later some chap tells us to go away, so we stay up standing for the next 1h 30min next to the exit doors in some midcabin thing.
I wanted to watch some of the Akademy streams at this point, but I was mostly focusing on staying up.
Eventually, we finally reach the Burg of Würz. First impressions were that it looks really nice and.. What the hell is that? A.. mountain? Wow, they can be THAT tall??? (Authors note: Finland is very, VERY flat).
Also it was hellishly hot. The most I saw was 32 celsius. It was painful, I was sweating all the time and it was not fun.
We walk to our hotel room at Mercure hotel, which was really nice by the way. At this time, Akademy was having an incredible luncheon together, so me and Jenny decided to find something to eat. We found this place that was all about avocados, and I had something called powerbowl, which was brilliant.
After that, we began to study the incredibly complex thing that is the German bus system and started our trip towards the Akademy venue.
Aktually at AkademyMe and my blurry sleep deprived brain walk to the venue and first off I meet familiar people. A lot of familiar people. Many hugs and "Oh you finally made it!"-s were shared. Jenny was with me there as well and it was fun to introduce her to my friends.
I honestly don't remember much about the day. It was quite a blur. But it was cool and I talked a lot.
I stole a lot of stickers and listened some talks, which I can barely remember... But I do remember which ones:
- Arjen's talk about Union KDE styling theme thing, that is super cool.
- Harald talked about of our own new possible shiny OS called KDE OS. Or 🍌 OS. I found this really exciting.
- A lot of lighting talks, where Nicole's talk about teaching lil kiddos how to install Linux with KDE software on old PC's to bring them back alive.
- I think this talk was my favorite. It was very wholesome, motivating and I'd like to have similar kind of teaching event at home. No promises, but.. Maybe!
During this day I also began to give out salmiakki to people, since I had been well prepared. It was kinda fun to see peoples reactions, especially if they had never heard of it before.
Then it was back to sleep at the hotel.
Sunday, I managed to do thingsOn sunday I was at Akademy pretty much the whole day. Again, I listened bunch of talks, met more people and we had many good chats about LTS distros, KDE PIM, Kwin, Flatpak... And many other things I can't remember.
I listened Carl's KDE Apps Initiative talk which was very motivating for me, since I've wanted to make a KDE app for a while. A gaming related lil thing.
After the fun group photo and delicious lunch, I chatted more and wandered about the venue.
There was a talk about daily driving Plasma Mobile and I found it very cool, and we had a chat about the Plasma Mobile afterwards. Apparently my Fairphone 5 could run PostmarketOS with Plasma Mobile pretty well already, but I am not yet ready to commit to such a change with my mobile device.
Last I listened Xaver's talk about what color is in computers. I learned that sRGB is a lie and gasped audibly, then heard a lot of words related to color systems I didn't really always understand.. But I found the talk still quite interesting and informative.
The evening was then again a bit of a blur, with sponsors lightning talks and Akademy Awards (congrats to winners btw).
Very interesting day, but I've always been bad when it comes to learning from listening. I learn by doing.
Of course the day wasn't complete without me going to wait bus with my t-shirt and shorts (since it was hot again), and it started pouring like heck. I was soaked when I got to the bus, then at the last stop I had to walk 1km to the hotel in the rain. Ah well, it was warm so I didn't mind too much.
Monday, I skipped the classOn monday I was so exhausted by Everything:tm: I decided to just chill with my wife and we went around Würzburg, buying food and chocolate.
I spent that day just recharging my social batteries. And I ate some Flammenkuchen, which was delicious!
At some point when Jenny is done editing and uploading her video, I will make separate post for it. Then you can see what Würzburg is like, and hear what she did during the trip.
Tuesday, I flocked together with the birdsLike on monday, on tuesday as well Akademy had these events called "BoFs" which is abbreviation of Birds of a Feather. Because "Birds of a Feather Flock Together". I don't know why it's called that, but anyhow, I participated a few of them:
- New design system bof
- Very interesting discussions and ideas even I know nothing about design
- I was mostly hoping to help people there with my programmer side of knowhow, as someone who has touched the Breeze styles codebases
- Tiling in kwin bof
- We mulled over what we could do to make tiling in kwin even better
- I have this mini task for myself where I try to make tiles split automatically when a window is dragged on top of the other
- Fedora KDE bof
- I was just mostly curious whats up with Fedora KDE at the moment
- I also wanted to give my praise for Fedora KDE, it's been my daily driver for many months now and it's been really good
- Couple of my friends use it too due to my recommendation and they're having good time gaming on it! :)
To wrap up the evening, I had a fancy dinner with my friends. What was quite a culture shock to me was that after 22.00 the streets were practically completely empty. It was eerily quiet. At home we would have had few drunks about making noise, but at Germany there was just.. Silence.
Wednesday, to home againDue to having two lizards and them needing a petsitter, and said petsitter not being able to be there the whole week, we left a bit early so we missed the daytrip and the last bof day.
Bit early being our flight from Frankfurt was leaving around 7.00. So we woke up at 5.00.
And when I wake up I saw a message in my phone saying: "Hi your flight is canceled"
Ah. Fun. If all had gone to plan, we would've been at home around 17.00. But instead, we were home at ~2.00.
We had to live at Frankfurt airport for ~7 hours, saw a lot of police with weapons (it was really scary to me, I've never seen weaponry like.. that openly), there was some suspicious luggage that got a whole McDonalds covered in "dont go here" tape and more police.
Urghgfhklfg. Scary.
Eventually we luckily made it to Helsinki and then back to Oulu and I didn't need to type out this blogpost from some corner of the airport.
ConclusionsAkademy was really fun event. I can hardly describe how fun it was. It's been quite a blur due to traveling issues and thus me being completely stressed and exhausted, but I still had many fun chats with everyone.
It was really nice to finally see who the people behind the internet names are and have talks with them, be it just random topics or KDE topics. I met people who I had never met before and shared many chats, laughs and information with them.
I learned quite a lot about what's going on in our KDE ecosystem and even outside of it, how we all interact. But I think the biggest thing I learned was that events like Akademy are crucial for the motivation and wellbeing of the KDE community. It helps us stay together, keep our bonds strong, be it KDE folk itself or people working with us, and keep us being awesome at what we do: Making computers do cool things, for free, for productivity and for fun.
Sorry about no photos, I have basically nothing: I am very bad at taking photos because I simply don't remember.
I love KDE and if you love KDE too, and if it's at all possible, visiting Akademy is well worth it!
See you at the next one, and apologies for the all-over-the-place-rambly-travel-post. Hope you find it a good read anyway.
Thanks for reading!
Qt Contributor Summit and Akademy
This year I went to Würzburg, which is a nice small German city famous for its wine. But I didn’t only go there for the wine, but also to attend Qt Contributor Summit and Akademy.
Qt Contributor SummitThe travel to Würzburg didn’t go as planned as Deutsch Bahn had some technical issues with their train and couldn’t reboot our train. We still managed to get in Würzburg on time and even had the change to get a small touristic tour from some locals.
Würzburg Residence and the Wine briget
The event itself was great and was the first time I attended fully a Qt Contributor Summit. Last year, I only attended a few session since the event was 20 min away from home.
There was many breakout rooms focused on some spcial topics, for me the most interesting sessions were about Qt for Python, how to hate QML, qt-project.org, Vector Graphics in Qt.
It was great to see how the KDE community still plays a big role in Qt and the Qt developers really appreciated what KDE finally moved to Qt6. They reported that the flow of contributors and bug reports increased.
Qt Chief Maintainer Volker Hilsheimer even stressed out how important it was for some of their customers to see KDE ported to Qt6, as it shows what Qt6 is stable and mature enough. Qt6 is indeed a hugo improvement over Qt5 and I am very happy how good the transition was.
I think it was a great idea to have Qt Contributor Summit just before Akademy. This allowed to have many KDE Contributor to the Qt Contributor Summit and many Qt developers to Akademy. It would be great next year to do the same next if possible and encourage more people from the Open Source Qt ecosystem to join too.
AkademyOnce the Qt Contributor Summit ended, we started a few hours later with the Akademy welcome event for some KDE beers. But before that, I had some bubble tea and spent some time with some friends exploring the city.
The weekend was full with a lot of great presentations. I presented a small report about the Accessibility Goal and the Fundraising working group. I also gave a bigger talk about the KDE Application Ecosystem, which I am really passionate about. The whole slides ware made with Calligra.
I was also very happy to see the new elected goals.
Sunday was also my birthday, thanks to everyone for congratulating me. I also received a super fancy special birthday sticker and some amazing cake.
Day TripWe had our yearly day trip too, this time at Rothenburg ob der Tauber. A charming small town in south Germany.
Day trip Rothenburg ob der Tauber
BoFsThe next few days were filled with BoFs and many informal discussions. During the Promo BoF, we decided to create a “This Week in KDE Apps” blog posts. Paul volunteered Tobias, Joshua, and me as the initial team for this.
I also hosted a BoF about a future replacement of KWallet. There were some discussions about the scope of this effort. Should we just focus on storing OAuth2 tokens as a background service what the normal users should never interact with or do a full-blow password manager like macOS Keychain. I presented my work toward the latter around based on KeePassXC and the KeePass format (see my old blogpost) as it would allow to use a standardized file format that also work on other platforms. The KeePassXC developers are working on providing a reusable library, so we don’t need to fork their code. There will likely be more discussion about this in a separate gitlab issue. The lack of a good story around passwords is not unique to KDE but to the whole Linux ecosystem. If you have some opinions about this, feel free to reach out.
I discussed with Ben, Lydia and Aniqua the infrastructure for newsletters for our supporting members. Ben managed to get an instance of Listmonk in a matter of minutes and this seems to be the right way for us to manage a newsletters or at least way better than using a mailing list for this.
Kieryn hosted the best BoF: the Sticker BoF where we shared stickers and had a competition to see who had the best decorated laptop. I won!!! and received another special sticker. Thanks Kieryn for organizing this BoF and generally making Akademy this year such an awesome event!
I also ended up finishing a lot of work. I finally ported the last Drupal 7 website to Hugo: dot.kde.org which was a quite massive website with more than 20 years of history. I migrated the Hugo version used by KDE from 0.110.0 (which was more than a year old) to 0.134.0 and I am happy to report that the Hugo folks care a lot about stability and there was only some very small breaking changes. If you are working on some KDE websites, don’t forget to download the latest version of Hugo and to run the following command to update the KDE Hugo theme.
hugo mod get invent.kde.org/websites/hugo-kde@masterWith Volker, we finally merged the status bar integration for Android apps so that KDE apps running on Android and now use breeze colors in their status bar, which looks much more integrated and like on Plasma Mobile.
Itinerary on Android with the new statubar
I also got some improvements ideas during Akademy, and I already started implementing some of them: https://invent.kde.org/pim/itinerary/-/merge_requests/324
Finally I started rewritting the Calligra launcher to Kirigami based on the old Gemini UI. Still a bit far away from a being in a mergable state but it already looks quite good.
Calligra text document templates selection
ConclusionThis was a great Akademy again. Thanks a lot for all the organizers for all their work. I hope to see some KDE contributors again soon at the Nextcloud Conference and Matrix Summit both in Berlin this month. And to the Linux Days in Dornbirn.
KDE Plasma Wayland keyboard layouts
Calamares is a Linux system installer used by dozens of distro’s to get the bits from an ISO image onto a target computer. Development is nowadays purely on a volunteer basis, which makes it hard to keep up with all the changes in the Linux world. But steps are made, and code submissions are very welcome, and here’s a note on something relatively new and useful: Wayland keyboard layouts.
Some HistoryIn an X11-based system, the X server is the one thing that knows how to interpret keystrokes (pressing the button on a bit of hardware, e.g. the button to the right of the one labeled CapsLock is labeled A and makes the letter “a” when pressed). The X server can be told how to interpret the buttons: one command is setxkbmap which can manipulate the keymap:
$ setxkbmap -query rules: evdev model: pc105 layout: us options: ctrl:swapcapsUsing setxkbmap you can change the layout from the command-line: setxkbmap -layout us changes it to US-English, setxkbmap -layout ua changes it to Ukranian, and there’s tons of other layouts.
In Ukranian, pressing the keys labeled WASD yields “ЦФІВ”.
Changing the keyboard layout is just a matter of being connected to the X server – any X11 terminal program can do it, or an application can do it programmatically by sending the right X11 protocol messages.
WaylandThere isn’t a standardized mechanism in Wayland to request a different keyboard layout. It’s up to the compositor how and what it wants to do.
Some compositors are willing to listen to systemd’s locale1 service. KWin does this, but only when started with suitable command-line flags. Many systems that start KWin as part of their live installation do not pass that flag. Some compositors just don’t implement this at all.
KWin (Wayland)The way to tell KWin to change the keyboard layout is to rewrite the configuration file for keyboard layouts in KDE Plasma, then send a DBus signal to KWin.
You can see that happening here, at least as of the code in April 2024. I suppose the idea is that the only way to change the keyboard layout is to go through the KCM, click on the list of layouts, manipulate it, etc. and then click apply.
For those cases when I briefly want to type Ukranian, or Arabic, that’s really annoying. For Calamares, which tries to set the keyboard layout when you select one, that’s really annoying.
Calamares and KWinIn the upcoming Calamares 3.3.10 release, the installer can be configured to edit KDE Plasma’s keyboard configuration file. I imitated the code from the KCM, but without relying on KConfig because that would be yet-another dependency for Calamares. This is a total bodge job. But it works!
For distro’s that use Calamares, and use KDE Plasma, and come up with a live system that uses Wayland (e.g. Asahi Linux) this means that keyboard layout updates can now be applied consistently, and you can e.g. type your password in the keyboard layout you’re actually going to use.
It ain’t pretty. Frankly, I think there should be a standardized way to say “use these keyboard layouts”, but I also understand that that opens the whole can of worms of “who should be allowed to change the keyboard layout?”.
Disable the Plasma Morphing Popups effect (at least on X11)
If you're using Plasma/KWin 6 i suggest you disable the Morphing Popups effect, it has been removed for Plasma 6.2 https://invent.kde.org/plasma/kwin/-/commit/d6360cc4ce4e0d85862a4bb077b8b3dc55cd74a7 and on X11 at least it causes severe redraw issues with tooltips in Okular (and i would guess elsewhere).
After Akademy 2024
This year’s Akademy (KDE’s annual conference) in Wurzburg, Germany was a success!
Yours truly had a chance to speak during the Akademy days and present our new design system to the community.
As previously reported in my youtube channel and in my posts, we provided a set of design system foundations to the community for their use in the future. This means, designers and developers will more closely work in the design process.
A few new faces also appeared at the venue. This was amazing! New contributors excited about our technologies is always welcomed.
In addition to the main session, our Visual Design Team put together an additional Birds of a Feather (BoF) session the following day. I have to say that I have never seen this many people interested in our presentation before and I am greatly appreciative of their desire to help.
We split our BoF in 3 sessions. The main session was an exploration of our export plugin for Figma and PenPot (Authored by Manuel de la Fuente), and also a review of the actions the VDG (Visual Design Group) needs to take to publish the work in the design system.
Our second hour was dedicated to reviewing our visual changes acceptance guidelines (led by Nate Graham). This session was intended to speed up the rate of response for visual design changes in Plasma and other areas. This should help us go faster and be more effective in our decision-making process.
The work is tracked here:
https://invent.kde.org/teams/vdg/issues/-/wikis/home
Our third hour was dedicated to Arjen Hiemstra’s new unified theme builder “Union”. Arjen showed us the source code and current capabilities of Union. It’s still early days but the progress is huge. There are a few new features that Arjen wants to add to the engine and we should see more of them in the near future.
Throughout the week, we dedicated time to testing and bettering the icons we produced. Our next objective is to address the latest round of feedback and then begin the process of editing our 16px icons to match our shapes in the 24px collection. Additional to that, we still need to find as many bugs as possible with the new icons.
During one of our sessions we noticed that some icons did not work properly in dark mode. This was a good test to do as some of the shapes didn’t recolor properly. Good thing that we were surrounded by Plasma devs and it was easy to spot the problem! This, however, does not mean the icons are free of issues. They still need a lot of work.
For now, I would like to invite all those who would like to provide feedback and/or test the icons. Please note that this is as alpha as it gets. There is a lot more to be done. Until all icons are finished, you can test the 24px collection.
Plasma Icons 24px collection:
https://drive.google.com/file/d/14oayQeHloyYJwL3WpjgoAQjR-Mnt-H8k/view?usp=drive_link
Figma link for icon feedback:
https://www.figma.com/design/F38rWWFmFRcyolDk07xxKw/Icons?node-id=0-1&node-type=canvas&t=FiBCevySX0c6XmBE-0Soon enough, I will also edit a few of the images I took from the city and during Akademy. Needless to say, this one was by me!
Aren’t we cool?
See you all soon!
Akademy and Kdenlive Sprint report
Part of the Kdenlive team attended this year’s Akademy – KDE’s annual conference in Würzburg, Germany. Since we don’t have so many occasions to meet in real life, we also used the event to make a Kdenlive team sprint.
So here is a report of what happened during these busy 4 days !
DocumentationWe first discussed how to better integrate our great documentation inside the Kdenlive app. We already have a kind of hidden link in the effect list that redirects the user to the documentation website, but decided to make the feature more visible and you will now (to be released in 24.12.0) find a small info button redirecting to our doc. In the process, we fixed and improved many links so that you now directly access the correct page.
https://kdenlive.org/wp-content/uploads/2024/09/online-documentation.webm
RoadmapWe discussed our roadmap, moved the tasks that were completed in a dedicated column. We also reviewed the remaining tasks and reorganized them to better align with our priorities.
FundraisingWe reviewed the tasks planned in our fundraising, what has been done and what is left, more on this will be announced in an upcoming post soon.
Kdenlive CaféWe decided to go for one online user Café every 2 months.This is a great way to stay in touch with the community, and we plan to have themes for these events, for example creating content with Kdenlive, Development news and coding introduction, How to contribute (documentation, testing, etc). Next one will be in November, focused on the next December release. Stay tuned for the date.
Render Test SuiteLast year, we worked on a rendering test suite that is aimed at automating rendering and comparing the result with a reference video file. The goal being to detect and prevent regressions in our pipeline. Unfortunately, since it still requires a local install and manual triggering, we are not really making use of it. During the sprint, we worked on making it run on our current CI infrastructure for full automation. Some good progress was made, there are still a few things to debug.
WebsiteWe discussed possible changes regarding our website, more to be announced later this year.
LV2 Audio EffectsWith the recent introduction of an LV2 module in our video backend MLT, we made tests with some LV2 audio effects. Some effects that don’t require a specific UI work but session state (saving and restoring the effect data, for example with the noise repellent plugin) is not yet implemented in the MLT module, so its usability is currently very limited.
AI EffectsWe discussed and tested a few models providing AI effects. Some work has to be done to make the way we integrate python scripts more modular, we will soon start working on this.
BugsWe didn’t have enough time unfortunately to do much work on the bugtracker but still managed to tackle a few issues. Among them, we found the reason for missing notifications on Windows, found 2 regressions in our video backend causing affecting playback smoothness, and various smaller bugs.
AkademyBetween our Sprint sessions, we also attended several of the Akademy talks, and met great people there. Julius made a talk about his work on the CI regarding packaging and notarization. Some of us also attended a translation workshop so that we can better guide interested contributors.
Busy week-end, and you will hear again from us soon!
The post Akademy and Kdenlive Sprint report appeared first on Kdenlive.
Akademy 2024 in Würzburg - it was a blast
My second Akademy and has ended just yesterday. It was an amazing and productive time again! Apart from familiar faces I know from last year's Akademy or the Plasma sprint last year in Augsburg, I met plenty of new faces. Some of which I of course had contact in KDE before, but only in the digital world.
One of the best parts was again the day trip with the KDE Community. While it was a bit rainy, we for sure made the best of it and saw the beautiful city of “Rothenburg ob der Tauber”. The view from the town hall tower was very beautiful:
The talks were also quite interesting and highlighted how many facades the KDE Community has. Apart from the lightning talks being great again, the “QML in Qt6” talk was quite valuable, because I did not manage to follow up closely on the latest improvements.
The talks and BOFs related to the KDE goals were also quite beneficial in getting a good impression in what direction we want to go.
Since we had so many interesting talks, it was not possible to join all of them. What I will follow up on later are the talks “Pythonizing Qt” and “C++, Rust and Qt: Easier than you think”.
Albert Astals Cid and I gave a lightning talk together about JSON linting (my part) and QML linting (his part). We were only able to touch the surface in the given time, but had some productive discussions and follow-up questions afterward. I will create a post about the JSON validation/JSON schema topic in the future, since I am still working on some aspects of this.
It has been great again to also do some hacking together and discuss ideas in-person. I will miss being able to say “Let's discuss this at Akademy?” on merge requests ;).
I did quite a bit of hacking on KRunner, linting/formatting related tooling and also Clazy.
This can also be seen on my GitLab history that has turned a bit more blue and thus active:
What was a great improvement over the last Akademy were the chicken noises to make sure people stay within the time of their talk! To better improve on that, we should maybe get some real chicken next year 🥚🐣🐔. The talks on how to apply for funding in KDE might contain useful info when working towards this ;) PS: My life-long profile picture on GitHub/GitLab is of the super cute chicken I had 🥰.
UbuCon Asia 2024: My first ever conference!
“Heather, Heather, Heather; what did you do now!” and both me & Fenris started laughing with Till, as we’re discussing about the thunderbird snap during the conference dinner.
Yup, this is from UbuCon Asia, my
- First conference
- First flight journey
- First travel out of my state
- First solo travel out of my state
- First solo stay at a hotel
Huhhh, a lot of first timers! I can’t think actually where to start with… I met so many people out there, got so many mentors! Thanks Till , for introducing me with so many mentors! I met Guruprasad sir (the launchpad guru 😄), Kierthana mam and Dimple didi (both are the documentation gurus). A lot of suggestions, tips, guides from them! Thanks a lot 🥹! BTW, How can I forget my OG Bhavani bhaiyaa!
The Drop Times: Sustainability Takes Center Stage at DrupalCon Barcelona 2024
Real Python: The Real Python Podcast – Episode #220: Configuring Git Pre-Commit Hooks & Estimating Software Projects
How do you take advantage of Git pre-commit hooks? How do you build custom software checks and rules that run every time you commit your code? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder's Weekly articles and projects.
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Akademy 2024: broadening, professionalizing, and being awesome
Akademy 2024 is a wrap, and others have already begun to write about the conference in beautiful Würzburg, Germany, with some posts already visible on https://planet.kde.org. This year’s Akademy was fantastic, probably the best one I’ve ever attended. Other than the A/V situation (which we’ll be addressing next year, pinkie-promise), it was well-organized and smoothly run.
But more substantively, the talks and sessions were incredible, and really wove together a coherent narrative: KDE has mature and effective leaders who are pushing forward strategic projects that combine to become more than the sum of their parts. Among them:
DesignAndy Betts introduced us to the concept of the design system and how he and other VDG designers are building one to help unify layout and style across KDE software. …then Arjen Hiemstra introduced us to Union, a new styling system intended to be a single tool to style everything, and it can be informed by the design system’s semantics as well.
AppsNicolas Fella explained how our app development platform is lacking, inhibiting the growth of a more vibrant KDE-centric app ecosystem. This is also the topic of one of KDE’s newest high-level goals (full disclosure: I’m a co-champion of this goal along with Nicolas as primary champion). Carl Schwan laid out his “App Initiative” which is directly related, and David Edmundson talked about how we can improve the ability of our software to work in sandboxed environments.
DistributionHarald Sitter introduced us to “KDE Linux” (tentative name), a new technologically advanced OS that will offer a radically high level of stability, security, and polish for those wishing to get KDE software directly from the source. David Edmundson’s talk about sandboxing is also heavily related here as well.
RecruitmentBut how are we going to do all of this? Paul Brown, Aniqa Khokhar, and Johnny Jazeix introduced us to the “KDE Needs You ” goal, aiming to reach more people to broaden the pool of potential contributors so KDE is sustainable for years to come.
EcoAnd finally, some perspective on a different sustainability issue: this was the hottest year on record, breaking records set just a few years prior. Our planet’s capacity to sustain human life in certain regions is starting to be impacted, and we need to consider both how our work exacerbates it, and how we can do our part to help make it better. Accordingly, we heard from Joanna Murzyn, Cornelius Schumacher, and Joseph P. De Veaugh-Geiss about KDE’s efforts to prolong the lifespan of old hardware so it doesn’t become e-waste. And Nicole Teale gave us some concrete hope by informing us about a program to introduce German schoolkids to the idea of upcycling old computers by installing Kubuntu on them, very similar to a similar program here in the USA that I was tangentially involved with!
Hopefully the themes and synergies here are clear. KDE is becoming more professional, more comprehensive in scope, will take more initiative for the distribution of its own software, will evolve that software’s design in a way that’s supported by modern design tools and professional designers, and contributes to solving the world’s biggest problems. I find this to be super exciting, and I hope you do too!
My personal role in Akademy was a bit more behind-the-scenes this year. I did take part in two presentations: the former goal wrap-up and the KDE e.V. Board of Directors report.
In these, I described the successes and challenges of my now-concluded Automation & Systematization goal, and helped to inform the community about KDE e.V.’s activities since last Akademy.
I also participated in Many birds-of-a-feather (BoF) sessions about various topics, including:
- A tech discussion about KDE Linux — install it today and help make it great!
- Plasma planning and roadmap — Plasma is in a great state, and we’re going to resume Monday meetings, this time in video form. I’ve got five specific features, UI changes, or bug-fixes I want to add to 6.3, and others have even more ideas.
- Design team decision-making process — super useful; we came up with one to enable us to make important decisions again.
Beyond the BoFs, I found myself constantly talking to people between sessions, during lunch, and in what seemed like every spare moment! Including:
- Björn Balazs about his work to create https://privact.org, a foundation building a next-generation method to gather metrics from users with zero risk to their privacy.
- Jos van den Oever about KDE developers applying for sponsorship from https://nlnet.nl to work on important KDE and KDE-relevent projects. Seriously, go do it!
- Eike Hein about KDE’s history and the 100% drama-free Trinity Desktop Environment.
- Neal Gompa about the challenges involved in shipping an immutable-base-system OS outside of single-purpose appliances (i.e. as a desktop OS for regular people, enthusiasts, and developers).
- Xaver Hugl live-debugged an issue on my laptop that he was able to speedily conclude was a Libinput bug.
- …and many more I didn’t have the remaining brain capacity to remember!
All of this was completely exhausting, and I had to excuse myself from a few group events and dinners to rest and process the day’s events. But Würzburg being a ridiculously beautiful city certainly helped!
Döner kebab count: 3
This has been my favorite Akademy so far, and thank you so much to everyone who helped to make it possible — David Redondo, Kieryn Darkwater, Victoria Fierce, Lydia Pintscher, and the rest of the Akademy team! Job’s a good ‘un, and I’ll see you around the internet!
Golems GABB: Gamification on Drupal Websites
Gamification is the integration of game elements into non-gaming environments like websites to enhance user experiences. Its purpose is to make the user's experience more fun, motivating, and rewarding. Like Grand Theft Auto: San Andreas, where players explore a big landscape full of problems and prizes, gamification adds excitement and advancement to typical digital platforms.
Drupal provides an excellent setting for incorporating gamification elements because it can adapt to changing needs. Like in the game, developers using Drupal can encourage users with rewards such as badges, points systems, and interactive tasks that create a feeling of accomplishment while also promoting involvement within the community.
This article provides a detailed look into combining gamification with Drupal's strong features. Grab a coffee, and let's begin our adventure utilizing Drupal's gamification.
Wim Leers: XB week 16: better UX thanks to ghosts & Redux
A new record week: 26 MRs merged! :D Too much to cover, so going forward, I will only write about the most notable changes.
The simplified zoom interface landed thanks to Jesse “jessebaker” Baker and Gaurav “gauravvvv” — with not only better controls, but also a much smoother UX:
Smooth zoom with pinch and using the slider!Issue #3464025, image by Jesse.
Bálint “balintbrews” Kléri, Jesse and Ben “bnjmnm” Mullins integrated the existing “undo” functionality with the component props form, resulting in the UX you’d hope:
Your browser does not support playing videos. You can download it instead.
When undoing, the component props form on the right-hand side updates and the preview updates in real-time.Issue #3463618, video by Bálint.
Now that many fundamental pieces exist, it’s time to build upon the foundations that we have. Five weeks ago, Ben added Redux integration to the component props form, resulting in live updates. That started out with a limited set of form elements supported. Harumi “hooroomoo” Jang added support for one more this week: <select>.
SDC prop shapes using enum now work thanks to expanded Redux integration. For example, you can now change the column width.Issue #3471083, image by Harumi.
(By the way: Bálint’s epic video showing undo/redo above? That’s also powered by the Redux integration!)
Bálint and Gaurav improved the UX by removing six lines of CSS: instead of an abstract placeholder being dragged and visualized in the currently hovered drop target, now a ghost of the component being moved is visible:
Ghost of the component at the drop target: better visualization of what is about to happen.Issue #3469895, image by me.
Two weeks ago, we gained support for actual trees. This revealed a number of bugs in the UI that had up until that time, been ahead of the back end. Another one of those was squashed this week by Bálint, Ted and I: you can now actually drag components into empty slots :D
Missed a prior week? See all posts tagged Experience Builder.
Goal: make it possible to follow high-level progress by reading ~5 minutes/week. I hope this empowers more people to contribute when their unique skills can best be put to use!
For more detail, join the #experience-builder Slack channel. Check out the pinned items at the top!
Empowering SDC developersLess visible, but equally important because it boosts the productivity of the fine folks working on the Starshot Demo Design System by making XB be more explicit about what Single-Directory Components (SDCs) prop shapes it provides a complete UX for. Since last week, a sibling Component config entity is auto-generated for every SDC meeting the minimum criteria. This week, Feliksas “f.mazeikis” Mazeikis expanded the list of criteria:
- Since #3469461, any SDCs that we know for sure won’t work well in XB (yet!) no longer show up in the XB UI. (In more detail: when we have no way to store a particular prop shape yet: XB does not yet support type: array prop shapes yet, for example.)
- Since #3470424, SDCs marked as obsolete won’t get a Component config entity auto-created. But if it already exists (and hence may be in use), the config entity is not deleted, just disabled.
Evidently that could lead to surprising situations, especially while developing SDCs. So, he’ll be adding a UI that lists the reason for an SDC not being available in XB next.
In the background, back end folks empowering the front endTed “tedbow” Bowman helped the back end race ahead of the front end: while we don’t have designs for it yet (nor capacity to build it before DrupalCon if they would suddenly exist), there now is an HTTP API to get a list of viable candidate field properties that are able to correctly populate a particular component prop. These are what in the current XB terminology are called dynamic prop sources 1 2.
Travis “traviscarden” Carden and I made XB’s use of OpenAPI go much further than it did when it landed 3 weeks ago): rather than only validating API response bodies, it now also validates request bodies — hence catching an entire category of bugs on the client-side automatically. Clearer errors = faster iteration!
Week 16 was August 26–September 1, 2024.
-
Dynamic Prop Sources are similar to Drupal’s tokens, but are more precise, and support more than only strings, because SDC props often require more complex shapes than just strings. ↩︎
-
This is the shape matching from ~3 months ago made available to the client side. ↩︎