call_end

    • chevron_right

      Jussi Pakkanen: Iterators and adaptors

      news.movim.eu / PlanetGnome • 25 May

    Previously it was mentioned that Python and C++ do iteration quite differently. Python has "statefull" objects that have a .next() method that returns a new object or throws a StopIteration exception. Incidentally Rust does exactly the same thing, except that it uses an optional type rather than an exception. C++ does not work like this, instead it has a concept of a "start" and "end" of a sequence and the machinery keeps incrementing the start until it reaches the end.

    At the end of last post it was said that it is difficult to integrate an object of the former type with C++'s native language facilities, at least without macros.

    Now we'll look how to integrate an object of the former type with C++'s native language facilities without any macros.

    In fact, it only took fewer than 30 lines of code to do. The caveat being that it is probably fairly easy to break it. But it works for me.

    Here it is being used.

    There is also a second, similar helper class that takes ownership of the object being iterated over.

    • chevron_right

      Alireza Shabani: We Started a Podcast for This Week in GNOME (in Farsi)

      news.movim.eu / PlanetGnome • 25 May

    Hi, we’ve started a new project: a Farsi-language podcast version of This Week in GNOME .

    Each week, we read and summarise the latest TWIG post in Farsi, covering updates from GNOME Core , GNOME Circle apps , and other community-related news. Our goal is to help Persian-speaking users and contributors stay connected with the GNOME ecosystem.

    The podcast is hosted by me (Revisto), along with Mirsobhan and Hadi . We release one short episode per week.

    Since I also make music , I created a short theme for the podcast to give it more identity and consistency across episodes. It’s simple, but it adds a nice touch of production value that we hope makes the podcast feel more polished.

    We’re also keeping a GitHub repository in which I’m uploading each of my episode scripts (in Farsi) in Markdown + audio files. The logo and banner assets have been uploaded in SVG as well for transparency.

    Partial screenshot of 201st script of TWIG podcast in Obsidian in Farsi, written in markdown.

    You can listen to the podcast on:

    Let us know what you think, and feel free to share it with Farsi-speaking friends or communities interested in GNOME.

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /alirezash/2025/05/25/we-started-a-podcast-for-this-week-in-gnome-in-farsi/

    • chevron_right

      Steven Deobald: 2025-05-23 Foundation Report

      news.movim.eu / PlanetGnome • 24 May • 6 minutes

    Welcome to the third instalment of the Foundation Report! Instalment? Installment? English is dumb. Okay, here goes!

    ## Opaque Stuff

    • 3rd party consultation on safety issue continues
    • researching some software choices for process automation
    • asking individuals about their goals – no name-dropping because I’m not sure everyone would be comfortable
    • international finance is the worst but the problem is fixed now

    ## Meeting People

    I’m meeting fewer people and getting more grunt work accomplished but I still met plenty of lovely folks this week. I also met some people after last week’s report: Jef Spaleta is the Fedora Project’s new Lead. He and I agreed all new business deals will be done in the curling rink instead of the golf course. Matthias Clausen gave me a bit of a history lesson and also convinced me I need to talk to more old-timers: the sense of perspective decades of involvement brings is valuable.

    I met Tobias and chatted about how the Foundation can increase support to contributors. Rosanna introduced me to our bookkeeper and her advisor so I could get an intro to our bookkeeping process and a walk-through of our last CPA review. Maria and I had a lovely chat about her 20+ years as a GNOME user/contributor and the value of logistics, communications, and admin folks in a very tech-heavy organization… I found myself nodding along with so much she had to say.

    I got a chance to meet Aaditya from GNOME Nepal! What he and his team are doing there is after my own heart: getting GNOME, Linux, and other freie software into the hands of aspiring hackers and students. He’s essentially already running the style of repair cafe that the endof10.org campaign will teach people to run and I sincerely hope he’ll have time to help with End Of 10 (but he’s a busy guy!) as I think he has so much to offer. I was shocked to learn that GNOME Nepal is only one year old. They’ve already accomplished so much.

    Rosanna and I met the CommitChange team, who help us with gnome.org/donate . They have some neat stuff going on and they explained where they can help us with tweaks to their software and API, analytics, and campaign management. We’re hoping to do something with CommitChange very soon but I won’t say what until it’s baked because it’s not my baby. 🙂

    Last, we met a couple great folks who are interested in helping out in the Treasurer role at the Foundation. If you know anyone who’s a spreadsheet powerhouse, the Tufte of Reporting, or obsessed with carefully-balanced budgets, please encourage them to email me or Rob!

    ## Ideas, Docs, Walls, Files

    I’ve started to corral my scatterbrained ideas into some homes. They’re still spread out between paper notebooks, Markdown files, voicenotes, and my extremely frazzled family members. I’ll probably stop telling them about all the cool people I’m meeting and all the ideas I have by … GUADEC? Maybe. 😉

    We’ve started an internal “Foundation Handbook” to match handbook.gnome.org . This is only visible to Staff and Board members, as it contains a great deal of PII and other private information. It has a loooong way to go, but the goal is for it to provide the same beautiful, central documentation location (for banking, staff tools, ops, and so on) that the Project Handbook does. Public information about the Foundation won’t go in here, of course, as it still belongs on foundation.html . If you join the Board, you’re welcome to help us keep it clean and organized so we easily know where everything is and so it’s easy to onboard future Boards, EDs, and other Staff. (No, I’m not planning to leave anytime soon.)

    We’ve rebooted the Staff project wall. We don’t keep track of Ops tasks in here (since they’re recurring) but, rather, anything Executive: Follow up with so-and-so, document XYZ process, make a one-time social media post for an organizational partner, etc. We’re also making heavier use of the Board wall, bit by bit.

    Nextcloud! We’re… trying to use it. Collecting all our files into Nextcloud will take some time, but we’ve started to push toward using it with some boring old policy junk. We just have to keep up the gardening and it will become a thing of beauty, eventually.

    ## Fundraising

    We’ve talked a little about fundraising with the Board (I’m still relatively new) but as the smaller fires are each extinguished, fundraising is taking up more headspace. This is a major concern for me. Perhaps the major concern. The conversation with CommitChange yesterday was one small step toward this. We’ve also started some “market research.” (I’m not sure what else to call it.) When it comes to individuals and organizations that have never donated to GNOME before, I want to know:

    • Do they understand how important GNOME is, as infrastructure?
    • Where do we find them to ask them to donate? (If not within GNOME itself.)
    • Do they want anything for their donation? Or do we just need to reach them?

    ## End of 10

    Joseph from endof10.org and KDE Eco fame has been in touch continuously. Sri posted a call for a GNOME endof10.org Promo Team on the Engagement blog. It’s going to be here before you know it! If you want to get involved, ping us in #engagement:gnome.org or #endof10-en:kde.org .

    If you don’t know what I’m talking about, go watch Joseph’s Linux App Summit talk ! It’s great and he does a fantastic job of explaining the importance of this effort.

    ## “Wow, yay, transparency”

    I’m very grateful to everyone who has thanked me for these little Foundation Reports. I’m glad I’m not just screaming into the void with these and that a few people are getting value out of them. However, I do have one request.

    On occasion (though rarely), these compliments have come paired with (or couched in) a complaint about previous EDs, other folks on staff, or the Board. I would encourage folks who are framing things this way to stop, as it’s a very unhelpful way to communicate. We need to remember that everyone works differently. I’m a loudmouth, so I’m loud. Most people on staff and on the Board are not. Instead, they have their nose to the grindstone. I think most of them struggle to find the time to talk about their work at the end of the workweek. Most of them work late into the night. Most of them work weekends. It’s been a long year (or…five?) for the Foundation and most of them are very tired.

    Because I am loud, I will do my best to be loud for them. Week after week, I’ll talk more about what “we” are doing — please understand that “we” is mostly them . If I tell you about work that’s happening at the Foundation, that work didn’t magically start when I joined in May. It’s been happening for years and I’m just doing my best to make it a little more visible.

    Instead of thanking me for my ridiculous infoblog, please redirect your thanks to someone on staff. Thank someone on the Board for their tireless service. Thank a contributor whose work comes pouring in, year after year. Send a box of chocolates in a DM. Drop them a little thank-you email. Give them a high-five at GUADEC. (Virtual or otherwise.)

    And if you’re feeling very energetic, run for the Board so you can help out. ❤

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /steven/2025/05/24/2025-05-23-foundation-report/

    • chevron_right

      Christian Hergert: Sysprof in your Mesa

      news.movim.eu / PlanetGnome • 23 May

    Thanks to the work of Christian Gmeiner , support for annotating time regions using Sysprof marks has landed in Mesa.

    That means you’ll be able to open captures with Sysprof and see the data along other useful information including callgraphs and flamegraphs.

    I do think there is a lot more we can do around better visualizations in Sysprof. If that is something you’re interested in working on please stop by #gnome-hackers on Libera.chat or drop me an email and I can find things for you to work on.

    See the merge request here .

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /chergert/2025/05/23/sysprof-in-your-mesa/

    • chevron_right

      Hans de Goede: IPU6 cameras with ov02c10 / ov02e10 now supported in Fedora

      news.movim.eu / PlanetGnome • 23 May • 1 minute

    I'm happy to share that 3 major IPU6 camera related kernel changes from linux-next have been backported to Fedora and have been available for about a week now the Fedora kernel-6.14.6-300.fc42 (or later) package:

    1. Support for the OV02C10 camera sensor , this should e.g. enable the camera to work out of the box on all Dell XPS 9x40 models.
    2. Support for the OV02E10 camera sensor , this should e.g. enable the camera to work out of the box on Dell Precision 5690 laptops. When combined with item 3. below and the USBIO drivers from rpmfusion this should also e.g. enable the camera on other laptop models like e.g. the Dell Latitude 7450.
    3. Support for the special handshake GPIO used to turn on the sensor and allow sensor i2c-access on various new laptop models using the Lattice MIPI aggregator FPGA / USBIO chip.

    If you want to give this a test using the libcamera-softwareISP FOSS stack, run the following commands:

    sudo rm -f /etc/modprobe.d/ipu6-driver-select.conf
    sudo dnf update 'kernel*'
    sudo dnf install libcamera-qcam
    reboot
    qcam

    Note the colors being washed out and/or the image possibly being a bit over or under exposed is expected behavior ATM, this is due to the software ISP needing more work to improve the image quality. If your camera still does not work after these changes and you've not filed a bug for this camera already please file a bug following these instructions .

    See my previous blogpost on how to also test Intel's proprietary stack from rpmfusion if you also have that installed.

    comment count unavailable comments
    • chevron_right

      Hans de Goede: IPU6 FOSS and proprietary stack co-existence

      news.movim.eu / PlanetGnome • 23 May • 2 minutes

    Since the set of rpmfusion intel-ipu6-kmod + ipu6-camera-* package updates from last February the FOSS libcamera-softwareISP and Intel's proprietary stack using the Intel hardware ISP can now co-exist on Fedora systems, sharing the mainline IPU6-CSI2 receiver driver.

    Because of this it is no longer necessary to blacklist the kernel-modules from the other stack. Unfortunately when the rpmfusion packages first generated "/etc/modprobe.d/ipu6-driver-select.conf" for blacklisting this file was not marked as "%ghost" in the specfile and now with the February ipu6-camera-hal the file has been removed from the package. This means that if you've jumped from an old ipu6-camera-hal where the file was not marked as "%ghost directly to the latest you may still have the modprobe.d conf file around causing issues. To fix this run:

    sudo rm -f /etc/modprobe.d/ipu6-driver-select.conf

    and then reboot. I'll also add this as post-install script to the ipu6-camera-hal packages, to fix systems being broken because of this.

    If you want the rpmfusion packages because your system needs the USBIO drivers, but you do not want the proprietary stack, you can run the following command to disable the proprietary stack:

    sudo ipu6-driver-select foss

    Or if you have disabled the prorietary stack in the past and want to give it a try, run:

    sudo ipu6-driver-select proprietary

    To test switching between the 2 stacks in Firefox go to Mozilla's webrtc test page and click on the "Camera" button, you should now get a camera permisson dialog with 2 cameras: "Built in Front Camera" and "Intel MIPI Camera (V4L2)" the "Built in Front Camera" is the FOSS stack and the "Intel MIPI Camera (V4L2)" is the proprietary stack. Note the FOSS stack will show a strongly zoomed in (cropped) image, this is caused by the GUM test-page, in e.g. google-meet this will not be the case.

    Unfortunately switching between the 2 cameras in jitsi does not work well. The jitsi camera selector tries to show a preview of both cameras at the same time and while one stack is streaming the other stack cannot access the camera. You should be able to switch by: 1. Selecting the camera you want 2. Closing the jitsi tab 3. wait a few seconds for the camera to stop streaming 4. open jitsi in a new tab.

    Note I already mentioned most of this in my previous blog post but it was a bit buried there.

    comment count unavailable comments
    • chevron_right

      Sam Thursfield: Status update, 22/05/2025

      news.movim.eu / PlanetGnome • 22 May • 3 minutes

    Hello. It is May, my favourite month. I’m in Manchester, mainly as I’m moving projects at work, and its useful to do that face-to-face.

    For the last 2 and a half years, my job has mostly involved a huge, old application inside a big company, which I can’t tell you anything about. I learned a lot about how to tackle really, really big software problems where nobody can tell you how the system works and nobody can clearly describe the problem they want you to solve. It was the first time in a long time that I worked on production infrastructure, in that, we could have caused major outages if we rolled out bad changes. Our team didn’t cause any major outages in all that time. I will take that as a sign of success. (There’s still plenty of legacy application to decommission, but it’s no longer my problem).

    During that project I tried to make time to work on end to end testing of GNOME using openQA as well… with some success, in the sense that GNOME OS still has working openQA tests, but I didn’t do very well at making improvements , and I still don’t know if or when I’ll ever have time to look further at end-to-end testing for graphical desktops. We did a great Outreachy internship at least with Tanju and Dorothy adding quite a few new tests.

    Several distros test GNOME downstream, but we still don’t have much of a story of how they could collaborate upstream. We do still have the monthly Linux QA call so we have a space to coordinate work in that area… but we need people who can do the work.

    My job now, for the moment, involves a Linux-based operating system that is intended to be used in safety-critical contexts. I know a bit about operating systems and not much about functional safety. I have seen enough to know there is nothing magic about a “safety certificate” — it represents some thinking about risks and how to detect and mitigate them. I know Codethink is doing some original thinking in this area . It’s interesting to join in and learn about what we did so far and where it’s all going.

    Giving credit to people

    The new GNOME website , which I really like, describes the project as “An independent computing platform for everyone”.

    There is something political about that statement: it’s implying that we should work towards equal access to computer technology. Something which is not currently very equal. Writing software isn’t going to solve that on its own, but it feels like a necessary part of the puzzle.

    If I was writing a more literal tagline for the GNOME project, I might write: “A largely anarchic group maintaining complex software used by millions of people, often for little or no money.” I suppose that describes many open source projects.

    Something that always bugs me is how a lot of this work is invisible. That’s a problem everywhere: from big companies and governments, down to families and local community groups, there’s usually somebody who does more work than they get credit for.

    But we can work to give credit where credit is due. And recently several people have done that!

    Outgoing ED Richard Littauer in “So Long and Thanks For All the Fish” shouted out a load of people who work hard in the GNOME Foundation to make stuff work.

    Then incoming GNOME ED, Steven Deobald wrote a very detailed “2025-05-09 Foundation Report” (well done for using the correct date format, as well), giving you some idea about how much time it takes to onboard a new director, and how many people are involved.

    And then Georges wrote about some people working hard on accessibility in “In celebration of accessibility” .

    Giving credit is important and helpful. In fact, that’s just given me an idea, but explaining that will have to wait til next month.

    • chevron_right

      Andy Wingo: whippet lab notebook: guile, heuristics, and heap growth

      news.movim.eu / PlanetGnome • 22 May • 5 minutes

    Greets all! Another brief note today. I have gotten Guile working with one of the Nofl -based collectors, specifically the one that scans all edges conservatively ( heap-conservative-mmc / heap-conservative-parallel-mmc ). Hurrah!

    It was a pleasant surprise how easy it was to switch—from the user’s point of view, you just pass --with-gc=heap-conservative-parallel-mmc to Guile’s build (on the wip-whippet branch); when developing I also pass --with-gc-debug , and I had a couple bugs to fix—but, but, there are still some issues. Today’s note thinks through the ones related to heap sizing heuristics.

    growable heaps

    Whippet has three heap sizing strategies : fixed, growable, and adaptive ( MemBalancer ). The adaptive policy is the one I would like in the long term; it will grow the heap for processes with a high allocation rate, and shrink when they go idle. However I won’t really be able to test heap shrinking until I get precise tracing of heap edges, which will allow me to evacuate sparse blocks.

    So for now, Guile uses the growable policy, which attempts to size the heap so it is at least as large as the live data size, times some multiplier. The multiplier currently defaults to 1.75×, but can be set on the command line via the GUILE_GC_OPTIONS environment variable. For example to set an initial heap size of 10 megabytes and a 4× multiplier, you would set GUILE_GC_OPTIONS=heap-size-multiplier=4,heap-size=10M .

    Anyway, I have run into problems! The fundamental issue is fragmentation. Consider a 10MB growable heap with a 2× multiplier, consisting of a sequence of 16-byte objects followed by 16-byte holes. You go to allocate a 32-byte object. This is a small object (8192 bytes or less), and so it goes in the Nofl space. A Nofl mutator holds on to a block from the list of sweepable blocks, and will sequentially scan that block to find holes. However, each hole is only 16 bytes, so we can’t fit our 32-byte object: we finish with the current block, grab another one, repeat until no blocks are left and we cause GC. GC runs, and after collection we have an opportunity to grow the heap: but the heap size is already twice the live object size, so the heuristics say we’re all good, no resize needed, leading to the same sweep again, leading to a livelock.

    I actually ran into this case during Guile’s bootstrap, while allocating a 7072-byte vector. So it’s a thing that needs fixing!

    observations

    The root of the problem is fragmentation. One way to solve the problem is to remove fragmentation; using a semi-space collector comprehensively resolves the issue, modulo any block-level fragmentation .

    However, let’s say you have to live with fragmentation, for example because your heap has ambiguous edges that need to be traced conservatively. What can we do? Raising the heap multiplier is an effective mitigation, as it increases the average hole size, but for it to be a comprehensive solution in e.g. the case of 16-byte live objects equally interspersed with holes, you would need a multiplier of 512× to ensure that the largest 8192-byte “small” objects will find a hole. I could live with 2× or something, but 512× is too much.

    We could consider changing the heap organization entirely. For example, most mark-sweep collectors (BDW-GC included) partition the heap into blocks whose allocations are of the same size, so you might have some blocks that only hold 16-byte allocations. It is theoretically possible to run into the same issue, though, if each block only has one live object, and the necessary multiplier that would “allow” for more empty blocks to be allocated is of the same order (256× for 4096-byte blocks each with a single 16-byte allocation, or even 4096× if your blocks are page-sized and you have 64kB pages).

    My conclusion is that practically speaking, if you can’t deal with fragmentation, then it is impossible to just rely on a heap multiplier to size your heap. It is certainly an error to live-lock the process, hoping that some other thread mutates the graph in such a way to free up a suitable hole. At the same time, if you have configured your heap to be growable at run-time, it would be bad policy to fail an allocation, just because you calculated that the heap is big enough already.

    It’s a shame, because we lose a mooring on reality: “how big will my heap get” becomes an unanswerable question because the heap might grow in response to fragmentation, which is not deterministic if there are threads around, and so we can’t reliably compare performance between different configurations. Ah well. If reliability is a goal, I think one needs to allow for evacuation, one way or another.

    for nofl?

    In this concrete case, I am still working on a solution. It’s going to be heuristic, which is a bit of a disappointment, but here we are.

    My initial thought has two parts. Firstly, if the heap is growable but cannot defragment, then we need to reserve some empty blocks after each collection, even if reserving them would grow the heap beyond the configured heap size multiplier. In that way we will always be able to allocate into the Nofl space after a collection, because there will always be some empty blocks. How many empties? Who knows. Currently Nofl blocks are 64 kB, and the largest “small object” is 8kB. I’ll probably try some constant multiplier of the heap size.

    The second thought is that searching through the entire heap for a hole is a silly way for the mutator to spend its time. Immix will reserve a block for overflow allocation : if a medium-sized allocation (more than 256B and less than 8192B) fails because no hole in the current block is big enough—note that Immix’s holes have 128B granularity—then the allocation goes to a dedicated overflow block , which is taken from the empty block set. This reduces fragmentation (holes which were not used for allocation because they were too small).

    Nofl should probably do the same, but given its finer granularity, it might be better to sweep over a variable number of blocks, for example based on the logarithm of the allocation size; one could instead sweep over clz(min-size)–clz(size) blocks before taking from the empty block list, which would at least bound the sweeping work of any given allocation.

    fin

    Welp, just wanted to get this out of my head. So far, my experience with this Nofl-based heap configuration is mostly colored by live-locks, and otherwise its implementation of a growable heap sizing policy seems to be more tight-fisted regarding memory allocation than BDW-GC’s implementation. I am optimistic though that I will be able to get precise tracing sometime soon, as measured in development time; the problem as always is fragmentation, in that I don’t have a hole in my calendar at the moment. Until then, sweep on Wayne, cons on Garth, onwards and upwards!

    • wifi_tethering open_in_new

      This post is public

      wingolog.org /archives/2025/05/22/whippet-lab-notebook-guile-heuristics-and-heap-growth

    • chevron_right

      Michael Meeks: 2025-05-21 Wednesday

      news.movim.eu / PlanetGnome • 21 May

    • Mail chew, early call, sync with Dave.
    • Published the next strip around how private initiative can smooth roads:
    • More catch-up, sales team call.
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2025-05-21.html