call_end

    • chevron_right

      Andy Wingo: in which our protagonist dreams of laurels

      news.movim.eu / PlanetGnome • 17 December 2025 • 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.

    • chevron_right

      Sam Thursfield: Status update, 17/12/2025

      news.movim.eu / PlanetGnome • 17 December 2025

    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 : -).


    • chevron_right

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

      news.movim.eu / PlanetGnome • 17 December 2025 • 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
    • chevron_right

      Gedit Technology blog: Mid-December News

      news.movim.eu / PlanetGnome • 17 December 2025 • 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!

    • chevron_right

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

      news.movim.eu / PlanetGnome • 16 December 2025 • 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 …

    • chevron_right

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

      news.movim.eu / PlanetGnome • 16 December 2025 • 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
    • chevron_right

      Sebastian Wick: Flatpak Pre-Installation Approaches

      news.movim.eu / PlanetGnome • 13 December 2025 • 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.

    • chevron_right

      Asman Malika: My Outreachy Journey: From curiosity to contribution

      news.movim.eu / PlanetGnome • 9 December 2025 • 3 minutes

    Hello! I’m Asman Malika, and I still can’t quite believe I’m writing this as an Outreachy intern.

    I’m working on the GNOME project: Improving document signing in GNOME Document Viewer (Papers), focusing on adding both manual and digital signing features, and improving the user interface, through a smoother signing experience.

    Before I could even imagine working on a project like GNOME Papers, I was exploring a new side of software development. Just 19 months ago, I barely knew anything about coding. No degree, no bootcamp. Just curiosity, determination, and the urge to prove to myself that I belonged in tech.

    Today, I work with Rust, Go, JavaScript, C, React and I contribute to open-source projects. But the road to this point? Let’s just say it wasn’t straight.

    The struggles that led me here

    I’ve applied to opportunities before, and been rejected. Sometimes because of my identity. Sometimes because I didn’t have enough experience or a formal degree. Every rejection whispered the same doubt: maybe I wasn’t ready yet.

    But each rejection also pushed me to look for a space where effort, curiosity, and willingness to learn mattered more than credentials on paper. And then I found Outreachy. The moment I read about the program, it clicked: this was a place built for people like me.

    Why Outreachy felt different

    I didn’t just apply because I wanted an internship. I applied because I wanted to contribute meaningfully to real-world projects. After months of learning, experimenting, and self-teaching, I wanted to show that persistence counts,  that your journey doesn’t need to follow a traditional path to matter.

    The community aspect drew me in even more. Reading about past interns who started exactly where I was gave me hope. Every line of code I wrote during the application period felt like a building block towards improving myself. And the support from mentors and the wider community? I truly appreciate every bit of it.

    The contribution phase: chaos, learning, and late nights

    The contribution period tested my patience and resilience. Imagine this: working a full-time job (where I was still learning software development skills) during the day, then switching gears at night to contribute to Outreachy projects.

    Most of my real contribution time came late at night, fueled by curiosity, determination, and maybe a little too much coffee. I had to adapt and learn quickly from understanding unfamiliar project structures, to reading documentation, asking questions (which was terrifying at first), and sometimes struggling more than I expected.

    Some tasks took hours longer than anticipated. Some pull requests needed multiple revisions. Some nights, imposter syndrome kicked in.

    But every challenge taught me something meaningful. I learned how open-source communities operate: writing clean code, submitting patches, communicating clearly, and staying consistent. The biggest surprise? Collaborating in public. At first, it felt intimidating, every question, every mistake visible to everyone. But gradually, it became empowering. Asking for help isn’t weakness; it’s how real developers grow.

    Contributions I’m proud of

    I fixed bugs. Improved documentation. Implemented and tested features. Helped refine workflows.

    But here’s the truth: the real achievement wasn’t the list of tasks, it was consistency, I showed up when it was hard. I learned to work efficiently in a community, and contributed in ways that genuinely helped me grow as a developer.

    Even small contributions taught me big lessons. Each merged pull request felt like a win. Each piece of mentor feedback felt like progress. Every late night debugging was worth it because I was building something real.

    What I hope to gain

    I want to deepen my technical skills, learn best practices from my mentors, and make contributions that truly matter. I also hope to grow my confidence in open-source collaboration and continue growing a software developer.

    Throughout this journey, I want to document my progress and share my experiences with the community, reflecting on what I learn and hopefully inspire others along the way.

    • chevron_right

      Michael Catanzaro: Significant Drag and Drop Vulnerability in WebKitGTK

      news.movim.eu / PlanetGnome • 9 December 2025

    WebKitGTK 2.50.3 contains a workaround for CVE-2025-13947 , an issue that allows websites to exfiltrate files from your filesystem. If you’re using Epiphany or any other web browser based on WebKitGTK, then you should immediately update to 2.50.3.

    Websites may attach file URLs to drag sources. When the drag source is dropped onto a drop target, the website can read the file data for its chosen files, without any restrictions. Oops. Suffice to say, this is not how drag and drop is supposed to work. Websites should not be able to choose for themselves which files to read from your filesystem; only the user is supposed to be able to make that choice, by dragging the file from an external application . That is, drag sources created by websites should not receive file access.

    I failed to find the correct way to fix this bug in the two afternoons I allowed myself to work on this issue, so instead my overly-broad solution was to disable file access for all drags . With this workaround, the website will only receive the list of file URLs rather than the file contents.

    Apple platforms are not affected by this issue.