call_end

    • Pl chevron_right

      Allan Day: GNOME Foundation Update, 2025-12-19

      news.movim.eu / PlanetGnome • 19 December • 5 minutes

    Welcome to this, the final GNOME Foundation update of 2025! This is an especially large update – there’s been a huge amount happening recently, and it’s also been three weeks since the last update. I hope you’ll agree that, with this final update of the year, there’s plenty to celebrate, as well as look forward to in the year ahead.

    GNOME.Asia 2025!

    Last week we had a very successful GNOME.Asia 2025 conference in Tokyo, Japan. Having been busy providing organizational support in the run up to the event, Kristi flew out to help the local team on the ground. The Foundation also provided travel sponsorship for 11 attendees, with help from the Travel Committee. I’ve heard that it was a great event with good attendance. For those who didn’t attend I’m hoping that we’ll have a more detailed report soon.

    GNOME.Asia is an amazing success story. It’s incredible to think that this event has been running for 17 years now, reaching out to communities and new audiences all over Asia. Huge thanks to the local organizing team for making this year’s edition a success.

    Also, thanks to our donors! GNOME.Asia receives funding from the Foundation in order to continue operating, and this event is therefore only possible due to the financial support that the GNOME Foundation receives.

    Fundraiser

    The GNOME Foundation had its first fundraising campaign in a long time this month. You can read the announcement here , and Cassidy wrote a great followup post . The campaign was relatively small in scope and was intended as a trial balloon for bigger efforts in the future, but it still did some good and resulted in an increase in donations. Huge thanks to the newly formed fundraising committee for working on this.

    Those of us at the GNOME Foundation are deeply appreciative of each and every donation we receive, and are working hard to ensure that every dollar is put to good use. The funds we’re receiving are making a real difference, allowing us to do things like increase the community travel budget for the current financial year, and plan new support programs that we would like to launch in the coming year.

    Audit preparation

    The GNOME Foundation is scheduled to have its first audit in early 2026. This is a routine event triggered by our relatively high income in the previous financial year, and there is currently a lot of activity happening in preparation. This includes new and revised policies that are currently in draft, a lot of work to improve the organization of our records, plus filling in a lot of forms that have been sent to us by the auditors. The written submissions for the auditors is due by mid-February so this is going to be a high priority for us until then.

    I’m personally looking on the audit as a great opportunity to improve our processes and documentation, and the audit process is already feeding into other internal improvements that are underway.

    Digital Wellbeing

    The parental controls work that Philip, Ignacy and Sam have been working on is in the very very final stages now. I’m pleased to report that some of the last few elements of the screen time limits feature have been merged in the past few weeks, and the final remaining changes are currently in the merge queue. This is a vital feature for children and their carers, so it’s excellent to see it being added to GNOME. Congratulations to the team on completing this project on time and on budget!

    FOSDEM 2026 preparations

    FOSDEM will happen in Brussels at the end of January, and the Foundation has a number of activities scheduled to happen around it. There will be a booth, which director Maria Majadas is in the process of organizing. There will also be one of our biannual Advisory Board meetings, for which we’ve booked the room and confirmed attendance. The Board is also planning to have a short hackfest prior to the conference, giving us an opportunity to meet face-to-face.

    More things!

    In addition to those larger items, there’s good list of other notable events from the last three weeks:

    • I have recently been working on the outstanding 2023-2024 GNOME Foundation annual report , which was finally completed today. The report covers the period from October 2023 to September 2024, so is somewhat historical in nature at this point. However, I’ve already started work on the next report, which is for 2024-2025, which I plan to have published on schedule in January.
    • In case you missed the news earlier in the week, the Board was thrilled to welcome Deepa Venkatraman as a Director . Deepa has been doing a fantastic job as treasurer since June, and having her as a voting director will solidify her presence on the Board.
    • Bart has been continuing his Flathub performance work. Additional caching servers have been deployed and according to initial testing a number of known performance issues have been resolved. Enjoy those faster download speeds, everyone!
    • I’m pleased to share the news that the code for donate.gnome.org has now been open sourced . This was blocked on getting consent from contributors for the new license, but that is thankfully resolved now.
    • Banking and finance system changes continue to roll on at a slow pace. The banking changes I previously announced as done are, it seems, not done, but are getting done. Additionally, we are currently on stage three of the approval process for our new finance system.
    • It’s great to see our Outreachy intern for the December 2025 round getting to work . We are delighted to be able to provide funding for Outreachy interns. Please join me in giving Asman a warm welcome.

    That’s it for another GNOME Foundation update, and also for 2025! I’m personally very happy with the Foundation’s recent progress and achievements, and I’m looking forward to this work bearing fruit in 2026. Thanks for reading and for your interest, and please feel free to ask questions in the comments.

    I’ll be taking a break for a couple of weeks over Christmas and New Year, so the next update will likely be on January 9th.

    • Pl chevron_right

      This Week in GNOME: #229 Good Rhythm

      news.movim.eu / PlanetGnome • 19 December • 2 minutes

    Update on what happened across the GNOME project in the week from December 12 to December 19.

    Third Party Projects

    revisto reports

    Drum Machine: Add Your Own Sounds!

    Drum Machine 2.0.0 brought custom samples, you’re no longer limited to the default sounds. Drag and drop your own audio files and they show up as new drum parts. You can reorder them by dragging, and each one can be mapped to a specific MIDI note so when you export to MIDI, it’s clear which sound is which note.

    The latest release adds a Reset to Defaults option that restores everything back to factory settings. The old Reset button is now called Clear and just clears the pattern while keeping your custom samples.

    https://flathub.org/apps/io.github.revisto.drum-machine

    https://github.com/Revisto/drum-machine

    drum_machine.SQm8fLjQ_Z8JkMh.webp

    Gir.Core

    Gir.Core is a project which aims to provide C# bindings for different GObject based libraries.

    Marcel Tiede says

    The final version of GirCore 0.7.0 got released. There are more APIs generated, bugs got fixed, dotnet 10 support was added, GdkWin32 bindings were added and more. See the release for an overview of all changes.

    Shell Extensions

    Mahyar Darvishi reports

    Yet Another Radio , the GNOME extension for streaming internet radio directly from your panel, has been updated with a range of QoL improvements, including:

    • Search thousands of stations via the Radio Browser network API
    • Favorites system for quick access to your preferred stations
    • Song metadata display showing album art, artist, title, and bitrate
    • Media key support for play/pause/stop controls from your keyboard
    • Volume control integrated directly in the panel menu
    • Import/Export functionality for sharing station lists across devices
    • Custom station support for adding your own radio URLs manually

    The extension also features localization support. If you are interested, you can checkout the Github Repo .

    You can get it from GNOME Extensions website

    Adding_Stations.B5GpZdO7_ZnG0xh.webp

    Menu.B03OKrNo_1SIMWA.webp

    GNOME Foundation

    Allan Day announces

    Another GNOME Foundation update is available , covering highlights from the last three weeks. It’s a particularly full update, covering the recent GNOME.Asia summit, audit preparation, digital wellbeing progress, and much more.

    Digital Wellbeing Project

    Ignacy Kuchciński (ignapk) reports

    As part of the Digital Wellbeing project, sponsored by the GNOME Foundation, there is an initiative to redesign the Parental Controls to bring it on par with modern GNOME apps and implement new features such as Screen Time monitoring, Bedtime Schedule and Web Filtering.

    Recently the ‘time is almost up’ notification inside child session has been implemented and merged in GNOME Shell , while preventing children from unlocking after their bedtime and allowing parents to extend their screen time are being polished up. You can track the progress at their merge requests at !3980 and 3999 respectively.

    shell-notification.C3wMAyEk_2jfdqL.webp

    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!

    • Pl chevron_right

      Andy Wingo: in which our protagonist dreams of laurels

      news.movim.eu / PlanetGnome • 17 December • 5 minutes

    I had a dream the other evening, in which I was at a large event full of hackers—funny, that this is the extent of my dreams at the moment; as a parent of three young kids, I don’t get out much—and, there, I was to receive an award and give a speech. (I know, I am a ridiculous man, even when sleeping.) The award was something about free software; it had the trappings of victory, but the vibe among attendees was numbness and bitter loss. Palantir had a booth; they use free software, and isn’t that just great?

    My talk was to be about Guile, I think: something technical, something interesting, but, I suspected, something inadequate: in its place and time it would be a delight to go deep on mechanism but the moment seemed to call for something else.

    These days are funny. We won, objectively, in the sense of the goals we set in the beginning; most software is available to its users under a free license: Firefox, Chromium, Android, Linux, all the programming languages, you know the list. So why aren’t we happy?

    When I reflect back on what inspired me about free software 25 years ago, it was much more political than technical. The idea that we should be able to modify our own means of production and share those modifications was a part of a political project of mutual care: we should be empowered to affect the systems that surround us, to the extent that they affect us.

    To give you an idea of the milieu, picture me in 1999. I left my home to study abroad on another continent. When I would go to internet cafés I would do my email and read slashdot and freshmeat as one did back then, but also I would often read Z magazine , Noam Chomsky and Michael Albert and Michael Parenti and Arundhati Roy and Zapatistas and all. I remember reading El País the day after “we” shut down the World Trade Organization meeting in Seattle, seeing front-page pictures of pink-haired kids being beat up by the cops and wishing I were there with them. For me, free software fit with all of this: the notion that a better world was possible, and we could build it together.

    I won’t lie and say that the ideals were everything. I think much of my motivation to program is selfish: I like to learn, to find out, to do. But back then I felt the social component more strongly. Among my cohort, though, I think we now do free software because we did free software; the motive sedimented into mechanism. These are the spoils of victory: free is the default. But defaults lack a sense of urgency, of the political.

    Nowadays the commons that we built is the feedlot of large language models, and increasingly also its waste pond. The software we make is free, but the system in which it is made is not; Linux Magazine 1, Z magazine 0.

    All of this makes me think that free software as a cause has run its course. We were the vanguard, and we won. Our dreams of 25 years ago are today’s table stakes. Specifically for my copyleft comrades, it seems that the role of copyright as a societal lever has much less purchase; taken to its conclusion, we might find ourselves siding with Disney and OpenAI against Google.

    If I had to choose an idea from the 90s to keep, I would take “another world is possible” over the four freedoms. For me, software freedom is a strategy within a broader humanist project of liberation. It was clever, in that it could motivate people from a variety of backgrounds in a way that was on the whole positive for the humanist project. It inspired me as a meaningful way in which I could work towards a world of people caring for each other. In that spirit, I would like to invite my comrades to reflect on their own hierarchy of principles; too often I see people arguing the fine points of “is this software free” according to a specific definition without appreciating the ends to which the software freedom definition is a means.

    Anyway, it turns out that I did win something, the Award for the Advancement of Free Software , for my work on Guile over the years. My work on Guile has waxed and waned, and in these last few years of parenthood it has been rather the latter, but I am proud of some of the technical hacks; and it has been with a heart-warming, wondrous delight that I have been a spectator to the rise of Guix , a complete operating system built on Guile. Apart from its quite compelling technical contributions, I just love that Guix is a community of people working together to build a shared project. I am going to the Guix days in a month or so and in past years it has been such a pleasure to see so many people there, working to make possible another world.

    In my dream, instead of talking about Guile, I gave a rousing and compelling impromptu invective against Palantir and their ilk. I thought it quite articulate; I was asleep. In these waking hours, some days later, I don’t know what I did say, but I think I know what I would like to have said: that if we take the means of free software to be the ends, then we will find ourselves arguing our enemies are our friends. Saying that it’s OK if some software we build on is made by people who facilitate ICE raids. People who build spy software for controlling domestic populations. People who work for empire.

    What I would like to say is that free software is a strategy. As a community of people that share some kind of liberatory principles of which free software has been a part, let use free software as best we can, among many other strategies. If it fits, great. If you find yourself on the same side of an argument as Palantir, it’s time to back up and try something else.

    • Pl chevron_right

      Sam Thursfield: Status update, 17/12/2025

      news.movim.eu / PlanetGnome • 17 December

    Welcome to mid-December! Where I am this month is a pretty cold affair… at night it’s 2 or 3 degrees above freezing. Maybe you’re in a tropical place and the nights are 30 degrees warmer. Or maybe you’re somewhere that drops down to 20 or 30 below freezing. The world is a big place! (Or maybe you’re in one of those 10 remaining countries that use fahrenheit to measure temperature.. if so, I’m sorry for you ; -)

    I didn’t do much in the world of open source this month besides reviewing a few patches.

    I am still using GNOME and Fedora every day for my work… at zero cost! If I’d paid for Microsoft Windows I’d be down almost 200€. So I made a few one off donations split between:

    Thanks to Hari’s blog post for reminding us how important it is to donate.

    Who did I miss that is contributing to making excellent desktop software in difficult times?

    (I know that regular donations are more helpful … I have a few dozen of those already, listed here . The list can always change : -).


    • Pl chevron_right

      Matthew Garrett: How did IRC ping timeouts end up in a lawsuit?

      news.movim.eu / PlanetGnome • 17 December • 4 minutes

    I recently won a lawsuit against Roy and Rianne Schestowitz, the authors and publishers of the Techrights and Tuxmachines websites. The short version of events is that they were subject to an online harassment campaign, which they incorrectly blamed me for. They responded with a large number of defamatory online posts about me, which the judge described as unsubstantiated character assassination and consequently awarded me significant damages. That's not what this post is about, as such. It's about the sole meaningful claim made that tied me to the abuse.

    In the defendants' defence and counterclaim [1], 15.27 asserts in part The facts linking the Claimant to the sock puppet accounts include, on the IRC network: simultaneous dropped connections to the mjg59_ and elusive_woman accounts. This is so unlikely to be coincidental that the natural inference is that the same person posted under both names . "elusive_woman" here is an account linked to the harassment, and "mjg59_" is me. This is actually a surprisingly interesting claim to make, and it's worth going into in some more detail.

    The event in question occurred on the 28th of April, 2023 . You can see a line reading *elusive_woman has quit (Ping timeout: 2m30s) , followed by one reading *mjg59_ has quit (Ping timeout: 2m30s) . The timestamp listed for the first is 09:52, and for the second 09:53. Is that actually simultaneous? We can actually gain some more information - if you hover over the timestamp links on the right hand side you can see that the link is actually accurate to the second even if that's not displayed. The first event took place at 09:52:52, and the second at 09:53:03. That's 11 seconds apart, which is clearly not simultaneous, but maybe it's close enough. Figuring out more requires knowing what a "ping timeout" actually means here.

    The IRC server in question is running Ergo (link to source code ), and the relevant function is handleIdleTimeout() . The logic here is fairly simple - track the time since activity was last seen from the client. If that time is longer than DefaultIdleTimeout (which defaults to 90 seconds) and a ping hasn't been sent yet, send a ping to the client. If a ping has been sent and the timeout is greater than DefaultTotalTimeout (which defaults to 150 seconds), disconnect the client with a "Ping timeout" message. There's no special logic for handling the ping reply - a pong simply counts as any other client activity and resets the "last activity" value and timeout.

    What does this mean? Well, for a start, two clients running on the same system will only have simultaneous ping timeouts if their last activity was simultaneous. Let's imagine a machine with two clients, A and B. A sends a message at 02:22:59. B sends a message 2 seconds later, at 02:23:01. The idle timeout for A will fire at 02:24:29, and for B at 02:24:31. A ping is sent for A at 02:24:29 and is responded to immediately - the idle timeout for A is now reset to 02:25:59, 90 seconds later. The machine hosting A and B has its network cable pulled out at 02:24:30. The ping to B is sent at 02:24:31, but receives no reply. A minute later, at 02:25:31, B quits with a "Ping timeout" message. A ping is sent to A at 02:25:59, but receives no reply. A minute later, at 02:26:59, A quits with a "Ping timeout" message. Despite both clients having their network interrupted simultaneously, the ping timeouts occur 88 seconds apart.

    So, two clients disconnecting with ping timeouts 11 seconds apart is not incompatible with the network connection being interrupted simultaneously - depending on activity, simultaneous network interruption may result in disconnections up to 90 seconds apart. But another way of looking at this is that network interruptions may occur up to 90 seconds apart and generate simultaneous disconnections[2]. Without additional information it's impossible to determine which is the case.

    This already casts doubt over the assertion that the disconnection was simultaneous, but if this is unusual enough it's still potentially significant. Unfortunately for the Schestowitzes, even looking just at the elusive_woman account, there were several cases where elusive_woman and another user had a ping timeout within 90 seconds of each other - including one case where elusive_woman and schestowitz[TR] disconnect 40 seconds apart . By the Schestowitzes argument, it's also a natural inference that elusive_woman and schestowitz[TR] (one of Roy Schestowitz's accounts) are the same person.

    We didn't actually need to make this argument, though. In England it's necessary to file a witness statement describing the evidence that you're going to present in advance of the actual court hearing. Despite being warned of the consequences on multiple occasions the Schestowitzes never provided any witness statements, and as a result weren't allowed to provide any evidence in court, which made for a fairly foregone conclusion.

    [1] As well as defending themselves against my claim, the Schestowitzes made a counterclaim on the basis that I had engaged in a campaign of harassment against them. This counterclaim failed.

    [2] Client A and client B both send messages at 02:22:59. A falls off the network at 02:23:00, has a ping sent at 02:24:29, and has a ping timeout at 02:25:29. B falls off the network at 02:24:28, has a ping sent at 02:24:29, and has a ping timeout at 02:25:29. Simultaneous disconnects despite over a minute of difference in the network interruption.

    comment count unavailable comments
    • Pl chevron_right

      Gedit Technology blog: Mid-December News

      news.movim.eu / PlanetGnome • 17 December • 1 minute

    Misc news for the past month about the gedit text editor , mid-December edition! (Some sections are a bit technical).

    (By the way, the "mid-month" news is especially useful for December/January, when one thinks about it ;-) ).

    gedit now refuses to load very large files

    It was part of the common-bugs , and it is now fixed! New versions of gedit will refuse to load very large files or content read from stdin.

    The limit is configurable with the GSettings key: org.gnome.gedit.preferences.editor max-file-size

    By default the limit is set to 200 MB. The setting is not exposed in the Preferences dialog (there are a few other such settings).

    There are technically two cases:

    • First the file size - if available - is checked. If it exceeds the limit, the error is directly returned without trying to read the content.
    • Then the content is read and it is ensured that the maximum number of bytes is not reached. The check here is necessary for reading stdin, for which the file size doesn't exist. And even when the file size information is available, the double-check is necessary to avoid a potential TOC/TOU (time-of-check to time-of-use) problem .

    It is planned to improve this and offer to load the content truncated.

    Windows improvements

    I've fixed some compilation warnings and unit tests failures on MS Windows, and done some packaging work, including contributing to MINGW-packages (part of MSYS2 ).

    Other work in libgedit-gtksourceview

    Various work on the completion framework, including some code simplifications.

    Plus what can be called "gardening tasks": various code maintenance stuff.

    gspell CI for tarballs

    AsciiWolf and Jordan Petridis have contributed to gspell to add CI for tarballs. Thanks to them!

    • Pl chevron_right

      Bradley M. Kuhn: I Lived a Similar Trauma Rob Reiner's Family Faces & Shame on Trump

      news.movim.eu / PlanetGnome • 16 December • 3 minutes

    I posted the following on my Fediverse (via Mastodon) account . I'm reposting the whole seven posts here as written there, but I hope folks will take a look at that thread as folks are engaging in conversation over there that might be worth reading if what I have to say interests you. (The remainder of the post is the same that can be found in the Fediverse posts linked throughout.)

    I suppose Fediverse isn't the place people are discussing Rob Reiner. But after 36 hours of deliberating whether to say anything, I feel compelled. This thread will be long,but I start w/ most important part:

    It's an “open secret” in the FOSS community that in March 2017 my brother murdered our mother. About 3k ppl/year in USA have this experience, so it's a statistical reality that someone else in FOSS experienced similar. If so, you're welcome in my PMs to discuss if you need support… (1/7)

    … Traumatic loss due to murder is different than losing your grandparent/parent of age-related ailments (& is even different than losing a young person to a disease like cancer). The “a fellow family member did it” brings permanent surrealism to your daily life. Nothing good in your life that comes later is ever all that good. I know from direct experience this is what Rob Reiner's family now faces. It's chaos; it divides families forever: dysfunctional family takes on a new “expert” level… (2/7)

    …as one example: my family was immediately divided about punishment. Some of my mother's relatives wanted prosecution to seek death penalty. I knew that my brother was mentally ill enough that jail or prison *would* get him killed in a prison dispute eventually,so I met clandestinely w/my brother's public defender (during funeral planning!) to get him moved to a criminal mental health facility instead of a regular prison. If they read this, it'll first time my family will find out I did that… (3/7)

    …Trump's political rise (for me) links up: 5 weeks into Trump's 1ˢᵗ term, my brother murdered my mother. My (then 33yr-old) brother was severely mentally ill from birth — yet escalated to murder only then. IMO, it wasn't coincidence. My brother left voicemail approximately 5 hours before the murder stating his intent to murder & described an elaborate political delusion as the impetus. ∃ unintended & dangerous consequences of inflammatory political rhetoric on the mental ill!… (4/7)

    …I'm compelled to speak publicly — for first time ≈10 yrs after the murder — precisely b/c of Trump's response.

    Trump endorsed the idea that those who oppose him encourage their own murder from the mentally ill. Indeed, he said that those who oppose him are *themselves causing* mental illnesses in those around them, & that his political opponents should *expect* violence from their family members (who were apparently driven to mental illness from your opposition to Trump!)… (5/7)

    …Trump's actual words:

    Rob Reiner, tortured & struggling,but once…talented movie director & comedy star, has passed away, together w/ his wife…due to the anger he caused others through his massive, unyielding, & incurable affliction w/ a mind crippling disease known as TRUMP DERANGEMENT SYNDROME…He was known to have driven people CRAZY by his raging obsession of…Trump, w/ his obvious paranoia reaching new heights as [my] Administration surpassed all goals and expectations of greatness…

    (6/7)

    My family became ultra-pro-Trump after my mom's murder. My mom hated politics: she was annoyed *both* if I touted my social democratic politics & if my dad & his family stated their crypto-fascist views. Every death leaves a hole in a community's political fabric. 9+ years out, I'm ostracized from my family b/c I'm anti-Trump. Trump stated perhaps what my family felt but didn't say: those who don't support Trump are at fault when those who fail to support Trump are murdered. (7/7)

    [ Finally, I want to also quote this one reply I also posted in the same thread : I ask everyone, now that I've stated this public, that I *know* you're going to want to search the Internet for it, & you will find a lot. Please, please, keep in mind that the Police Department & others basically lied to the public about some of the facts of the case. I seriously considered suing them for it, but ultimately it wasn't worth my time. But, please everyone ask me if you are curious about any of the truth of the details of the crime & its aftermath …

    • Pl chevron_right

      Hari Rana: Please Fund My Continued Accessibility Work on GNOME!

      news.movim.eu / PlanetGnome • 16 December • 1 minute

    Hey, I have been under distress lately due to personal circumstances that are outside my control. I cannot find a permanent job that allows me to function, I am not eligible for government benefits, my grant proposals to work on free and open-source projects got rejected, paid internships are quite difficult to find, especially when many of them prioritize new contributors . Essentially, I have no stable, monthly income that allows me to sustain myself.

    Nowadays, I mostly volunteer to improve accessibility throughout GNOME apps, either by enhancing the user experience for people with disabilities, or enabling them to use them. I helped make most of GNOME Calendar accessible with a keyboard and screen reader , with additional ongoing effort involving merge requests !564 and !598 to make the month view accessible, all of which is an effort no company has ever contributed to, or would ever contribute to financially. These merge requests require literal thousands of hours for research, development, and testing, enough to sustain me for several years if I were employed.

    I would really appreciate any kinds of donations, especially ones that happen periodically to increase my monthly income. These donations will allow me to sustain myself while allowing me to work on accessibility throughout GNOME, essentially ‘crowdfunding’ development without doing it on the behalf of the GNOME Foundation or another organization.

    Donate on Liberapay

    Support on Ko-fi

    Sponsor on GitHub
    • Pl chevron_right

      Sebastian Wick: Flatpak Pre-Installation Approaches

      news.movim.eu / PlanetGnome • 13 December • 3 minutes

    Together with my then-colleague Kalev Lember, I recently added support for pre-installing Flatpak applications. It sounds fancy, but it is conceptually very simple: Flatpak reads configuration files from several directories to determine which applications should be pre-installed. It then installs any missing applications and removes any that are no longer supposed to be pre-installed (with some small caveats).

    For example, the following configuration tells Flatpak that the devel branch of the app org.test.Foo from remotes which serve the collection org.test.Collection , and the app org.test.Bar from any remote should be installed:

    [Flatpak Preinstall org.test.Foo]
    CollectionID=org.test.Collection
    Branch=devel
    
    [Flatpak Preinstall org.test.Bar]
    

    By dropping in another confiuration file with a higher priority, pre-installation of the app org.test.Foo can be disabled:

    [Flatpak Preinstall org.test.Foo]
    Install=false
    

    The installation procedure is the same as it is for the flatpak-install command. It supports installing from remotes and from side-load repositories, which is to say from a repository on a filesystem.

    This simplicity also means that system integrators are responsible for assembling all the parts into a functioning system, and that there are a number of choices that need to be made for installation and upgrades.

    The simplest way to approach this is to just ship a bunch of config files in /usr/share/flatpak/preinstall.d and config files for the remotes from which the apps are available. In the installation procedure, flatpak-preinstall is called and it will download the Flatpaks from the remotes over the network into /var/lib/flatpak . This works just fine, until someone needs one of those apps but doesn’t have a suitable network connection.

    The next way one could approach this is exactly the same way, but with a sideload repository on the installation medium which contains the apps that will get pre-installed. The flatpak-preinstall command needs to be pointed at this repository at install time, and the process which creates the installation medium needs to be adjusted to create this repository. The installation process now works without a network connection. System updates are usually downloaded over the network, just as new pre-installed applications will be.

    It is also possible to simply skip flatpak-preinstall , and use flatpak-install to create a Flatpak installation containing the pre-installed apps which get shipped on the installation medium. This installation can then be copied over from the installation medium to /var/lib/flatpak in the installation process. It unfortunately also makes the installation process less flexible because it becomes impossible to dynamically build the configuration.

    On modern, image-based operating systems, it might be tempting to just ship this Flatpak installation on the image because the flexibility is usually neither required nor wanted. This currently does not work for the simple reason that the default system installation is in /var/lib/flatpak , which is not in /usr which is the mount point of the image. If the default system installation was in the image, then it would be read-only because the image is read-only. This means we could not update or install anything new to the system installation. If we make it possible to have two different system installations — one in the image, and one in /var — then we could update and install new things, but the installation on the image would become useless over time because all the runtimes and apps will be in /var anyway as they get updated.

    All of those issues mean that even for image-based operating systems, pre-installation via a sideload repository is not a bad idea for now. It is however also not perfect. The kind of “pure” installation medium which is simply an image now contains a sideload repository. It also means that a factory reset functionality is not possible because the image does not contain the pre-installed apps.

    In the future, we will need to revisit these approaches to find a solution that works seamlessly with image-based operating systems and supports factory reset functionality. Until then, we can use the systems mentioned above to start rolling out pre-installed Flatpaks.