call_end

    • chevron_right

      Sophie Herold: GNOME in 2025: Some Numbers

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

    As some of you know, I like aggregating data. So here are some random numbers about GNOME in 2025. This post is not about making any point with the numbers I’m sharing. It’s just for fun.

    So, what is GNOME? In total, 6 692 516 lines of code. Of that, 1 611 526 are from apps. The remaining 5 080 990 are in libraries and other components, like the GNOME Shell. These numbers cover “the GNOME ecosystem,” that is, the combination of all Core, Development Tools, and Circle projects. This currently includes exactly 100 apps. We summarize everything that’s not an app under the name “components.”

    GNOME 48 was at least 90 % translated for 33 languages. In GNOME 49 this increased to 36 languages. That’s a record in the data that I have, going back to GNOME 3.36 in 2020. The languages besides American English are: Basque, Brazilian Portuguese, British English, Bulgarian, Catalan, Chinese (China), Czech, Danish, Dutch, Esperanto, French, Galician, Georgian, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Lithuanian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian (Latin), Slovak, Slovenian, Spanish, Swedish, Turkish, Uighur, and Ukrainian. There are 19 additional languages that are translated 50 % or more. So maybe you can help with translating GNOME to Belarusian, Catalan (Valencian), Chinese (Taiwan), Croatian, Finnish, Friulian, Icelandic, Japanese, Kazakh, Korean, Latvian, Malay, Nepali, Norwegian Bokmål, Occitan, Punjabi, Thai, Uzbek (Latin), or Vietnamese in 2026?

    Talking about languages. What programming languages are used in GNOME? Let’s look at GNOME Core apps first. Almost half of all apps are written in C. Note that for these data, we are counting TypeScript under JavaScript.

    C: 44.8%, Vala: 20.7%, Rust: 10.3%, Python: 6.9%, JavaScript: 13.8%, C++ 3.45%. Share of GNOME Core apps by programming language.

    The language distribution for GNOME Circle apps looks quite different with Rust (41.7 %), and Python (29.2 %) being the most popular languages.

    C: 6%, Vala, 13%, Rust 42%, Python 29%, JavaScript 10%, Crystal 1% Share of GNOME Circle apps by programming language.

    Overall, we can see that with C, JavaScript/TypeScript, Python, Rust, and Vala, there are five programming languages that are commonly used for app development within the GNOME ecosystem.

    But what about components within GNOME? The default language for libraries is still C. More than three-quarters of the lines of code for components are written in it. The components with the largest codebase are GTK (820 000), GLib (560 000), and Mutter (390 000).

    Lines of code for components within the GNOME ecosystem.

    But what about the remaining quarter? Line of code are of course a questionable metric. For Rust, close to 400 000 lines of code are actually bindings for libraries. The majority of this code is automatically generated. Similarly, 100 000 lines of Vala code are in the Vala repository itself. But there are important components within GNOME that are not written in C: Orca, our screen reader, boasts 110 000 lines of Python code. Half of GNOME Shell is written in JavaScript, adding 65 000 lines of JavaScript code. Librsvg and glycin are libraries written in Rust, that also provide bindings to other languages.

    We are slowly approaching the end of the show. Let’s take a look at the GNOME Circle apps most popular on Flathub. I don’t trust the installation statistics on Flathub, since I have seen indications that for some apps, the number of installations is surprisingly high and cyclic. My guess is that some Linux distribution is installing these apps regularly as part of their test pipeline. Therefore, we instead check how many people have installed the latest update for the app. Not a perfect number either, but something that looks much more reliable. The top five apps are: Blanket, Eyedropper, Newsflash, Fragments, and Shortwave. Sometimes, it needs less than 2 000 lines of code to create popular software.

    And there are 862 people supporting the GNOME Foundation with a recurring donation. Will you join them for 2026 on donate.gnome.org ?

    • chevron_right

      Joan Torres López: Remote Login Design

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

    GNOME 46 introduced remote login. This post explores the architecture primarily through diagrams and tables for a clearer understanding.

    Components overview


    There are 4 components involved: the remote client, the GRD dispatcher daemon, the GRD handover daemon and the GDM daemon:

    Component Type Responsibility
    Remote Client Remote User Connects remotely via RDP. Supports RDP Server Redirection method.
    Dispatcher GRD System-level daemon Handles initial connections, peeks routing token and orchestrates handovers.
    Handover GRD User-level daemon Runs inside sessions (Greeter or User). Provides remote access of the session to the remote client.
    GDM GDM System-level daemon Manages Displays and Sessions (Greeter or User).

    API Overview


    The components communicate with each other through dbus interfaces:

    Exposed by GDM

    org.gnome.DisplayManager.RemoteDisplayFactory

        • Method CreateRemoteDisplay
          Requests GDM to start a headless greeter. Accepts a RemoteId argument.

    org.gnome.DisplayManager.RemoteDisplay

      • Property RemoteId
        The unique ID generated by the Dispatcher.
      • Property SessionId
        The session ID of the created session wrapped by this display.

    Exposed by GRD Dispatcher

    org.gnome.RemoteDesktop.Dispatcher

      • Method RequestHandover
        Returns the object path of the Handover interface matching the caller’s session ID.

    org.gnome.RemoteDesktop.Handover

    Dynamically created. One for each remote session.

      • Method StartHandover
        Initiates the handover process. Receives one-time username/password, returns certificate and key used by dispatcher.
      • Method TakeClient
        Gives the file descriptor of the remote client’s connection to the caller.
      • Signal TakeClientReady
        Informs that a file descriptor is ready to be taken.
      • Signal RedirectClient
        Instructs the source session to redirect the remote client to the destination session.

    Flow Overview


    Flow phase 1: Initial connection to greeter session

    1. Connection:

      • Dispatcher receives a new connection from a Remote Client . Peeks the first bytes and doesn’t find a routing token. This means this is a new connection.

    2. Authentication:

      • Dispatcher authenticates the Remote Client using system level credentials.

    3. Session Request:

      • Dispatcher generates a unique remote_id (also known as routing token), and calls CreateRemoteDisplay() on GDM with this remote_id .

    4. Registration:

      • GDM starts a headless greeter session.
      • GDM exposes RemoteDisplay object with RemoteId and SessionId .
      • Dispatcher detects new object. Matches RemoteId . Creates Handover D-Bus interface for this SessionId .

    5. Handover Setup:

      • Handover is started in the headless greeter session.
      • Handover calls RequestHandover() to get its D-Bus object path with the Handover interface.
      • Handover calls StartHandover() with autogenerated one-time credentials. Gets from that call the certificate and key (to be used when Remote Client connects).

    6. Redirection (The “Handover”):

      • Dispatcher performs RDP Server Redirection sending the one-time credentials, routing token ( remote_id ) and certificate.
      • Remote Client disconnects and reconnects.
      • Dispatcher peeks bytes; finds valid routing token.
      • Dispatcher emits TakeClientReady on the Handover interface.

    7. Finalization:

      • Handover calls TakeClient() and gets the file descriptor of the Remote Client ‘s connection.
      • Remote Client is connected to the headless greeter session.

    Flow phase 2: Session transition (from greeter to user)

    1. Session Creation:

      • User authenticates.
      • GDM starts a headless user session.

    2. Registration:

      • GDM exposes a new RemoteDisplay with the same RemoteId and a new SessionId .
      • Dispatcher detects a RemoteId collision.
      • State Update: Dispatcher creates a new Handover D-Bus interface ( dst ) to be used by the New Handover in the headless user session.
      • The Existing Handover remains connected to its original Handover interface ( src ).

    3. Handover Setup:

      • New Handover is started in the headless user session.
      • New Handover calls RequestHandover() to obtain its D-Bus object path with the Handover interface.
      • New Handover calls StartHandover() with new one-time credentials and receives the certificate and key.

    4. Redirection Chain:

      • Dispatcher receives StartHandover() from dst .
      • Dispatcher emits RedirectClient on src (headless greeter session) with the new one-time credentials.
      • Existing Handover receives the signal and performs RDP Server Redirection.

    5. Reconnection:

      • Remote Client disconnects and reconnects.
      • Dispatcher peeks bytes and finds a valid routing token ( remote_id ).
      • Dispatcher resolves the remote_id to the destination Handover ( dst ).
      • Dispatcher emits TakeClientReady on dst .

    6. Finalization:

      • New Handover calls TakeClient() and receives the file descriptor of the Remote Client ‘s connection.
      • Remote Client is connected to the headless user session.

    Disclaimer

    Please note that while this post outlines the basic architectural structure and logic, it may not guarantee a 100% match with the actual implementation at any given time. The codebase is subject to ongoing refactoring and potential improvements.

    • chevron_right

      Asman Malika: Everybody Struggles

      news.movim.eu / PlanetGnome • 22 December 2025 • 2 minutes

    There’s a quiet assumption that once you’re accepted into a program, an internship, or a new opportunity, things are supposed to click. That confidence should come automatically. That the struggle somehow ends at the door.

    It doesn’t.

    Lately, my struggle has been feeling like I should already know more than I do.

    I’m an intern working with a large codebase that was unfamiliar at first. On the surface, everything looked final, I read the documentation, followed discussions, and tried to understand the flow. But when I began contributing, I realized that understanding a codebase and working inside it are two very different things. Functions referenced other functions I had not seen. Libraries behaved in ways I didn’t fully understand yet. I spent hours chasing what seemed like a simple issue, only to realize I misunderstood something basic.

    What makes this harder isn’t just the technical difficulty, it’s the voice in my head. The one that says, “Everyone else gets this faster.” The one that whispers, “You’re behind.” The one that asks, “What if I disappoint the people who believed in me?”

    That voice is convincing. Especially when you’re surrounded by smart people who ask sharp questions and navigate complex topics with ease. It’s easy to compare your confusion to their clarity and conclude that the problem is you.

    But here’s what I’m slowly learning: struggling is not a sign of failure. It’s a sign of being in the right place. Every time I get stuck, I’m forced to read more carefully. Every time I ask a question, I learn something I wouldn’t have learned alone. Every mistake shows me how the system actually works, not how I assumed it worked. The struggle is uncomfortable, yes, but it’s also doing real work on me.

    I’m also learning the difference between struggling silently and struggling with support. When I finally ask for help, the response is rarely judgment. More often, it’s reassurance: “Yeah, that part is confusing.” Or, “I struggled with that too.” Moments like that remind me that nobody arrives fully formed.

    Everybody struggles. Even the people who look confident. Even the people whose code you admire. The difference isn’t who struggles and who doesn’t, it’s who keeps going despite it.

    So if you’re in a place where things feel hard, where progress feels slow, where doubt shows up uninvited: you’re not alone. This is part of learning. This is part of growing. And this, too, counts as progress.

    • chevron_right

      Jussi Pakkanen: An uncomfortable but necessary discussion about the Debian bug tracker

      news.movim.eu / PlanetGnome • 22 December 2025 • 4 minutes

    Note: this post represents my personal opinions as a Debian maintainer of a single package (Meson). It is not my intention to throw anyone involved in the service under a bus, but some things about it are not good and need to be spoken aloud (in my opinion anyway, other people may disagree and that is fine).

    There was a post called Configuring a mail transfert [sic] agent to interact with the Debian bug tracker on Planet Debian. It contained the following statement:

    using an email client to create or modify bug reports is not a bad idea per se

    Indeed it is not. However, using an email client as the only way of modifying bugs (which is how the Debian bug tracker works) is not only a bad idea, it is terrible idea . To me managing bugs is so awful that it is actively pushing me away from contributing to Debian . The bug statuses on Meson are not kept up to date because I prefer that to having to deal with the bug tracker. I suspect I am not alone in this. In any case it is a major hurdle for new developers and might even cause some people to drop out entirely [1].

    Why is it like this?

    The Debian bug tracker was originally implemented in 1993 or thereabouts. Pretty much everything IT related was different back then. Manipulating things via email actually made sense at the time. Sadly, the world changed completely but volunteers working on the bug tracker did not have the resources to update it [2]. The end result is a classical legacy system: one that works and does the thing it needs to  do but which no new developer wants to touch.

    Notable updates to the system would require major resources, which the project does not have.

    FWICT there have been attempts to migrate the tracker to e.g. Bugzilla or Gitlab, but none of those has come even close to succeeding.

    Why is the UX bad?

    There is no web UI for manipulating bug data. Instead you write an email in a custom format , send that to a specific email address and wait for things to happen.

    The main problem here is not the format as such, it is the fact that the user has to do the work of the computer :

    • Every time you need to manipulate bugs, you need to open the documentation page to remind yourself what the actual syntax is. A program would get it right automatically every time.
    • Get it wrong? Sucks to be you. A program would get it right automatically every time.
    • Send it to the wrong email address? Sucks to be you. And the person whose bug you just altered. A computer program would get it right automatically every time.
    • And so on.

    I suspect most Debian developers who spend a lot of time on this have written their own custom scripts for their use cases. But having hundreds of ersatz tools for common tasks seems suboptimal.

    As an extra cherry on the cake, the bug tracker will send you an email every! single! time! you edit or comment on any bug. Not only does the service waste your time by forcing you to write syntactically correct batch processing commands by hand, it also wastes it by forcing you to keep deleting spam [3].

    How does security on the system work?

    It doesn't. The email interface is 100% open. Anyone can edit any bug in any way just by sending a suitably crafted email to the control address [3]. If a 4chan script kiddie would want to screw up the entire Debian bug repository, they could do so fairly easily.

    There is an actual term for this approach: security through obscurity . The fact that the main bug tracker of the OS that runs the world does not have strict authentication in place does not fill me with warm fuzzies.

    What would be a way forward?

    A one-shot conversion to a different bug tracker is out of the question. Instead the situation could be improved incrementally, for example:

    1. Create a new web service that parses the existing bug data and displays it in a "rich" format.
    2. Update the UI so that registered users can change the state of the bug (close, duplicate, etc).
    3. Make the UI send a suitably formatted control email to the backend.
    4. Bless the new web service as an official way of editing bugs (hosted under debian.org and all that)
    5. Edit the backend service so it only accepts emails from the web UI and registered Debian developers and maintainers
    6. Change the backend to something else or improve it for the new UI [optional].
    Steps 1 to 3 can be done by a single person or a small team. Since you (probably) don't have access to the backend service, you need to parse the bug state from the current tracker's status page ( example here ). That is a bit gnarly, but should be doable. If someone is looking for a personal project for the holiday season, this is something to consider.

    Steps 4 to 6 would take months or years of full time work. Given that this approach was first suggested almost exactly 25 years ago , it is unlikely that resources for it would materialize out of thin air any time soon.

    [1] My speculation.

    [2] Also my speculation.

    [3] You could use email filtering rules but that is again extra work for every user. A better option is not spamming (one thank-you email for new contributors is fine, more than that is not).

    [4] Last time I checked at least. I have personally manipulated all sorts of bugs via email even before I was a Debian maintainer. No registration. No checks. Not even GPG signing.

    • chevron_right

      Marcus Lundblad: Xmas & New Year's Maps

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


    It's that time of year again in (Norther Hemisphere) winter when year's drawing to an end. Which means it's time for the traditional Christmas Maps blogpost.

    Sometimes you hear claims about Santa Claus living at the North Pole (though in Rovaniemi, Finland, I bet they would disagree…). Turns out there's a North Pole near Fairbanks, Alaska as well:


    😄

    OK, enough smalltalk… now on to what's happened since the last update (for the GNOME 49 release in September).

    Sidebar Redesign

    Our old design when it comes to showing information about places has revolved around the trusted old “popover” menu design which has served us pretty well. But it also had it's drawbacks.

    For one it was never a good fit on small screen sizes (such as on phones). Therefore we had our own “home-made” place bar design with a separate dialog opening up when clicking the bar to reveal full details.

    After some discussions and thinking about this, I decided to try out a new approach utilizing the MultiLayout component from libadwaita which gives the option to get an adaptive “auxillary view” widget which works as a sidebar on desktop, and a bottom sheet on mobile.

    Now the routeplanner and place information views have both been consolidated to both reside in this new widget.

    Clicking the route button will now open the sidebar showing the routeplanner, or the bottom sheet depending on the mode.

    And clicking a place icon on the map, or selecting a search result will open the place information, also showing in the sidebar, or bottom sheet.

    multiview-route-planner-sidebar.png
    Route planner showing in sidebar in desktop mode

    multiview-route-planner-bottom-sheet.png
    Routeplanner showing in bottom sheet in mobile/narrow mode

    multiview-route-planner-bottom-sheet-plan.png
    Routeplanner showing public transit itineraries in bottom sheet

    multiview-placeview-sidebar.png
    Showing place information in sidebar in desktop mode

    multiview-placeview-bottom-sheet.png
    Showing place information in bottom sheet in mobile mode

    Redesigning Public Transit Itinerary Rendering

    The displaying of public transit itineraries has also seen some overhaul.

    First I did a bit of redesign of the rows representing journey legs, taking some queues from the Adwaita ExpanderRow style. Improving a bit compared to the old style which had been carried over from GTK 3.

    transit-itinerary-redesign.png
    List of journey legs, with the arrow indicating possibilty to expand to reveal more information

    transit-itinerary-redesign-expanded.png

    List of journey legs, with one leg “expanded” to show intermediate stops made by a train

    Improving further on this Jalen Ng contributed a merge request implementing an improvement to the overview list utilizing Adwaita WrapBoxes to show more complete information the different steps of each presented itinerary option in the overview when searching for travel options with public transit.

    transit-plan-wrapbox.png
    Showing list of transit itineraries each consisting of multiple journey legs

    Jalen also started a redesign of rendering of itineraries (this merge request is still being worked on).

    redesign-transit-itinerary.png
    Redesign of transit itinerary display. Showing each leg as a “track segment“ using the line's color

    Hide Your Location

    We also added the option to hide the marker showing your own location. One use for this e.g. if you want to make screenshots without revealing your exact location.

    show-location-setting-menuitem.png
    Menu to toggle showing your location marker

    And that's not All…

    On top of this some other things. James Westman added support global-state expressions to libshumate's vector tile implementation. This should allow us to e.g. refactor the implementation of light and dark styles and language support in our map style without “recompiling”  the stylesheet at runtime.

    James also fixed a bug sometimes causing the application to freeze when dragging the window between screens when a route is being displayed.

    This fix has been backported to the 49.3 and 48.8 releases which has been tagged today as an early holiday gift.

    And that's all for now, merry holidays, and  happy new year!

    • chevron_right

      Aryan Kaushik: Introducing Open Forms

      news.movim.eu / PlanetGnome • 21 December 2025 • 2 minutes

    Introducing Open Forms!

    The problem

    Ever been to a conference where you set up a booth or attempt to get quick feedback by running around the ground and felt the awesome feeling of -

    • Captive portal logout
    • Timeouts
    • Flaky Wi-Fi drivers on Linux devices
    • Poor bandwidth or dead zones
    • Do I need to continue?

    Meme showcasing wifi fails when using forms

    While setting up the Ubuntu booth, we saw an issue: The Wifi on the Linux tablet was not working.

    After lots of effort, it started to work, but as soon as we log into the captive portal, the chip fails, and no Wi-Fi is detected. And the solution? A trusty old restart, just for the cycle to repeat. (Just to be clear, the wifi was great, but it didn't like that device)

    Meme showing a person giving their a child a book on 'Wifi drivers on linux' as something to cry about

    We eventually fixed that by providing a hotspot from mobile, but that locked the phone to the booth, or else it would disconnect.

    Now, it may seem a one-off inconvenience, but at any conference, summit, or event, this pattern can be seen where one of the issues listed listed above occurs repeatedly.

    So, I thought, there might be something to fix this. But no project existed without being reliant on Web :(

    The solution

    So, I built one, a native, local first, open source and non-answer-peeking form application.

    With Open Forms, your data stays on your device, works without a network, and never depends on external services. This makes it reliable in chaotic, un-reliable, or privacy first environments.

    Just provide it a JSON config (Yes, I know, trying to provide a GUI for it instead), select the CSV location and start collecting form inputs.

    Open Forms opening page

    No waiting for WiFi, no unnecessary battery drains, no timeouts, just simple open forms.

    The application is pretty new (built over the weekend) and supports -

    • Taking input via Entry, Checkbox, Radio, Date, Spinner (Int range)
    • Outputs submissions to a CSV
    • Can mark fields to be required before submissions
    • Add images, headings, and CSS styling
    • Multi-tabbed to open more than one form at a time.

    Open Forms inputs Open Forms inputs continued

    Planned features

    • Creating form configs directly from the GUI
    • A11y improvements (Yes, Federico, I swear I will improve that)
    • Hosting on Flathub (would love guidance regarding it)

    But, any software can be guided properly only by its users! So, If you’ve ever run into Wi-Fi issues while collecting data at events, I’d love for you to try Open Forms and share feedback, feature requests, bug reports, or even complaints.

    The repository is at - Open Forms GitHub The latest release is packaged as a flatpak.

    • chevron_right

      Engagement Blog: GUADEC 2026 will be held in A Coruña, Spain

      news.movim.eu / PlanetGnome • 20 December 2025

    We are happy to announce that GUADEC 2026 will take place in A Coruña, Spain, from July 16th to 21st, 2026 .
    As in recent years, the conference will be organized as a hybrid event, giving participants the opportunity to join either in person or online.

    The first three days, July 16th–18th, will be dedicated to talks, followed by BoF and workshop sessions on July 19th and 20th. The final day, July 21st, will be a self-organized free exploration day.

    While the GUADEC team will share ideas and suggestions for this day, there will be no officially organized activities . The c all for proposals and registration will open soon, and further updates will be shared on guadec.org in the coming weeks.

    Organizations interested in sponsoring GUADEC 2026 are welcome to contact us at guadec@gnome.org .

    About the city:
    Hosted on Spain’s Atlantic coast, A Coruña offers a memorable setting for the conference, from the iconic Tower of Hercules , the world’s oldest Roman lighthouse still in use, to one of Europe’s longest seaside promenades and the city’s famous glass-fronted balconies that give it the nickname “City of Glass.”

    • chevron_right

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

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

    • chevron_right

      This Week in GNOME: #229 Good Rhythm

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