Avatar of This Week in GNOME

This Week in GNOME

@thisweek

#274 Fancy Statistics

Update on what happened across the GNOME project in the week from November 6 to November 13.

GNOME Fellowship

Peter Eisenmann says

I wrote about the 🧟spooky👻 stuff I got up to as a GNOME fellow in October, read about it here 🎃 https://blogs.gnome.org/p3732/fellowship-report-october-2026-lothlorien/

GNOME Core Apps and Libraries

GTK ↗

Cross-platform widget toolkit for creating graphical user interfaces.

Felix says

I’ve been working on some more GTK macOS fixes, which were merged this week!

  • When a window is maximized (“zoomed”), its content now resizes smoothly along with the animation. Before, the content only updated once the animation had finished. (!10667)
  • When an app starts, it no longer briefly shows an empty window frame before the actual content appears. GTK now waits until the first frame has been drawn before putting the window on screen. (!10640)
  • Mouse back/forward buttons now work as expected. For example, pressing the back button in an app that uses AdwNavigationView now goes back, just like it does on Linux. (!10625)
  • GTK can now tell trackpad scrolling apart from a regular mouse wheel. Widgets that rely on touchpad swipes, for example the swipe-back gesture of AdwNavigationView now also works on macOS. (!10617)
  • Apps can now open links with their own custom URL schemes, for example a link that opens a specific app. Before, these links were silently ignored. (!10615)
  • Finally, I fixed a bug that caused some tooltips to be clipped. (!10614)

GNOME Circle Apps and Libraries

Alexander Vanhee reports

Bazaar 0.10.0 was released this Tuesday with many improvements: you can now install from user remotes in the Flatpak version, remove remotes from within the app, and the daily downloads graph got a redesign.

For the next release, I’ve also added a fancy new distro statistics graph, which should hopefully give app developers more insight into where their users come from.

Third Party Projects

Charalampos Kardaris reports

Klisi is a callgrind profile viewer designed to fit nicely into the GNOME desktop.

It is an alternative to KCachegrind.

A callgrind profile contains information about the cost of the functions in an executable. It can be used to find bottlenecks in your code and speed up your program’s execution.

Klisi prioritises a simple interface, supports full keyboard navigation and touchpad gestures, and aims to cover as much ground as possible with regard to accessibility.

What’s more, it is not a typical GTK4/Adwaita application. It is written in Clojure using the excellent java-gi bindings.

You can read more about the why and how in a blog post of mine from three months ago, written after the first release.

I hope you find this useful and I am looking forward to your feedback.

seja-arctic-fox reports

Last week, I released a new version of VidCom, a video archival utility. The new version is nothing big, but brings some nice improvements to the user experience.

Changes:

  • Better window sizing and side-panel collapsing
  • Various UI changes
  • Queue is visible and can be interacted with during encoding. This allows the user to add, remove or shuffle videos in the queue while the encoding is in progress. This becomes useful especially when encoding takes a long time to finish.
  • Bug fixes adressing app stability, threading, encoding and GUI
  • Fixes for AVC codec options, radio buttons and opening of output folders
  • Added confirmation dialog for overwriting existing files (both GUI and CLI) and an option to always overwrite files on conflict
  • VidCom now works on Windows as well

VidCom can be installed via Flathub or AUR

moosee reports

I have two updates to share for Moose, a GTK and libadwaita app for chatting with local AI models through Ollama or connecting to cloud services!

Version 0.8.0 brings web search and a calculator to chats with compatible Ollama and Ollama Cloud models. Search uses DuckDuckGo by default, without needing a search account, and asks for permission first. Sources stay with the conversation, so you can come back and check them later. Choosing a model has also become easier: the redesigned Models view lets you browse by task and see estimated memory and storage needs before downloading. Longer Ollama replies can now be continued if they reach their length limit, and OpenRouter joins the supported providers, thanks to olumolu!

Version 0.8.5 adds a way to take your work out of the chat. With Create Document, you can describe what you need or turn an existing answer into a file: a report, a budget spreadsheet or a presentation, for example. Supported formats include PDF, Word, Excel, PowerPoint and OpenDocument. The files stay with the answer and appear alongside your uploads in Moose’s Files view, where you can search their contents, preview them or jump back to the conversation they came from.

You can try Moose on Flathub and find the code on GitHub. Feedback, bug reports and contributions are welcome!

Vlad Krupinski announces

Errands has been rewritten from Python to C. It was a 2-year effort and it’s finally here. Many new features have been added, and many existing issues have been fixed.

Here is the short list of changes:

  • Much lower resources usage and memory consumption even with thousands of tasks
  • Instant startup
  • Reworked UI
  • Recurrent tasks
  • Task search and sorting
  • Cancelled tasks
  • Custom colors
  • All Tasks view
  • Reworked sync using Evolution Data Server

Get the latest update on Flathub!

Era ↗

Manage your time

Titouan Real announces

Era 0.3.0 is out. Download Era from Flathub now and report any bugs you can find.

Era is a calendar app for mobile and desktop, designed to stay simple for everyday use while offering powerful tools when you need them. It syncs with most online calendar providers and works offline, too.

This release brings updated month and agenda views, with clearer time labels in the agenda and larger date headers in month view, making it easier to spot the start of each month as you scroll. You can now move events to another calendar, and Era remembers your last-used view when you reopen the app. The update also includes further performance improvements in month view.

Era is also available on GNOME Nightly for the latest features, bug fixes, and performance improvements.

That’s all for this week!

See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

Copr, explained: the sandbox where Fedora packaging starts

Copr, explained: the sandbox where Fedora packaging starts

In 2017, I wanted a small tool to change my laptop’s screen brightness. I found one that worked, but Fedora did not have an RPM package for it. So I set out to package it myself. Fedora Copr made that first attempt far less stressful. I wrote up that first package at the time: How I created my first RPM package in Fedora. Copr remains one of the most useful tools in the Fedora contribution ecosystem.

This post is the introduction I wish I had read before I started. It explains what Copr is, why packagers and users rely on it, and why its sandbox-like design matters now.

What Copr is 🔗

Copr, short for Community Projects, is a build service. You give it a source RPM (SRPM), and it builds the package and hosts the results in a DNF or YUM repository. Copr runs on Fedora infrastructure. You can use the public instance at copr.fedorainfracloud.org.

If you use Arch Linux, Copr is the closest parallel to the Arch User Repository (AUR). Both are community spaces where people share packages for others to use. The AUR shares build scripts, and you build the package on your own machine. Copr goes a step further. It builds the RPM for you and hosts the repository, so you enable it and install with DNF.

You need a Fedora Account System (FAS) login to create a project. You do not need special approval. You can build for several Fedora releases, EPEL releases, and other targets in one step. One SRPM can produce packages for many releases and architectures.

Why packagers use Copr 🔗

When I started, my biggest question was whether my package would build on the releases I cared about. Koji is Fedora’s official build system, and I used scratch builds there to test. Copr solved a different problem. It let me host the package, install it on my own machine, and share a repository with others before I submitted anything for review.

Koji scratch builds caught a Fedora 27 failure that I fixed before I submitted my package for review. Copr is not a replacement for that process. It is a place to test first.

Copr as an instant enablement path 🔗

Recently, I used Copr to package something new I was working on. I packaged a set of Markdown files, each one an Agent Skill, from the Fedora Agent Skills Library into a single RPM. I published it in the AI/ML SIG Copr project and started sharing it for testing and use.

My plan is to package agent-skills officially in Fedora. Copr made that first step possible because it gave me the fastest path to get an RPM into users' hands. Users got a semi-official channel to install the package now, and I got real feedback while the official process moves along.

Copr as a sandbox 🔗

Copr works well as a sandbox. Several design choices make that true.

  • Projects are separate. Packages in your Copr project do not enter Fedora’s official repositories. Your experiments stay in your own repository.

  • Packaging rules are relaxed. Copr packages do not have to follow the Fedora Packaging Guidelines. The guidelines are still recommended, but you can test ideas before you meet every rule.

  • Projects can expire. You can set a project to delete itself after a number of days. This suits short tests and one-off experiments.

  • Old builds are removed. By default, Copr keeps one build per package and deletes the others after 14 days. Projects on the newer Pulp backend keep the five most recent successful builds per package instead, so test projects do not grow forever.

A sandbox does not mean anything goes. Copr is Free Software, and its repositories are signed. However, the Copr maintainers do not review every package. Before you install a package from a Copr project, check who maintains it. If you can, look at the SRPM and spec file. Projects distributed in Copr must also follow Fedora’s license rules.

Where Copr fits in the innovation discussion 🔗

Fedora is discussing a Council proposal for an Innovation Lifecycle. The proposal includes a "sandbox stage" for experimental work that is too large for a single change proposal. One of its stated goals is to isolate risk. Experiments should be able to break without affecting the main distribution or the people who depend on it.

The proposal also notes that it does not yet define standard sandbox infrastructure. Copr is not part of that proposal. It already shows what a low-risk space for experiments can look like. Work stays separate from official releases, feedback comes quickly, and strong packages can follow a path into Fedora. I hope we keep that spirit as the larger discussion moves forward.

Packaging as a fallback 🔗

Distribution methods will change over time. Right now, RPM packaging works well. It is tested, proven, and well understood by Fedora contributors and users. When we do not know how to share something new, RPM packaging is a path we can always fall back on. It provides versioning and a distribution mechanism for large varieties of software. Copr makes that RPM packaging fallback fast.

Getting started 🔗

You need a FAS account, a project, and an SRPM or RPM spec. These commands create a project for Fedora Rawhide and submit a build:

copr-cli create --chroot fedora-rawhide-x86_64 my-first-project
copr-cli build my-first-project ./my-package.spec

For more detail, read the Copr user documentation.

Final thoughts 🔗

Copr gave me a low-risk way to learn packaging, and it can do the same for you. If you have a package that is too early for Fedora, build it in Copr, share it, and learn from the results. Thank you to everyone who maintains Copr and helps packagers use it.


Featured image generated by LLM-gen-AI using the OpenAI image API.

Avatar of Peter Eisenmann

Peter Eisenmann

@peisen

Fellowship Report October 2026 (LothlĂłrien)

Spooky season is over, let’s see what scary changes I made last month 🎃

Nautilus

I finally installed GNOME OS this month. It runs very smoothly on my machine and is a pleasant experience so far. But when I opened nautilus on this fresh setup, I realized that it sorts files and folders interleaved, something I assumed would no longer be the case as the default was changed 5(!) years ago. Obviously I had to find out what is going wrong and the culprit turned out to be nautilus trying to migrate legacy GTK3 settings on fresh setups. This no doubt made sense when António Fernandes gloriously ported to GTK4, but since that was almost 5 years ago, I now dropped considering GTK3 settings, meaning fresh setups will finally see folders sorted before files by default 🎉

Related to folder sorting, I was very excited to see Christian Hergert added sections to GtkGridView in GTK. I long thought that sections would be very useful to have, as it allows to show folders and files separate. I played around with them a bit, but still need to rework it before other maintainers are happy with it.

When testing the preferences dialog in another language which commonly uses longer words than English (yes, it was German) I noticed that the recently adopted AdwComboRow for the “Action to Open Items” doesn’t scale well to smaller sizes. After some feedback from Philipp Sauberzweig it now uses the new AdwActionRow:body property. Philipp also suggested more adjustments for the performance section combo rows, making the dialog now look this 🌟

image

I also had a call with GNOME designer Tobias Bernard for a live test session of the new app chooser and we adjusted the mockup to the constraints we are working with (and then some). I am optimistic that it will be finalized by next month 🙂

Other things

Sushi

During writing last month’s blog post I noticed and fixed some graphical inconsistencies in the icon. I also made sure we only offer to copy error messages when we actually have any. Apart from that and a bug fix release, I mostly reviewed MRs from Tau Gärtli and Corey Berla.

There is one more thing that Tau and I hacked on together in person, but it’s not ready yet, so all I have is this teaser text and a rainbow selfie 🌈

Avatar of Luis Villa

Luis Villa

@luis

How San Francisco's Republican voters voted on November 3, 2026

A San Francisco polling place set up in a residential garage: a row of voting booths on metal legs, a ballot-scanning machine in the foreground, and a table of voter rosters beside a red supply box, with storage boxes on shelves and in the rafters

“Voting in a Garage” by coolmikeol, CC BY 2.0.

A few of us on Bluesky have been discussing what SF’s November 3 election results mean. I have thoughts and speculations about what this means, so I dug in. One easy, accurate thing I saw and could share: what GOP voters in San Francisco voted for.

#Who are we talking about here?

Six statewide races featured a Republican against a Democrat. 10% of SF’s mail ballots (details below) voted for the Republican in 5 or 6 of those races. It’s safe to call those voters actual, honest-to-god Republicans. The tables below show what those SF Republicans voted for in the other races.

#What am I not claiming?

To be utterly clear: this analysis does not mean, and does not claim, that voting for Connie Chan or voter ID makes you a Republican (though Republicans did vote for Connie Chan, 57% to 43%, and overwhelmingly for voter ID, 89% to 11%). All I’m saying in this post is that San Francisco Republicans voted for Connie Chan, voter ID, and a bunch of other things that the rest of the San Francisco electorate disagreed with them on, as well as some areas where the GOP and non-GOP voters agreed.

#The tables

SF GOP voters = the 27,144 mail voters who meet the 5-of-6 test. Everyone else = the other 239,687 complete mail ballots. Both columns come from the same set of ballots, so each gap compares two groups of voters directly. Each cell gives the majority side and its share of the voters who voted on that item; blanks are excluded. Gap = the difference, in percentage points, between the share of GOP voters and the share of everyone else who supported the item (for the two candidate races: who chose Chan, or Kim). The disagreement table is sorted by the gap, largest first; the agreement table is sorted smallest first. The Congress row counts only ballots from CA-11 voters.

#Where GOP voters and everyone else disagreed (22 items)

ItemSF GOP votersEveryone elseGap (points)
Prop 39, voter IDSupport 89%Oppose 89%78
Prop 3, permanent top tax ratesOppose 85%Support 84%68
Prop 1, housing bondOppose 78%Support 86%64
Prop 2, rainy-day fundOppose 76%Support 87%63
SF H, Muni parcel taxOppose 81%Support 81%62
SF J, close foreclosure tax exemptionOppose 73%Support 88%61
Prop 41, audit special taxesSupport 86%Oppose 71%58
Prop 42, ban wealth taxesSupport 89%Oppose 68%58
SF C, affordable housing fundOppose 69%Support 88%57
RTM, regional transit sales taxOppose 72%Support 85%56
Prop 43, 2/3 vote for local taxesSupport 83%Oppose 70%53
Prop 5, recall processOppose 72%Support 77%49
Prop 40, billionaire taxOppose 87%Support 60%47
Prop 4, public campaign financingOppose 87%Support 59%46
Prop 37, home-purchase bondOppose 68%Support 77%46
SF G, reopen Great Highway to carsSupport 75%Oppose 70%45
SF B, public bankOppose 85%Support 56%41
Prop 45, CEQA fast-trackSupport 75%Oppose 64%39
SF I, transfer tax to housingOppose 86%Support 51%37
Insurance CommissionerAllen 65%Kim 55%21
Congress, CA-11Chan 57%Wiener 56%13
SF D, raise initiative thresholdsOppose 51%Support 56%7

#Where GOP voters and everyone else agreed (5 items)

ItemSF GOP votersEveryone elseGap (points)
SF E, City Administrator powersSupport 62%Support 65%3
Prop 38, immunology research bondOppose 65%Oppose 62%3
SF A, cut charter commissionsSupport 74%Support 69%5
SF F, mayor’s control of departmentsSupport 72%Support 59%13
Prop 44, clinic spending ruleOppose 72%Oppose 87%15

Three of the five agreements are parts of the mayor’s charter package (SF A, E and F); the other two (state Props 44 and 38) are measures that both GOP and non-GOP voters opposed.

#How this was measured

San Francisco publishes a cast vote record: an anonymous file with one record per scanned ballot card, showing every choice on that card. This analysis uses the release of November 8, 2026, which holds 1,370,121 cards. The results are preliminary; the Department of Elections expects to certify them on December 3.

San Francisco’s ballot had four cards, and the file does not say which cards came from the same voter. For mail ballots, the four cards from one envelope are scanned one after another, so I regrouped them by scan order, precinct and ballot style. That gave 266,831 complete mail ballots, 88% of the mail ballots in the file. The complete ballots match all mail cards to within 0.1 percentage points on every measure, so the ballots I could not regroup should not skew the sample.

I counted a voter as a “GOP voter” if they chose the Republican in at least 5 of the 6 statewide races that had a Democrat and a Republican on the ballot (Governor, Lieutenant Governor, Secretary of State, Controller, Treasurer, Attorney General). This is a definition by votes, not by party registration. Most voters are at one end or the other: of the complete mail ballots, 80.1% chose no Republican, 8.3% chose all six, and 5.1% chose two to four. The rest chose exactly one or exactly five. The 5-of-6 test gives 27,144 GOP voters, 10.2% of complete mail ballots.

All analysis code was written by Claude Code (mix of Opus and Fable), with an adversarial audit by GLM-5.3.

Limitations:

  • Mail ballots only. I cannot regroup Election Day ballots (about 11% of all ballots in the file), because their scan order is scrambled. Election Day voters are somewhat more Republican: 12.2% of Election Day cards with the statewide races meet the 5-of-6 test, against 10.2% of mail cards. So the GOP voters here are mail voters, and they may differ somewhat from Election Day Republicans.
  • The House race had no Republican. 21% of GOP voters in the CA-11 district left the Chan–Wiener race blank. The Congress row covers only the GOP voters who chose one of the two.
  • Regrouping can make mistakes. The method can occasionally merge the cards of two neighbors from the same precinct into one ballot. A wrong merge mixes two voters, which makes the GOP voters and everyone else look more alike. So any such errors shrink the gaps in the tables; they cannot create them.
  • Small numbers redacted. The Department withheld the votes on 24 cards (6 ballots) in very small batches. I left them out.

#Sources

Avatar of This Week in GNOME

This Week in GNOME

@thisweek

#273 Kanji & Colons

Update on what happened across the GNOME project in the week from October 31 to November 7.

GNOME Fellowship

Philipp Sauberzweig announces

I’ve published another update on my work in GNOME Design and Community Management as part of my Sovereign Tech Fellowship. I’m especially excited about the progress on passkey support in GNOME and the libadwaita changes from the scale row standardization work. Check out the full blog post!

GNOME Core Apps and Libraries

GTK ↗

Cross-platform widget toolkit for creating graphical user interfaces.

grorp reports

My first contributions to GTK were merged this week!

The first change fixes a rare edge case where GTK would wrongly detect a swipe gesture and start scrolling, even though the user hadn’t actually swiped.

The second merge request was originally meant to fix a bug where GTK’s text handles would ignore input in some cases (these are used to select text on touchscreens). While the bug was instead fixed in another patch, luckily I still found a small change I could make to improve code quality :)

Also, my first patch for Mutter was merged: It fixes an issue where the OSK (on-screen keyboard) would only appear after two taps on input fields in GTK apps. Now, you should only need to tap once for the OSK to appear!

This has actually been in the works for a long time, the awesome Carlos Garnacho worked on Wayland protocol support and more to make it happen. It seems there was just this small Mutter bugfix missing to get it working.

These changes are motivated by the goal of eventually being able to use a Linux phone with GNOME :)

Blueprint ↗

A markup language for app developers to create GTK user interfaces.

Peter Eisenmann says

Blueprint, the objectively best markup language for GNOME user interfaces, got even better this week. Semicolons after {} and [] blocks are now optional! 🎆 This allows to change indentions of nested code without having to worry about placing semicolons in all the exactly right places.

If you are using Blueprint as a subproject, you can already use this by updating to the latest commit.

Third Party Projects

Haydn Trowell says

With its latest update, the Japanese-English dictionary app Kotoba now brings a kanji composer, making it easy to look up words even when you don’t know how they’re pronounced.

Available on Flathub: https://flathub.org/apps/net.trowell.kotoba

dabrain34 says

🎉 New Release Announcement: GstPipelineStudio v0.7.3 🎉

GstPipelineStudio version 0.7.3 is out! You can now drag elements and pipelines straight onto the graph, open a terminal next to your pipeline, and use GPS fully translated in six languages.

What’s new in 0.7.3:

  • Drag elements, favorites and pipelines from the lists onto the graph
  • Terminal tab in the bottom panel, toggled from View → Terminal (Linux and macOS)
  • GPS tells you in the window title when a newer release is available, in the AppImage and the Windows and macOS builds
  • Main window built on libadwaita
  • Finnish translation; Italian, French, Portuguese, German and Spanish translations completed
  • Space and s no longer steal keys from a focused text field

Highlights of the 0.7.x series:

  • New application icon
  • Nodes colored by type: source, transform, sink
  • Swap a node for an alternative element from its context menu
  • Tags tab listing tags from bus messages
  • Sortable columns in the element and pipeline lists
  • Suggestions reuse a compatible free element already in the graph
  • Space bar toggles play/pause, s stops the pipeline
  • Explicit properties are kept when importing a pipeline

Participants:

  • StĂŠphane Cerveau — maintainer and main contributor
  • Translations contributed through Weblate

🚀 Upgrade Now!

To get the latest version of GstPipelineStudio, visit the project’s page and check out the Changelog for more details.

Happy streaming! 🎬📡

JumpLink reports

Learn 6502 0.9.0 now runs on Linux, macOS, Windows and Android. Android is still experimental, but the basics already work. The image shows the app on GNOME Mobile 🐧 and Android 🤖.

It’s one TypeScript and Blueprint codebase. On Linux it’s a regular GJS app. On macOS and Windows it runs on Node.js with @gjsify/node-gi, which provides gi:// imports that behave like GJS, plus a bundled GTK. On Android it runs in NativeScript, where @gjsify/adwaita-nativescript turns the same Blueprint files into native Android views styled like libadwaita.

All of this comes from gjsify, an experimental framework that brings Node.js and Web APIs to GJS, and GJS to other runtimes. It can now also load native Node.js addons in GJS through its own Node-API implementation. The gjsify toolchain itself runs on GJS, so Node.js is an option, not a dependency.

How it works, and how AI fits into a project I started long before AI tools existed, is on my blog.

Get it on Flathub or download the app for Linux, Windows, macOS and Android from the app page.

BarÄąn GĂźzeldemirci says

word-sys PDF Editor v1.12.0 (“Sign & Protect”) has been released! Built with GTK4 and Libadwaita, this major update introduces an interactive AcroForms engine and form builder, PAdES digital signatures with PKCS#11 hardware token (smart card/USB HSM) support, permanent cryptographic redaction with automated PII detection, and a multi-threaded offline Tesseract OCR engine. It also adds continuous page scrolling, 4K/HiDPI fractional scaling improvements, measurement tools, AES-256 encryption, and a PDF target-size compression solver.

You can install word-sys PDF Editor from Flathub or check out the release on GitHub.

Shell Extensions

J G announces

Accent Hold brings macOS-style press and hold to GNOME.

I switched from a Mac and missed typing accents by simply holding a key, so I built it. Hold a letter (e, a, c, o, n…) and its accented variants (é è ê ë, ç, ñ, ô…) pop up next to the text cursor. Pick one with its number, the arrow keys or the mouse. A quick tap still types the plain letter, and the held key doesn’t repeat.

Version 2.1 does everything inside the extension: no daemon, no root, nothing to configure. It works with any layout (AZERTY, QWERTZ…) on GNOME 45 to 50. For apps that don’t use the GNOME input method, a shortcut (Super+E) opens the same picker.

Many thanks to Manuele Conti for the discussions that shaped the press-and-hold design.

https://extensions.gnome.org/extension/10265/accent-hold/

Miscellaneous

GNOME OS ↗

The GNOME operating system, development and testing platform

Bilal Elmoussaoui reports

oo7 0.7 is out! 🎉

The oo7-daemon crate is now officially stable: a Rust implementation of the Secret Service that’s mature enough to ship in GNOME OS and Fedora 45 (and likely other distros soon).

Release notes: https://github.com/linux-credentials/oo7/releases/tag/0.7.0

Events

Guillaume Bernard reports

GNOME will be present in Toulouse, France, on the 14th and 15th of November for the ‘Capitole du Libre’ event. It’s an event for the free software community living in France with many volunteers and students, conferences, and booths from the biggest free software projects (Debian, April, Mageia, Mozilla, OpenStreetMap…).

In case you’re interested in coming for one or two days, please contact me via #engagement:gnome.org so that we can get in touch!

To anyone interested, I will have GNOME t-shirts to sell to support the Foundation, supporting Foundation employees, contractors, and the Foundation’s missions!

Take a look at: https://capitoledulibre.org/ (in French)

That’s all for this week!

See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

Avatar of Luis Villa

Luis Villa

@luis

"What ride?": where libre software could go after LLMs

Blog post collecting in one place some thoughts from social media (original post).

Armin Ronacher ran the same poll on Twitter, Bluesky, and Mastodon: “Do you still write more than 20% of code by hand?” The answers: 8.4% yes on Twitter, 26.3% on Bluesky, 65.1% on Mastodon. Obviously some caveats here, but still: same question, three very different worlds.

My reaction, roughly: sob. A lot of very, very good FOSS people — people whose hearts and pre-LLM skills are in exactly the right places — are on Mastodon, and on the 65% side of that poll.

In quoting Armin, I said I want to bring those folks “along for this ride”. Sumana asked the right question in reply: what ride, specifically? This post is an answer: what has me excited about user freedom, post-LLMs? where do I think we’re going? where do I want the hardest-core of hard-core FOSS zealots (complimentary) to come along?

Here are some of the highlights:

#1. Freedom 1, for real this time

Most important: I think we can get to a world where most users are actually empowered to take advantage of Freedom 1 — the freedom to study how a program works and change it to do what you want.

For forty years that freedom has been real in law but mostly theoretical in practice. You had it if you could also build the thing, navigate the codebase, and maintain a patch. Even with a CS degree, for anything but the most trivial changes, I basically never had that. Now my daily-driver desktop is a heavily customized GNOME, I read social through an aggressively forked phanpy, and probably others I’m forgetting. That’s the promise we always wanted and I’m living it right now.

#2. Higher quality, because best practices can become actual practices

A lot of FOSS best practices were always good in theory, but proved too expensive for volunteers (or really anyone) to implement comprehensively. Among those: test-driven development, accessibility testing, and especially formal methods. These kinds of things have stopped being impractical and have started becoming real.

#3. Collaboration can better include non-coders?

The nature of collaboration is going to change. Lots of that may be for the worse in a variety of ways (about which some other day). But on the plus side, on a front I care a lot about: we now have a loooot of ways of bringing in the opinions (and skills and efforts!) of people who don’t code. Designers, writers, domain experts, the people who file the bug reports.

One thing I worry a lot about here: there was a golden era where open source got better, quickly, because we were much better about listening to our users though public issue trackers. That window closed. Now I fear it will go the other way: proprietary vendors are frantically building tools to help them synthesize user feedback and turn that into shipping code at lightning fast speed. If we don’t get there first, with open processes, we lose one of the few structural advantages open collaboration has left.

#4. A Big Bad Guy again

Half-joking, but: FOSS benefits a lot from having a clear antagonist, like Bill Gates in the old days. We have Bad Guys again, and they’re worse than the old ones: more concentrated, more capital-intensive, and more willing to take what’s open without giving back. That’s a reason to engage, not to opt out.

And yes, that means I’m advising using the tools the bad guys are giving us. We’ve done that before to advance our goals (emacs and gcc were written on proprietary kernels; Firefox on Windows was how we beat IE) and we are going to have to do it again. That’s not great — but that should motivate us to fight and win, not to quit.

#5. Finally retiring unsafe-by-design C and C++

Rewriting our decades of legacy, unsafe-by-design C and C++ in modern, safer languages is now a tractable task. That once seemed so impossible that Vernor Vinge, a computer science professor, made Unix-era buffer overflows still lurking in the year 8000 a plot point in A Deepness in the Sky. Vinge’s joke was that nobody would ever pay down that debt, even given 1,000 years. Now we can, making all our users more secure — and, if we’re serious about it, giving us a new generation of programmers who can work in our codebases.

#So — how do we bring folks along?

None of these rides is guaranteed to happen, let alone to turn out well. They’re all possibilities — and that’s exactly why I want a big tent of people coming along to steer them, and to keep us honest.

Fellowship Update, 2026-11-06

It’s been a few weeks since my last blog post about my work on GNOME Design and Community Management as part of my Sovereign Tech Fellowship. As usual, I want to share some of the most interesting developments.

Passkey Portal

Passkeys are an easy and safe way to sign in, and can replace passwords. They’re tied to the website that issued them, so they can’t be phished. Hackers can’t steal them from a website because its servers don’t store your private key. You can learn more about passkeys and how they work at whatarepasskeys.info.

People have been working to bring passkey support to Linux for several years, and we’re getting closer to making it available to users. Just today, the experimental credentials portal was merged into xdg-desktop-portal. To support its implementation in GNOME, I’ve spent a lot of time researching and refining the design of the credentials portal. Below is an excerpt from the credentials portal mockup. Take a look at the full mockup in the OS mockups repository for all the user interaction flows.

Detail of the credentials portal mockup showing the passkey creation
Some details of the credentials portal mockup showing the passkey creation

Libadwaita

In my last blog post, I wrote about standardizing scale rows in libadwaita and mentioned that ActionRow would likely get a generic bottom child widget to support the change. This has now landed as the ActionRow:body property, and the calendar app Era already uses it to implement its participants row.

Screenshot of Era with a participants row based using the new ActionRow:body property
Screenshot of the calendar app Era with a participants row based using the new ActionRow:body property

The new scale style has also already landed in the upcoming libadwaita version.

Screenshot of the new scale style with pill shaped knob
Screenshot of the new scale style with pill shaped knob

Other

If you’ve read this blog before, you may have noticed that the font has changed. Inter has been installed on GNOME’s WordPress instance, so community members can now use it on their personal GNOME blogs to keep their typography consistent with GNOME’s web standards.

As usual, I’ve reviewed design changes across various projects and answered questions on Matrix and in issue threads. GNOME Circle reviews are also progressing well, and I’ll write more about them as the changes land.

Thanks for reading! Feel free to leave a comment on this blog or reach out to me on Mastodon or Matrix.

Avatar of Michael Meeks

Michael Meeks

@michael

2026-11-04 Wednesday

  • Catch up with Astor & Damien, Eloy, Julie, into Cambridge for a shared lunch - arriving an hour late: daylight saving joy. Caught up with the team, chat with Richard.
  • Published the next strip: Blake gets on with it - a triumph for the community, although often whether he is part of the community seems rather context dependent
    The Open Road to Freedom - strip#84 - Blake gets on with it
  • Home, call with Anna, COOL TC meeting, out for a run with J. fine dinner, catch up with Dave.
  • Worked late on reviews; endless text & spreadsheet-ness.

    I Know Kung Fu

    In the first "The Matrix" movie we have the famous scene of Neo just connected to the computer and opening his eyes and saying "I know kung fu". Something that was really cool in early 2000 sounds like a dystopia to me nowadays.

    I don't want to "know kung fu", I want to practice Kung Fu! So I prefer "The Karate Kid" way:

    First learn stand, then learn fly. Nature rule, Daniel-san, not mine.

    And talking about movies, there are a lot of movies that shows the Hero's journey structure. And it's not relevant if Daniel-san win the last fight or if Rocky defeats Apollo, because the important part of the story is the journey, is the hero starting the adventure and how the path changes him.

    And this exact principle applies to everything in live, everyone knows that shortcuts doesn't have value. You can win, you can be faster, stronger, bigger, but you are missing the point, you are missing that "journey before destination" is always true for any Radiant Knight.

    In The Matrix the hero's journey is not related to the Kung Fu, and that was just some cool way of introducing the action, the learning is in a different path because in other case we won't have any movie.

    Neo doesn't care about Kung Fu, it's just something nice to fight the Agent Smith (What an irony). Daniel-san want's to learn to fight to defend himself, but at the end, fighting is not important, at the end he actually learns karate, and that changes him, and Miyagi and Daniel care about karate.

    Gen AI "externalizes" the journey, and it's very tempting to take the shortcut and go directly to get the trophy. But doing that we are removing all the value from the output, we are not learning, we are not doing the journey and we don't change at the end, so actually, using Gen AI is like a waste of time.

    No one cares... About something

    I've been thinking lately about why people uses AI, because even with all the advertisement and pressure I sincerely do not see any value in using gen AI, I don't need this technology and the only outcome that I'm seeing today is that's destroying everything that I loved or cared about.

    But going to the point, if there are so many people using and promoting this, maybe they see some value and thinking about it and just talking with different kind of people I'm starting to see a trend. Most of the people are okay with the usage of AI for anything that they don't care, and of course, they are against the usage in anything that they consider important, everything where they see value.

    Designers will say that the AI is generating aberrant images, and stealing the work of others, ignoring copyright and attribution and depreciating the quality, but they will be okay to use it to generate text, translate, write code, etc.

    Writers will say that any text generated with AI is poorly written, but they won't see any problem in using a gen AI image for their blog post.

    Musicians will be disgusted by the AI generated music, but maybe they don't see any problem playing a vibe-coded video game.

    Programmers...

    Okay, maybe not everyone follows this pattern, or maybe that's exactly what's happening. Maybe some devs don't care about coding but care about reviewing, others don't care about testing but care about coding, and others don't care at all and vibe-code everything.

    I don't see any value in any gen AI usage because I usually care about the output, but also about the process, and the how and why is, most of the times, more relevant than the final outcome.

    That's why I try to use only free software, and I'm not using Windows or Mac, that's why sometimes I choose to use a tool just because it's written in python and not in java.

    So to me, the quality of code is not more important than the license, it's not more important than technology used, and of course it's not more important than who and why.

    Because I care... And you should care too!

    I've a "Software Engineer" university degree. But the final paper has no value. What's important to me at the end is that I started that career because my brother introduces me to debian and free software in the 90's. What's important is my relation with peers, professors, my activity in the local Linux User Group, days studying, the failure and the success after understanding interesting math... I don't need an AI generated title, and I don't want people with the "Software Engineer" title, I just want more people to have the opportunity to experience the same growth path, the journey.

    What's the value of music? It's just something to listen when you are working, to hide the sound of life that surround you? Anyone that had listen any musician in live sees the value, the difference. It doesn't matter that you can make "better" music and record and play without any mistake, but we value the live performance, because the music is not the important part, the important part is the musician and the listener, the communication. And it's not the same if you listen the exact same song from someone that just lost his father.

    What's my job? It's just the code that I write? To me it's clear that's not, and shouldn't be. My job is to create software, I don't care if a gen AI can do that, other people can do that before I started to be able to do it, and I'm not asking others to do it for me.

    Of course, not caring about something is natural, no one is interested in all the human activity and just delegate some parts to continue working on what's important to them. But after thinking about it, I can't just ignore it.

    Now, when I need an image, that I don't care enough to create myself, I will care just a little to find someone who actually care and delegate to him instead to a big corp AI. When I need some text to read, I will look for someone who actually cares about the text. And, of course, when I need any software or application , that I don't care enough to create myself, I will look for some developer that actually care about the code and for sure I won't ask any gen AI.

    Avatar of GIMP

    GIMP

    @GIMP

    GIMP 3.2.8 Released

    We’re glad to announce the release of GIMP 3.2.8! This new stable release contains a number of bugfixes and security updates from new and long-time contributors.

    This news posts provides an overview of the changes since GIMP 3.2.6. For a more detailed review, check out the NEWS changelog.

    Wilber-o'-Lantern
    Wilber-o’-Lantern, CC BY-SA 4.0, October 31st, 2026

    General Updates and UX Improvements⁠

    The Add Border filter now allows you to create semi-transparent borders based on the color you choose in the filter.

    Jehan fixed a bug introduced in GIMP 3.2.6 when we added better support for cutting/copying from layer groups. Non-rectangular selections on layers within a layer group will now be copied over correctly.

    Bruno Lopes corrected an issue where the cursor coordinates did not always update in the status bar when changing between different applications.

    denzjos helped us identify a bug with the Levels tool where picking input levels with the Color Picker tool would report incorrect values when working with non-destructive filters. Jehan then developed a fix for it.

    Harsh Verma has implemented a new GUI testing suite in GIMP so we can better check for regressions in the GUI during development. He is preparing a news post that will go over this in more detail, which we will share soon!

    Jehan improved our font-loading code so that it can be cancelled early (for instance, when quitting GIMP while the fonts are still loading). This should speed up our shut-down times.

    Bruno Lopes made improvements to some dialogs so they appear on the correct screen for users with multiple monitors. In addition, the Dot to Dot setting now works again. It was reporting wrong pixel density since GIMP 3.0.

    Jacob Boerema backported some fixes for the Metadata Editor and Viewer feature, as part of his larger work in the development branch.

    Alx Sa and Bruno Lopes added more definitions to our theme file so that GIMP looks the same on each platform.

    Highlighting New Contributor’s Work⁠

    All contributions to GIMP from the community are valued! We want to highlight work from some of the newer contributors here.

    Infinity made several improvements to our text tool for this release! In particular, they improved text cursor movement when editing Right-to-Left languages and mitigated issues when editing text with negative kerning.
    As a side effect of this bug fix, we actually get much better support of RTL text as well as of mix of LTR and RTL texts. The on-canvas dialog now has two new icons for text directions, and the tool automatically detects your base text direction, as defined by rule P2 of the Unicode Bidirectional Algorithm, unless you manually override by clicking one of the buttons.

    Showcasing improved support for RTL text - GIMP 3.2.8

    Aruius improved our color picking display GUIs, so you see more minor changes in colors when editing.

    Chiem Whua Ma helped resolve an issue on Windows where the UI would appear to freeze when moving the canvas after opening multiple images at once. They also fixed a bug where vector layers would be offset incorrect after the canvas was resized.

    Manu Cornet has focused on several performance fixes for GIMP. For this release, they improved caching when drawing gradients larger than 6000 x 6000 pixels. They also made the “marching ants” display for selections run more efficiently. Additionally, they improved how channels are displayed in the Channel dock when a dark theme is set. Finally they sped up the display time for the Preferences dialog.

    balooii made several fixes as well. For instance, they updated our external copy and paste code to also pass along the DPI settings for the image; this means that other software can properly rescale what you paste if they have a different setting that what you used in GIMP. They also made our Debug dialog themeable and translatable (though we hope you don’t get the opportunity to see their work in this area!)

    MrYoranimo fixed an oversight in our raw data import plug-in, where images were not loaded as binary data on Windows. This is a bit technical, but it meant that some raw data might not be interpreted correctly. Their fix ensures that the data is loaded consistently on Windows as it has been on other platforms.

    Dimitriy Ryazantcev has continued their work on Windows icon and animated cursors. In this release, they have updated our loading code to match how Windows orders and groups icons in the file.

    abderraouf updated our HEIF loading code to allow for loading larger images.

    Chomu updated our menu code to allow plug-in and script developers to add submenus in named menu sections. For instance the following code will add a submenu Custom/ below other Paste as actions and your new plug-in action in it:

    gimp_procedure_add_menu_path (procedure, "<Image>/File/[Paste as]/Custom");
    

    Also gimp_plug_in_add_menu_branch() has been deprecated (though it was already not working properly anyway so we expect nobody was using it).

    System-specific Updates⁠

    Bruno Lopes continues their work to improve GIMP’s integration on different platforms. To name a few updates:

    • On macOS 27+, title bars are displayed with background colors again. Icons on the menu bar should also appear accordingly. Since the release of Golden Gate, these were being rendered transparently due to breaking changes on the macOS side.

    • On macOS 14+, we now use the ScreenCaptureKit API for taking screenshots.

    • On Intel-based macOS, GIMP should run without warnings from GateKeeper thanks to us now consistently notarizing Python.

    • We now display a 1/0 value for switches on macOS based on the “Differentiate without color” setting.

    • Transparency is retained when copying an image from certain apps to GIMP, instead of it showing as black.

    • The longstanding “Blank UI” bug that happened on startup for certain macOS computers should be finally fixed!

    • Print Preview (aka Image Settings tab) should now work with the Windows 11 Unified Print Dialog on that platform. In addition, Page Setup should now use the correct printer, not just the default one on Windows.

    • On Windows, “Merged title bar” settings now play nicer with system features such as minimizing from the task bar and title bar shadowing effets.

    • The Screenshot feature now works better on HDR displays on Windows.

    • AppImage compatibility was improved to support installing Python Wheels from pip like Flatpak and Snap. Note, however, that our minimum version for 3.2 continues to be a distro released after Debian 13 (Trixie).

    Security Updates⁠

    As many free and open source software projects can attest, we have continued to receive a large quantity of security reports due to recent advances in software scanning and testing programs. Jacob Boerema and Alx Sa along with new contributors Mike Gorse, Dirk Mßller, and Alynx Zhou have proactively responded to and patched these reported issues when applicable.

    We take security seriously, but this is not quite as scary as it first sounds. There are no personal accounts or banking information to exploit since we of course don’t access or store that information! The most common report that we get is our older image plug-ins and legacy filters are too trusting of the image size information provided by the image file, and if you intentionally alter this information, you could cause the plug-in (not GIMP itself) to crash.

    Around GIMP⁠

    Documentation for resource makers⁠

    Bruno Lopes wrote two new tutorials on developer.gimp.org:

    These articles should help plug-in and script developers who want to make their plug-ins translatable, either by themselves or by members of the community. This will be especially helpful as we make progress on creating an built-in Extension repo for easily downloading and installing plug-ins, filters, and more. (More information on that coming soon!)

    New Mirrors⁠

    Randhost, in Portugal, and ZEROLAG, in Romania, have graciously offered to serve mirrors for GIMP downloads.

    Mirrors help GIMP be available for download at high speeds wherever you are in the world.

    Does your organization wish to be one of our official mirror sponsors? Create a request to become an official mirror!

    Release Stats⁠

    Since GIMP 3.2.6, in the main GIMP repository:

    • 82 reports were closed as FIXED.
    • 46 merge requests were merged.
    • 300 commits were pushed.
    • 11 translations were updated: Chinese (China), Dutch, Georgian, Kazakh, Lithuanian, Norwegian BokmĂĽl, Norwegian Nynorsk, Slovenian, Swedish, Turkish, Ukrainian.

    27 people contributed changes or fixes to GIMP 3.2.8 codebase (order is determined by number of commits; some people are in several groups):

    • 10 developers to core code: Bruno Lopes, Jehan, Alx Sa, Harsh Verma, Manu Cornet, Chiem Whua Ma, balooii balooii, infinity, Chomu, aruius.
    • 11 developers to plug-ins or modules: Alx Sa, Bruno Lopes, Jacob Boerema, Dimitriy Ryazantcev, Alynx Zhou, Dirk MĂźller, Harsh Verma, Jehan, Mike Gorse, MrYoranimo, phoinix.
    • 11 translators: Anders Jonsson, Dick Groskamp, Kolbjørn Stuestøl, Martin, luming zh, Aurimas Aurimas Černius, Baurzhan Muftakhidinov, Ekaterine Papava, Kjartan Maraas, Yuri Chornoivan, Emin Tufan Çetin.
    • 1 theme designers: Alx Sa.
    • 4 build, packaging or CI contributors: Bruno Lopes, Jehan, Harsh Verma, Alx Sa.
    • 2 contributors on other types of resources: Jehan, Bruno Lopes.

    Contributions on other repositories in the GIMPverse (order is determined by number of commits):

    • The gimp-test-images (unit testing repository) repository had 2 commits by 1 contributors: Jacob Boerema.
    • The flatpak release had 12 commits by 2 contributors: Bruno Lopes, Jehan.
    • Our main website (what you are reading right now) had 65 commits by 3 contributors: Bruno Lopes, Jehan, Alx Sa.
    • Our developer website had 56 commits by 5 contributors: Bruno Lopes, Jehan, Harsh Verma, Alx Sa, Denis Rangelov.
    • Our 3.0 documentation had 197 commits by 8 contributors: Jacob Boerema, Dick Groskamp, Kolbjørn Stuestøl, Anders Jonsson, Marco Ciampa, Jehan, BalĂĄzs Úr, Yuri Chornoivan.

    Let’s not forget to thank all the people who help us triaging in Gitlab, report bugs and discuss possible improvements with us. Our community is deeply thankful as well to the internet warriors who manage our various discussion channels or social network accounts such as Ville Pätsi, Liam Quin, Michael Schumacher and Sevenix!

    Note: considering the number of parts in GIMP and around, and how we get statistics through git scripting, errors may slip inside these stats. Feel free to tell us if we missed or mis-categorized some contributors or contributions.

    Downloading GIMP 3.2.8⁠

    You will find all our official builds on GIMP official website (gimp.org):

    • Linux AppImages for x86 and ARM (64-bit)
    • Linux Flatpaks for x86 and ARM (64-bit)
    • Linux Snaps for x86 and ARM (64-bit)
    • Universal Windows installer for x86 and ARM (64-bit)
    • Microsoft Store for x86 and ARM (64-bit)
    • macOS DMG packages for Intel/x86 and Apple/ARM hardware (64-bit)

    Other packages made by third-parties are obviously expected to follow (Linux or *BSD distributions’ packages, etc).

    What’s Next⁠

    While we’ve been making periodic updates to the stable GIMP 3.2 branch, we’ve also been hard at work on developing the next version of GIMP. There’s a lot of cool things in progress, and we look forward to sharing more about that with you all soon!

    Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger!

    Avatar of This Week in GNOME

    This Week in GNOME

    @thisweek

    #272 Shiny Icons

    Update on what happened across the GNOME project in the week from October 23 to October 30.

    GNOME Fellowship

    Sophie (she/her) says

    GNOME RFC Process, many fixes in glycin, CMYK images in Loupe, and more: Learn about my work in October as part of the GNOME Fellowship.

    GNOME Core Apps and Libraries

    Files ↗

    Providing a simple and integrated way of managing your files and browsing your file system.

    Peter Eisenmann announces

    Many MRs have landed in Files since the 51.1 release! Here are some highlights:

    • Jakub Steiner made some ✨shiny✨ new placeholder icons
    • Khalid Abu Shawarib removed blocking I/O, so Files feels snappier
    • Khalid also added more file operation tests and fixed issues an automated audit turned up
    • Sivaprasad Murali brought operation error messages in line with the HIG
    • Corey Berla fixed a security issue with emptying the trash on removable devices
    • Jordan Petridis set up automated testing on GNOME OS in GitLab CI
    • “Programejt” made sure overly long content text in the properties dialog doesn’t get ellipsized
    • Peter Eisenmann taught the “Open With” app search to also match executable names

    Software ↗

    Lets you install and update applications and system extensions.

    Philip Withnall says

    Thanks to sysprof profiling by Jeff Fortin and code review by Georges, gnome-software has had some nice speedups in icon loading and downloading this week, which should make icons show up a lot faster in app listings, and reduce bandwidth and disk usage. See https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/2466

    Calendar ↗

    A simple calendar application.

    Georges Stavracas (feaneron) announces

    GNOME Calendar continues to evolve with a few user facing and accessibility improvements in the past week. Thank you to everyone who submitted patches that landed this week, and everyone who reviewed and gave feedback on them!

    Folding Search Results

    Previously, searching in Calendar showed all instances of matching recurring events. Last week, we managed to merge a long-awaited patch that improves this behaviour by folding all instances of a matching recurring event into a single row! This makes searching for events cleaner and easier to parse, as the results are no longer flooded with irrelevant duplicates.

    See !808, by John Cardullo; reviewed by Niklas Wimmer, Alen Galinec, Zelda Ahmed, and Georges Stavracas

    Focus Selected Date First

    Continuing the long effort to make GNOME Calendar more keyboard accessible, we landed a small tweak that improves the behaviour when tabbing into the sidebar’s and event editor’s date chooser grid. Instead of focusing the first cell in the grid, focus is now properly moved to the currently selected date’s cell. This matches the expected behavior when tabbing into other grids or lists, to first focus the currently selected item.

    See !869, by Hari Rana; reviewed by Niklas Wimmer

    Improved Screen Reader Output

    To make Calendar more accessible, grid cells in the month view and date chooser will announce the month and day of the cell when focused. Previously, these cells only announced the day of the month, which made it very difficult for users to identify which month they were currently in!

    See !886 and !887, by Arak; reviewed by Hari Rana and Niklas Wimmer

    GLib ↗

    The low-level core library that forms the basis for projects such as GTK and GNOME.

    Philip Withnall announces

    Support for XDG intents has landed in GLib, thanks to work by Ignacy Kuchciński (based on implementation work by Sebastian Wick and spec work by many others). This is the groundwork for allowing apps to register themselves as supporting opening commands in a terminal, or handling certain URI schemes. Work is ongoing to implement these specific intents. See the specification and the implementation in GLib.

    GNOME Circle Apps and Libraries

    Alexander Vanhee reports

    Bazaar has hit half a million downloads on Flathub! To celebrate, I’ve fixed our most upvoted issue: the Bazaar Flatpak can now install apps from user remotes. Try it today with the beta on the GNOME Nightly remote, and report any issues you may face, especially on that niche distro only you and your grandma use.

    Third Party Projects

    Mark announces

    GitY 2026.7 is now out! No longer is GitY simply a git repository viewer you can now manage your repositories directly. Many features have been added this year to make it a modern version of GitG. The most recent changes include:

    • Add tags and branches
    • Remove tags, branches, and stashes
    • Commit diffs show images being added, changed, or removed (if you’re curious on the technical details it uses glycin)
    • Search branches, tags, and stashes with CTRL-SHIFT-F
    • Live repository refresh is now available as an option (default off)
    • Can turn off the summary of lines changed per diff

    Download from Flahub: https://flathub.org/en/apps/com.markdeepwell.GitY

    Nathan Perlman reports

    Rewaita got an update to v1.1.8 this week! This update was mostly focused on adding new features and filling in some of the odd blanks in the theming.

    What’s new?

    • Added gtksourceview theme support (the editor part Gedit and Builder)
    • Finally added hot reloading for GTK4
    • Fixed Firefox 157.0 theming issues
    • Moved user guide to Github wiki
    • Unrelated to GNOME but Rewaita now has Cinnamon desktop support

    Hope you all enjoy! Give Rewaita a try if you haven’t, once you get sucked in you’ll never want to go back. And if do you like it make sure to leave a star on Github. Installs are available of Flathub and the AUR.

    Rat Cornu reports

    Ratic got a new version 0.4.5 this week!

    This is not a big update, but it greatly improve performances: it is now instantaneous to reload the datas already cached during previous launches. Furthermore, scrolling in the application no longer make it lag, and the image cache size can been limited to control RAM consumption.

    You can check the new version on Flathub, on the repo, or even come discuss with us on our matrix room!

    Thanks again for all the people that contribute to the localization on weblate!

    Anton Isaiev reports

    RustConn 0.24 is out - a connection manager for SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Web and Zero Trust, built with GTK4 and Libadwaita.

    Since 0.23:

    • Faster SSH connects (no process spawns on the UI thread) and a Bitwarden performance pass
    • “Set Up Key Authentication…” - generate or reuse an SSH key, install it, verify, switch over
    • Terminal .rsc scripting + OSC 52 remote clipboard
    • RDP clipboard direction control, QUIC proxy preset, richer MobaXterm import/export
    • Embedded browser in the Snap (now on core26)
    • Loopback-only tunnels and stdin-fed Bitwarden secrets

    Thanks to Christian Petri, Naim Shafiev and all the contributors and translators who drove this cycle. And thanks to everyone who files bugs and supports the project - this cycle was driven largely by the issues you reported. If you’d like to support development, the repo has a Sponsor link.

    https://github.com/totoshko88/RustConn https://flathub.org/apps/io.github.totoshko88.RustConn https://snapcraft.io/rustconn/

    Daniel Elia announces

    Convey 51.0 has been released!

    Since 50.2-1 it has become a much more polished mail client; narrow windows and mobile layouts work better, notifications are clearer, with several showing at once, and spell-checking has proper dictionary support.

    • Subject shown above the conversation
    • Per-address signatures, with images
    • Drag to resize images in the composer
    • Unread filter in the search bar
    • Unsubscribe from mailing lists
    • Reply to List action
    • Local Starred folder for IMAP accounts
    • Folders in a sidebar on mobile

    I’m working on adding a “Favourites” section to the sidebar, so folders from any account can be shown at the top of the sidebar, and there’s still bugs to be fixed, all planned for 51.1

    Lastly, a big thank-you the community for getting so involved with the development of Convey, its first release to Flathub was a little over a month ago, and it’s seen much more adoption than I expected!

    Check it out on Flathub, and check out the repo here

    Fractal ↗

    Matrix messaging app for GNOME written in Rust.

    KĂŠvin Commaille reports

    Only a week went by since our previous security-related update, and several upstream dependencies released even more security fixes so we bundled them into Fractal 14.3 to make sure that everything keeps running smoothly until the next release!

    This version is available right now on Flathub.

    As usual, you can also help make sure the next major version is solid by using Fractal Nightly. Help on fixing our remaining bugs is of course always appreciated!

    Crosswords ↗

    A crossword puzzle game and creator.

    jrb announces

    GNOME Crosswords 0.3.19 is out! This version features a redesigned game layout, with smooth animations and a new bottom sheet for clues in mobile mode. In the editor, acrostics are now out of Beta, with a much faster generator and an easier grid-building workflow. Also new: rich text in puzzle metadata, synonyms in word lists, large print templates, and tons of bug fixes.

    A plea for help: We received an experimental merge request to build macOS bundles. As that’s outside my expertise, I’d love help testing the game and reviewing the changes. Please take a look or let me know if you can help.

    Get it on Flathub! (Editor)

    GNOME Websites

    Philipp Sauberzweig announces

    The Inter font has been installed on the GNOME WordPress instance. You can now use it on your personal GNOME blog to ensure consistency with GNOME’s web typography standards.

    Shell Extensions

    Tomáš Gažovič announces

    RSS Feed v10

    RSS Feed reached version 10, a jubilee release for the extension.

    The main new features:

    • Starred articles: kept in their own group, even after they drop out of the feed or the feed is removed
    • Configurable article actions: up to three hover buttons per article and separate actions for the left, middle and right mouse button: open, mark as read or unread, star, dismiss, mark older as read, copy link
    • Dismiss and restore: hide articles you do not want to see and bring them all back from the header menu
    • Article history: articles stay stored after they drop out of the feed, up to a per-feed limit

    Since the extension was ported to modern GNOME Shell earlier this year, it has passed 1000 downloads. Thank you to everyone who installed it, reported issues and sent feedback!

    Missing something in your RSS workflow? Share your idea in Feature Requests on GitHub Discussions, I read every one.

    Miscellaneous

    GNOME OS ↗

    The GNOME operating system, development and testing platform

    Ada Magicat reports

    It has been a busy week with tons of fixes and 2 new contributors! Welcome John Adams and Lars Ellinger. Check out what they worked on:

    • Lars added support for the LDAC codec to our pipewire builds. This will provide higher audio quality for bluetooth headsets that support it. !35267
    • John contributed 3 different fixes for Nvidia and snapd:
      • Adapting our firmware installation for the new 615 Nvidia driver. !5122
      • Making Nvidia graphics cards work inside snap applications. !5146
      • Fixed a regression with snapd’s apparmour profiles. !5123

    We haven’t been sitting still either:

    • Hari, Jonas and Valentin ironed out various issues with our zswap setup. !5090, !5101, !5118, !5135
      • While it used to be a nightly-only feature, we think it is now rebust enough for everyone, so we enabled zswap in OS Preview as well.
    • We now enable the extra-codecs feature by default. This was introduced earlier this year to expand codec support, but it required users to enable it manually. !5109
    • Jonas enabled speaker support on the Dell XPS 14 and other modern Intel laptops. !5119
    • Our installer now offers to erase the user’s drive before installation. !5112
    • Valentin backported a few CUPS patches to fix printing !5009, !5097
    • Minor documentation touchups by Hari, zyxhere, Jonas and Tobias !4994, !5056, !5092, !5105

    Events

    Evangelos “GeopJr” Paterakis 🏳️‍⚧️🏳️‍🌈 says

    Come visit us in FOSSCOMM, Athens!

    We will have a booth this weekend in the University of West Attica on 31st October and 1st November.

    There will be t-shirts, stickers and community members available to chat!

    https://2026.fosscomm.gr/

    That’s all for this week!

    See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

    Avatar of Jussi Pakkanen

    Jussi Pakkanen

    @jpakkane

    A slightly better ThreadPoolExecutor in Pystd through types

    In the previous post we looked at a simple multithreaded task executor that behaves roughly like its Python standard library counterpart. The biggest missing feature was being able to return values from run tasks via future objects. In a fully dynamic language like Python this is fairly straightforward, whereas in a language with static typing, such as C++, things are trickier.

    The simplest solution is merely to make your Executor class a template, parameterized by the function you want to run. The obvious downside is code bloat. If your program has an Executor<Foo> and Executor<Bar>, all of their code is duplicated in the binary, even though 90% of it is probably the same. Also, due to the magic of template instantiation, compilation is slower. Another downside is that you can't run tasks that do different things, especially having different return value types, with one Executor.

    I set about trying to solve both of these issues at the same time. It turned out that if you are willing to tolerate just a little bit of OO and one extra malloc per task, one can get a fairly nice solution. As a task executor is used for things that run for a long time and consume a lot of resources, the overhead is insignificant for most use cases. And if it absolutely, positively matters to someone, they are going to roll their own anyway. Trying to cater to those use cases would be a waste of effort in any case.

    These requirements point to a fairly obvious solution. The executor deals with TypeErasedFuture/Promise types that store all the task metadata via good ol' void pointers and virtual functions. The concrete Future and Promise tasks are just type safe shims on top of them. The entire implementation required the use of only two reinterpret_casts, which is quite surprising. I would have expected more, but sometimes you get lucky, I guess.

    The Executor gets to remain a concrete class. The only template in it is the submit method that preserves the type erased task and returns a typed future object.

    Using this is not quite a simple as its Python counterpart, but still fairly easy. After you have written a class that implements the executor's task interface, submitting work and consuming the results is done like this.

    If the return value had been something other than void, .get() would return a reference to the result object. The tradeoff between the ease of use provided by maximal templateism and minimal code generation is clearly visible in the extra boilerplate code you need to write to get things going. But in return you get both reduced binary size and faster compile times. Whether that is an improvement or a detriment is up to you.

    This code is not going to win any robustness prizes (though, in the modern day of AI garbage, you never know), but the end result is more than adequate for a single evening work.Â