call_end

    • Pl chevron_right

      Sam Thursfield: Status update, 17/10/2025

      news.movim.eu / PlanetGnome • Yesterday - 16:16 • 7 minutes

    Greetings readers. I’m writing to you from a hotel room in Manchester which I’m currently sharing with a variant of COVID 19. We are listening to disco funk music.

    This virus prevents me from working or socializing, but I at least I have time to do some cyber-janitorial tasks like updating my “dotfiles” (which configuration for all the programs i use on Linux, stored in Git… for those who aren’t yet converts).

    I also caught up with some big upcoming changes in the GNOME 50 release cycle — more on that below.

    nvim

    I picked up Vim as my text editor ten years ago while working on a very boring project. This article by Jon Beltran de Heredia, “Why, oh WHY, do those #?@! nutheads use vi?” sold me on the key ideas: you use “normal mode” for everything, which gives you powerful and composable edit operations. I printed out this Vim quick reference card by Michael Goerz and resolved to learn one new operation every day.

    It worked and I’ve been a convert ever since. Doing consultancy work makes you a nomad: often working via SSH or WSL on other people’s computers. So I never had the luxury of setting up an IDE like GNOME Builder, or using something that isn’t packaged in 99% of distros. Luckily Vim is everywhere.

    Over the years, I read a newletter named Vimtricks and I picked up various Vim plugins like ALE , ctrlp , and sideways . But there’s a problem: some of these depend on extra Vim features like Python support. If a required feature is missing, you get an error message that appears on like… every keystroke :

    In this case, on a Debian 12 build machine, I could work around by installing the vim-gtk3 package. But it’s frustrating enough that I decided it was time to try Neovim.

    The Neovim project began around the time I was switching to Vim, and is based on the premise that “Vim is, without question, the worst C codebase I have seen.” .

    So far its been painless to switch and everything works a little better. The :terminal feels better integrated. I didn’t need to immediately disable mouse mode . I can link to online documentation! The ALE plugin (which provides language server integration) is even ready packaged in Fedora .

    I’d send a screenshot but my editor looks… exactly the same as before. Boring!

    I also briefly tried out Helix , which appears to take the good bits of Vim (modal editing) and run in a different direction (visible selection and multiple cursors). I need a more boring project before I’ll be able to learn a completely new editor. Give me 10 years.

    Endless OS 7

    I’ve been working flat out on Endless OS 7 , as last month. Now that the basics work and the system boots, we were mainly looking at integrating Endless-specific Pay as you Go functionality that they use for affordable laptop programs .

    I learned more than I wanted to about Linux early boot process, particularly the dracut-ng initramfs generator (one of many Linux components that seems to be named after a town in Massachusetts).

    GNOME OS actually dropped Dracut altogether, in “vm-secure: Get rid of dracut and use systemd’s ukify” by Valentin David, and now uses a simple Python script. A lot of Dracut’s features aren’t necessary for building atomic, image-based distros. For EOS we decided to stick with Dracut, at least for now.

    So we get to deal with fun changes such as the initramfs growing from 90MB to 390MB after we updated to latest Dracut. Something which is affecting Fedora too (LWN: “Last-minute /boot boost for Fedora 43” ).

    I requested time after the contract finishes to write up a technical article on the work we did, so I won’t go into more details yet. Watch this space!

    GNOME 50

    I haven’t had a minute to look at upstream GNOME this month, but there are some interesting things cooking there.

    Jordan merged the GNOME OS openQA tests into the main gnome-build-meta repo . This is a simple solution to a number of basic questions we had around testing, such as, “how do we target tests to specific versions of GNOME?”.

    We separated the tests out of gnome-build-meta because, at the time, each new CI pipeline would track new versions of each GNOME module. This meant, firstly that pipelines could take anywhere from 10 minutes to 4 hours rebuilding a disk image before the tests even started, and secondly that the system under test would change every time you ran the pipeline.

    While that sounds dumb, it worked this way for historical reasons: GNOME OS has been an under-resourced ad-hoc project ongoing since 2011, whose original goal was simply to continuously build: already a huge challenge if you remember GNOME in the early 2010s. Of course, such as CI pipeline is highly counterproductive if you’re trying to develop and review changes to the tests , and not the system: so the separate openqa-tests repo was a necessary step.

    Thanks to Abderrahim’s work in 2022 ( “Commit refs to the repository” and “Add script to update refs” ), plus my work on a tool to run the openQA tests locally before pushing to CI ( ssam_openqa ), I hope we’re not going to have those kinds of problems any more. We enter a brave new world of testing!

    The next thing the openQA tests need, in my opinion, is dedicated test infrastructure. The shared Gitlab CI runners we have are in high demand. The openQA tests have timeouts, as they ultimately are doing this in a loop:

    • Send an input event
    • Wait for the system under test to react

    If a VM is running on a test runner with overloaded CPU or IO then tests will start to time out in unhelpful ways. So, if you want to have better testing for GNOME, finding some dedicated hardware to run tests would be a significant help.

    There are also some changes cooking in Localsearch thanks to Carlos Garnacho:

    The first of these is a nicely engineered way to allow searching files on removable disks like external HDs. This should be opt-in: so you can opt in to indexing your external hard drive full of music, but your machine wouldn’t be vulnerable to an attack where someone connects a malicious USB stick while your back is turned. (The sandboxing in localsearch makes it non-trivial to construct such an attack, but it would require a significantly greater level of security auditing before I’d make any guarantees about that).

    The second of these changes is pretty big: in GNOME 50, localsearch will now consider everything in your homedir for indexing.

    As Carlos notes in the commit message, he has spent years working on performance optimisations and bug fixes in localsearch to get to a point where he considers it reasonable to enable by default. From a design point of view, discussed in the issue “ Be more encompassing about what get indexed “, it’s hard to justify a search feature that only surfaces a subset of your files.

    I don’t know if it’s a great time to do this, but nothing is perfect and sometimes you have to take a few risks to move forwards.

    There’s a design, testing and user support element to all of this, and it’s going to require help from the GNOME community and our various downstream distributors, particularly around:

    • Widely testing the new feature before the GNOME 50 release.
    • Making sure users are aware of the change and how to manage the search config.
    • Handling an expected increase in bug reports and support requests.
    • Highlighting how privacy-focused localsearch is.

    I never got time to extend the openQA tests to cover media indexing ; it’s not a trivial job. We will rely on volunteers and downstream testers to try out the config change as widely as possible over the next 6 months.

    One thing that makes me support this change is that the indexer in Android devices already works like this: everything is scanned into a local cache, unless there’s a .nomedia file. Unfortunately Google don’t document how the Android media scanner works. But it’s not like this is GNOME treading a radical new path.

    The localsearch index lives in the same filesystem as the data, and never leaves your PC. In a world where Microsoft Windows can now send your boss screenshots of everything you looked at , GNOME is still very much on your side. Let’s see if we can tell that story.