• Pl chevron_right

      Aryan Kaushik: Open Forms is now 0.4.0 - and the GUI Builder is here

      news.movim.eu / PlanetGnome • 4 weeks from now • 3 minutes

    Open Forms is now 0.4.0 - and the GUI Builder is here

    A quick recap for the newcomers

    Ever been to a conference where you set up a booth or tried to collect quick feedback and experienced the joy of:

    • Captive portal logout
    • Timeouts
    • Flaky Wi-Fi drivers on Linux devices
    • Poor bandwidth or dead zones

    Meme showcasing wifi fails when using forms

    This is exactly what happened while setting up a booth at GUADEC. The Wi-Fi on the Linux tablet worked, we logged into the captive portal, the chip failed, Wi-Fi gone. Restart. Repeat.

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

    We eventually worked around it with a phone hotspot, but that locked the phone to the booth. A one-off inconvenience? Maybe. But at any conference, summit, or community event, at least one of these happens reliably.

    So I looked for a native, offline form collection tool. Nothing existed without a web dependency. So I built one.

    Open Forms is a native GNOME app that collects form inputs locally, stores responses in CSV, works completely offline, and never touches an external service. Your data stays on your device. Full stop.

    Open Forms pages

    What's new in 0.4.0 - the GUI Form Builder

    The original version shipped with one acknowledged limitation: you had to write JSON configs by hand to define your forms.

    Now, I know what you're thinking. "Writing JSON to set up a form? That's totally normal and not at all a terrible first impression for non-technical users." And you'd be completely wrong, to me it was normal and then my sis had this to say "who even thought JSON for such a basic thing is a good idea, who'd even write one" which was true. I knew it and hence it was always on the roadmap to fix, which 0.4.0 finally fixes.

    Open Forms now ships a full visual form builder.

    Design a form entirely from the UI - add fields, set labels, reorder things, tweak options, and hit Save. That's it. The builder writes a standard JSON config to disk, same schema as always, so nothing downstream changes.

    It also works as an editor. Open an existing config, click Edit, and the whole form loads up ready to tweak. Save goes back to the original file. No more JSON editing required.

    Open forms builder page

    Libadwaita is genuinely great

    The builder needed to work well on both a regular desktop and a Linux phone without me maintaining two separate layouts or sprinkling breakpoints everywhere. Libadwaita just... handles that.

    The result is that Open Forms feels native on GNOME and equally at home on a Linux phone, and I genuinely didn't have to think hard about either. That's the kind of toolkit win that's hard to overstate when you're building something solo over weekends.


    The JSON schema is unchanged

    If you already have configs, they work exactly as before. The builder is purely additive, it reads and writes the same format. If you like editing JSON directly, nothing stops you. I'm not going to judge, but my sister might.

    Also thanks to Felipe and all others who gave great ideas about increasing maintainability. JSON might become a technical debt in future, and I appreciate the insights about the same. Let's see how it goes.

    Install

    Snap Store

    snap install open-forms
    

    Flatpak / Build from source

    See the GitHub repository for build instructions. There is also a Flatpak release available .

    What's next

    • A11y improvements
    • Maybe and just maybe an optional sync feature
    • Hosting on Flathub - if you've been through that process and have advice, please reach out

    Open Forms is still a small, focused project doing one thing. If you've ever dealt with Wi-Fi pain while collecting data at an event, give it a try. Bug reports, feature requests, and feedback are all very welcome.

    And if you find it useful - a star on GitHub goes a long way for a solo project. 🙂

    Open Forms on GitHub

    • Pl chevron_right

      Hylke Bons: Hello again, Planet GNOME!

      news.movim.eu / PlanetGnome • 0:00 • 1 minute

    Greetings from Planet Peanut!

    Since there’s a whole new generation of GNOME contributors active right now, I’ll do a short reintroduction: Hello, I’m Hylke !

    I was a design contributor in the late 2.X, early 3.X days. Mainly icons and theming. I’ve attended many GUADECs .

    I’m also the developer of SparkleShare , a Git-based file sync app. Once a much used tool by the Design Team to collaborate on mockups, now in need for some love and care.

    After many years just lurking I’m happy to be officially back as a GNOME Foundation member now that Bobby has joined Circle .


    hello.png App icons created in recent months

    New plan

    I lost my job this year due to the big tech layoffs . Also dealing with burnout, it made me realise I need to go back to working on things that matter to me.

    I would love to contribute design full-time.

    If you like my work and want to support me, I’m trying to gather enough small monthly sponsors to support me with a basic income. Every little helps.

    My focus for 2026:

    • Supply a stream of icons to the Linux ecosystem by designing at least one app icon a week . Developers can request free icons .
    • Reboot SparkleShare . Finish the rewrite in Rust and redesign the interface with GTK4 and libadwaita .
    • Launch a FOSS design service . Make a plan for sustainably assist FOSS communities with product design work.

    I will post frequent updates here and on the Fediverse .

    Good to be back!

    • Pl chevron_right

      This Week in GNOME: #254 Fellowships

      news.movim.eu / PlanetGnome • 12 hours ago • 6 minutes

    Update on what happened across the GNOME project in the week from June 5 to June 12.

    GNOME Foundation

    marimaj reports

    The GNOME Foundation has selected the first recipients who will receive funding through its new Fellowship program, and is delighted to announce that Peter Eisenmann and Sophie Herold will begin work as our first Fellows in July.

    Sophie and Peter are both long-running GNOME contributors, with many significant contributions as members of the GNOME community. Sophie is known as developer of apps, libraries, and websites, including Loupe, Pika Backup, Glycin, and welcome.gnome.org. Peter is a long-standing Nautilus maintainer (officially known as the Files app), as well as an experienced contributor to platform libraries, including GTK and GLib.

    Full announcement: https://blogs.gnome.org/foundation/2026/06/11/announcing-our-first-fellows/

    Miscellaneous

    Philipp Sauberzweig reports

    I’m excited to share with you that I’ll be joining the Sovereign Tech Agency as a fellow for the GNOME Design Team starting in July. Check out the announcement and the full cohort of fellows in the official blogpost .

    During my two-year fellowship, I will support GNOME maintainers and developers with design feedback and reviews, create mockups, and coordinate efforts to standardize design patterns. My focus will be on increasing the visibility of design work, improving documentation, tools, and templates, and supporting the onboarding of new contributors.

    I’m looking forward to meeting many of you (again) at GUADEC and I’ll post more about my activities soon. I’m currently wrapping up projects from my previous job and taking some time off. See you all back in July.

    GNOME Core Apps and Libraries

    Maps

    Maps gives you quick access to maps all across the world.

    mlundblad reports

    Maps now shows departures (and arrivals) for public transit stops/stations (when data is available in Transitous)

    departures-buses.BRB5fbk0_ZcmhUU.webp

    departures-flights.B8wXH3ax_Z210nyf.webp

    departures-multiple.C_3yTjku_ZY03f9.webp

    departures-trains.UQdciuvK_ZrHy5J.webp

    GNOME Circle Apps and Libraries

    Tuba

    Browse the Fediverse.

    GeopJr 🏳️‍⚧️🏳️‍🌈 says

    This week, Tuba was ported to Android, opening up exciting new opportunities, as we get closer to the next release!

    Third Party Projects

    Jiri Eischmann reports

    Meshy 26.06 has been released . It’s the first stable release of MeshCore client for Linux written in Python, GTK 4, and libadwaita.

    It has a feature parity with the official client, but provides native look & feel striving for the best possible integration with the Linux desktop, primarily GNOME.

    You can install stable releases of Meshy from Flathub or developoment releases from the app’s flatpak repo .

    Stable releases are planned at a rate of once per month.

    meshy.Cy16YB4p_1XtshH.webp

    Anton Isaiev announces

    RustConn 0.16 Released

    RustConn just turned one year old, and 0.16 is out. Thank you to everyone who uses it and files reports - that feedback shapes every release.

    The biggest change this cycle is the move to IronRDP 0.15: bulk compression for lower bandwidth on slow links, slow-path rendering (XRDP and older Windows no longer show a blank screen), and better compatibility with GNOME Remote Desktop. Huge thanks to the IronRDP project and to all the open projects RustConn builds on for its connections.

    Other highlights, all requested by users:

    • Connections with notes now show a small badge in the sidebar, so you can see at a glance which entries have documentation (search also takes into account the content of notes).
    • Snap packaging caught up with the Flatpak build.
    • A lot of macOS fixes (Keychain, SSH password auth, tray).
    • A new Windows / WSL2 setup guide.
    • Plus many small GNOME HIG refinements across the settings dialog and sidebar.

    Homepage: https://github.com/totoshko88/RustConn Flathub: https://flathub.org/apps/io.github.totoshko88.RustConn

    RustConn.Rlu2AypV_yCMSK.webp

    austin says

    Gelly 1.6 was released this week. Gelly is a Jellyfin and Subsonic/Navidrome compatible player using GNOME technologies. The last month has seen an uptick in development and contributions, with a few major features added:

    • Gapless playback
    • UI polish, including a new compact mode
    • NFC card support with the companion gelly-nfc project
    • Favorites
    • Internationalization

    Gelly needs help with translations! Please see the README for details. Thanks to all that have already contributed!

    https://flathub.org/en/apps/io.m51.Gelly

    gelly_june_2026.DKfuNg51_ZYHTEX.webp

    Ans Ibrahim announces

    Memento , the movie and tv tracking app, got updates this week with version 1.3.0 :

    • Backup and Restore functionality was implemented
    • Import from Ticketbooth is supported
    • Import for Movary plays and watchlist is supported
    • Users can add plays without date

    Fractal

    Matrix messaging app for GNOME written in Rust.

    Kévin Commaille reports

    Fractal 14 has landed and is packed with lots of small changes, that make for an even better experience. Here is a quick reminder of the changes since Fractal 13:

    • Call rooms are identified with a camera icon in the sidebar and show a banner to warn that other users might not read messages in these rooms.
    • Calls are rendered in the timeline and incoming calls trigger a notification. We still don’t support calls, but at least now you know when someone is calling and can open another client to answer.
    • While we still support signing in via SSO, we have dropped support for identity providers, to simplify our code and a have a closer experience to signing in with OAuth 2.0.
    • The sidebar room filter has been improved: Enter goes to first room result, and there’s an empty state when no results match the term.
    • The performance of the room list has also been improved, it should be mostly noticeable for accounts that have joined a lot of rooms.
    • Informative events ( Unable to decrypt , server notices…) are now styled differently to reflect their special nature and differentiate them from regular text messages that anyone can send.
    • Sending files & location is properly disabled while editing/replying, as it doesn’t work anyway.

    As usual, this release includes other improvements and fixes thanks to all our contributors, and our upstream projects.

    We want to address special thanks to the translators who worked on this version. We know this is a huge undertaking and have a deep appreciation for what you’ve done. If you want to help with this effort, head over to Damned Lies .

    This version is available right now on Flathub .

    This cycle, we were lucky enough to get a higher than usual number of new contributors. Most of the changes listed above come from them. If you want to join the gang, you can start by fixing one of our newcomers issues . We are always looking for new members!

    fractal-utds-and-calls.C3136pYS_2vinAj.webp

    Shell Extensions

    Carlos Jiménez reports

    New version of Gnome Football extension, now with a calendar panel integration: https://github.com/carlosjdelgado/GnomeFootball/releases/tag/v2.0.0

    gnome-football-2-0-0.C_W1gaea_Z2lh7pg.webp

    Arnis (kem-a) announces

    Kiwi (is not Apple) brings a bit of macOS feel to GNOME without getting in the way of the desktop you already use. The idea is to help people coming from macOS settle into Linux and feel at home on GNOME right away. It is fairly feature-rich and modular: macOS-style window control buttons, window controls and titles in the top panel for maximized apps, battery percentage when you are getting low, and a calendar moved to the right with notifications tucked into Quick Settings, accent colored menu entries, among others. The restyling is deliberately minimal, so it plays nice with default Adwaita theme and the rest of your setup.

    The latest update v1.7.0 improves the dynamic blur implementation (of course, there is blur) to the top panel, dash via Dash to Dock, and the Overview background, and adds a smoother, slowed workspace switch transition.

    Install it from GNOME Extensions or get it from GitHub

    kiwi-is-not-apple-2._CWhqVBP_2fqhIU.webp

    Just Perfection says

    A new rule has been added to the EGO review guidelines to prevent GNOME Shell extensions from including unnecessary keys in metadata.json .

    That’s all for this week!

    See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

    • Pl chevron_right

      Hylke Bons: Hello again, GNOME!

      news.movim.eu / PlanetGnome • 1 day ago • 1 minute

    Greetings from Planet Peanut!

    Since there’s a whole new generation of GNOME contributors active right now, I’ll do a short reintroduction: Hello, I’m Hylke !

    I was a design contributor in the late 2.X, early 3.X days. Mainly icons and theming. I’ve attended many GUADECs .

    I’m also the developer of SparkleShare , a Git-based file sync app. Once a much used tool by the Design Team to collaborate on mockups, now in need for some love and care.

    After many years just lurking I’m happy to be officially back as a GNOME Foundation member now that Bobby has joined Circle .


    hello.png App icons created in recent months

    New plan

    I lost my job this year due to the big tech layoffs . Also dealing with burnout, it made me realise I need to go back to working on things that matter to me.

    I would love to contribute design full-time.

    If you like my work and want to support me, I’m trying to gather enough small monthly sponsors to support me with a basic income. Every little helps.

    My focus for 2026:

    • Supply a stream of icons to the Linux ecosystem by designing at least one app icon a week . Developers can request free icons .
    • Reboot SparkleShare . Finish the rewrite in Rust and redesign the interface with GTK4 and libadwaita .
    • Launch a FOSS design service . Make a plan for sustainably assist FOSS communities with product design work.

    I will post frequent updates here and on the Fediverse .

    Good to be back!

    ]
    • Pl chevron_right

      Laureen Caliman: Extending Libipuz

      news.movim.eu / PlanetGnome • 1 day ago • 1 minute

    From white-boarding my ideas on a Google Doc, to writing a formal design document in Crosswords, my ability to communicate technical ideas clearly is being put to the test.

    Writing documentation is critical to guide others’ understanding of the code and choices made on a particular codebase. Especially when several developers are introduced to the system, a way to reference material leads to more preparedness to contribute to the codebase.

    I wrote a design document introducing the concepts I would like to implement towards creating a way to generate a dynamic grid. Critique is welcome.

    Standard libipuz crosswords currently rely on using an existing dictionary to fill a static box of X length x Y width. However, the implementation of vocab puzzles goes against this logic and instead generates a new grid of N length x M width based on a list of 0 <= W <= 30 words of 1 <= L <= 25 characters long.

    I reconsidered the idea of using a GArray to store unplaced words because I want something idempotent. To avoid unwanted time complexity bloat, the backend should not carry the memory of unplaced words. Instead, the frontend will compare the generated grid against the original list to manage words that couldn’t be placed.

    Integrating this new feature will be a fascinating technical challenge.

    I created a new IpuzVocab class which inherits from IpuzCrossword. I learned how GNOME manages its developer documentation by writing a file myself to introduce this class. Writing this document made me think about the whole picture: how vocab puzzles handle grids, clues, and guesses, comparing it to standard crossword puzzles. I wrote the support to display a vocab puzzle in light and dark mode, with my next goal to integrate them via gi-docgen.

    • Pl chevron_right

      GNOME Foundation News: Announcing Our First Fellows

      news.movim.eu / PlanetGnome • 2 days ago • 1 minute

    The GNOME Foundation has selected the first recipients who will receive funding through its new Fellowship program , and is delighted to announce that Peter Eisenmann and Sophie Herold will begin work as our first Fellows in July.

    Sophie and Peter are both long-running GNOME contributors, with many significant contributions as members of the GNOME community. Sophie is known as developer of apps, libraries, and websites, including Loupe, Pika Backup, Glycin, and welcome.gnome.org . Peter is a long-standing Nautilus maintainer (officially known as the Files app), as well as an experienced contributor to platform libraries, including GTK and GLib.

    Both Fellows will spend time working to enhance the long-term sustainability and health of the GNOME project. Sophie will be working to establish a new RFC process for GNOME, which will enhance our project-level governance. She will also be working on more maintainable and secure libraries through Rust adoption. Peter will work to modernize many aspects of the Files app, including thumbnailing, user directory localization, and the use of modern GNOME platform conventions.

    Congratulations to Peter and Sophie – we’re genuinely excited to see what you’ll achieve as our first Fellows, and proud to be supporting your work.

    We’d also like to take this opportunity to thank everyone who submitted applications to the first round of the Fellowship. We received some genuinely excellent proposals, and would strongly encourage unsuccessful applicants to apply again in future rounds.

    Peter and Sophie’s work is made possible by the generosity of GNOME’s supporters. If you’d like to help fund future rounds and support contributors like them, please consider donating .

    • Pl chevron_right

      Jakub Steiner: Welcome to the Icon Designer Webring!

      news.movim.eu / PlanetGnome • 3 days ago • 1 minute

    Terry Godier wrote a beautiful essay "The Boring Internet" . The internet isn't dying, he argues, just the commercial veneer glued on top of it is. Underneath all the engagement metrics and algorithmic feeds, there's still an older, slower, more federated web. One built on protocols nobody owns. RSS feeds still work (thank you, Aaron), people can set up websites and blogs.

    Lets start a webring in 2026

    Don't worry, I haven't pushed too many pixels and gone a little cuckoo. But it's a fun exercise to remind what the web once was. We'll silently skip over the fact that I actually started using gopher first, but even web surfing didn't begin on a search engine back in the day. It was web rings , later followed by index sites.

    Under Construction

    Start

    Not long ago I posted about designing app icons for 3rd party GNOME app developers . The post generated quite some buzz and some old and new faces started showing up to help with the backlog. So obviously I'd like to take you on a webring tour of all the designers responsible for making the GNOME app ecosystem a little less awkward to browse on Flathub .

    Let me introduce you to Brage. He's been around for a couple of years now, helping to tame the flames of the reddit community , helping with the GNOME Circle project to improve the quality of GNOME apps in the wild, creating illustrations for initial states in apps, authoring some noteworthy apps himself . So thank you, Brage, welcome to the 90s!

    Next Up: Brage Fuglseth

    • Pl chevron_right

      Sriram Ramkrishna: Linux App Summit 2026 Social Media Retrospective

      news.movim.eu / PlanetGnome • 3 days ago • 9 minutes

    Linux App Summit 2026 Social Media Retrospective

    This is my personal retrospective post – there will likely be some version of this that will go out to various stakeholders.

    I want to start off by giving huge praise to our organizing team that worked really hard this year in putting this event together. Couldn’t ask for a better team to work with. Our organizing team is a mix of KDE and GNOME people.

    This post will focus on the outreach, fundraising, and social media campaign since that was the bulk of the work I did for LAS this year.

    Linux App Summit (LAS) for those who don’t know is a conference organized around the goal of encouraging developing apps on the Linux platform. With
    the advent of technologies like Flatpak, we had the technology to be able to ship apps directly to users instead of through the distros. Opening
    an opportunity for a bi-directional relationship between app developers and the users of their apps.

    This year marks the 10th year I’ve been involved in organizing LAS and its previous incarnation, LAS GNOME. LAS is organized jointly by GNOME and KDE who help fund and promote the conference jointly. It is a showcase of how we can unite and do impactful things.

    I was not able to attend this year due to other commitments. I hope other who did attend will weigh in and let us know how it was in-person.

    Let’s get to it!

    Challenging Myself

    I wanted to challenge myself this year and really bring in the kind of engagement  that I could be proud of. I’ve not really had the kind of time I wanted to work on this and it was time to really focus and see what could be done with a proper plan. The goal I wanted to take myself is driving awareness and growing attendance on what our app ecosystem is doing.

    What does that entail?

    Improving our social media game

    The underlying problem I have identified is that Linux and apps was not getting into the headspace of developers. It still felt that this conference was unknown even in our own spaces. We need to break out of Mastodon and start exploring different platforms and content.

    In previous years, we were using Buffer since it was free but it was really difficult and unwieldy. We could only schedule 3 days in advance and at times the posts would just drop. We needed to first change the tools we used to really improve our engagement with the world.

    With help from the sysadmins at the GNOME Foundation (thank you, GF and Andrea Veri and Bart!), we were able to install Mixpost a self-host social media platform. The two great things about Mixpost is 1) analytics of the posts and social media platforms we were active on and not so active on 2) have a workspace around all our social media accounts and have a team of people working in it with an editorial flow and content calendar. This allowed us to share the workload of posting among many members. For instance, when I wasn’t around, Aryan Kaushik was able to take it over and post. Mixpost is now also being used for various GNOME’s accounts as well. The software continues to improve and hopefully they’ll get around to single-signon support.

    With the ability to actually have metrics, the next step is to actually take goals for each of the social media accounts we had and see if we could meet them. Below is a table of the targets I took and the results from February 2026 – May 2026. Instagram was actually started in the beginning of May.

    Social Media Start Count Target Count Result
    Mastodon 596 796 926 👍🏼
    LinkedIn 534 700 619 👍🏼
    BlueSky 0 100 39
    YouTube 1420 N/A 1610
    Instagram 0 N/A 42

    Overall, I think we did ok! The high count for Mastodon was because of the great work of the GNOME and KDE accounts on mastodon boosting our posts and helping promoting them before, during, and after LAS. I noticed doing things like polls on mastodon got a lot of attention without needing boosts from the other accounts.

    We had decent engagement on LinkedIn. Certainly better than in the past. The trick though is that LinkedIn requires a different lens when you post. Since it is mostly focus on B2B and B2C type of messaging you need to write them differently. I didn’t do it this time because writing social media posts is hard and takes a lot of time and thought.

    I didn’t take any goals for YouTube since we did not conceive that we would create content targeted for YouTube. In a spur of the moment, I did a ‘podcast style’ conversation between Matthias Clasen and myself talking about LAS. That gave us about 354 views. Which was encouraging and gives us some idea how organic content on YouTube would be received.

    Bluesky was a new account for us. So we started with zero. We gained 39 followers. That might not seem like a lot given the time frame but BlueSky is an interesting platform when it comes to engagement. You can get quite a bit of engagement even if the follower count is low. I think given more time on the platform we’ll be able to make that 100+ if we keep posting content. I think hashtags matter here and playing with the right kind of hashtag and content matters. Bluesky is also was a great experiment when you didn’t have big accounts like GNOME and KDE boosting you.

    The media partners we had 9to5Linux, Tuxdigital, It’s FOSS, and Linux Magazine all helped in this regard by using their accounts boost our posts in these other platforms and give us visibility. Thank you to our media partners for helping out and we hope we can work with them closer next year. I’ll like to engage with them further to see how we can help each other out including contributing content. Another idea is to reach out to the speakers of these talks and get them to write some articles that could be contributed based on their talks.

    Finally, Instagram. This is an untapped gold mine. I was skimming through the platform looking for GNOME/KDE/Linux desktop type posts to see how well content did. Saw one young lady, who showed off her GNOME desktop with some caption and it gave her 130k views. It was about 10 seconds long. That was impressive. I posted a short video talking about Linux App Summit, and while I got about 130 views – the analytics said most stopped watching after 9 seconds of the 4 minute video I posted. That hurt my pride. I resolved to do better and get better engagement with a 10-15 second video that packed more information and visually more stimulating. As of now the LAS account is still gaining followers despite not posting for 2 weeks. Once again, the media partners helped by liking my posts while the other accounts lay idle.

    Working with YouTube Influencers

    One other aspects of my plan on boosting the visibility of LAS was to start working with influencers on various platforms. I made a few attempts with a few I knew but was only able to get on one podcast – Tux Digital . Michael Tunnell was kind enough to invite Aleix Pol and myself on his show. For an hour and half, we answered questions and did some bantering. We even went in some organic directions that was fun! I know I had fun, I hope Aleix did too. The exposure was pretty good with approximately 8k+ views for that episode that was 90 minutes. The feedback to the video was very positive with many resolving to attend the conference. Unfortunately, I didn’t set up utm links so that I know where people came from.

    Through social media and influencers, we hoped to break out of our media ecosystem and branch out to platforms that developers and Linux enthusiasts hang out and consume content. Meeting where developers are needs to be something we will need to focus on going forward.

    Results

    The in-person conference was a success, we had 110 people at the conference, the venue capacity was 100. We had 156 people who registered for the conference, this is about a 71% conversion rate. The industry average for free  in-person events is 50%. For LAS, this is unprecedented because we usually had a much worse turnover rate historically. At one point, a few years ago I had started looking into doing registration fees to give people some reason to go and not ghost the conference.

    For online this year, we had about 50 online registrations  but it’s hard to gauge anything about online participation since we freely published the YouTube link on social media.

    The results for the conference for online had the following results on YouTube :

    2025 2026
    Day 1 Views 922 1.7k
    Day 2 Views 485 1.5k

    The above numbers show views within the 24 hour period of each day. These are really good numbers where we’ve more than doubled our viewership on one of the two days compared to last year. Ostensibly, it shows that our social media did build awareness.

    Here is the (still increasing) numbers as of now on Youtube:

    First Day: 2k views
    Second day: 2.7k views

    The videos are currently being broken up into individual talks. But the individual talks as of now are averaging about 300 views or so with the top one being 900+ views for Lennart’s keynote.

    The aggregate views for all the 13 individual talk videos posted so far is 4.9k. If we combined that with the combined 2k and 2.7k views, we can simplistically (mathematically speaking) would be 9.6k. Interestingly enough, that is not a big difference from the 8k views of Tux Digital podcast that Aleix and I were on. 😀

    In regards, to the people who attended Linux App Summit, 16 people filled out the surveys and by in-large most of the people who attended heard about LAS through word of mouth and not so much through social media. So, that’s an interesting data point. I expect that is because of people like Lorenz Wildberg (thank you!) who did on the ground outreach.

    Interestingly, enough our online views were quite good compared to say SCALE which peaked at 7.1k views for one talk but in general the average views was less than the average views than at LAS. Our subject matter is increasingly important.

    Also to be clear, views do not translate to people.

    Looking towards 2027, we’ll want to increase our in-person attendance while doubling our online views. Something we will be focusing on when we organize for next year.

    Next Steps

    Our organizing team will be posting relevant individual talks on social media once all the individual videos have been posted. I hope you all share those with everyone.

    Secondly, we would love to add more people to our organizing team. Specifically, in order to really build out our outreach we need a lot more people to help network and reach out to developers from different communities and different platforms. This way we can start building relationships with other desktop projects, app developers, game developers, designers not just from Linux but from other platforms as well. For that we need a small army of advocates.

    • Pl chevron_right

      Christian Hergert: A Data Layer for GTK applications

      news.movim.eu / PlanetGnome • 3 days ago • 7 minutes

    Gom is a very old object mapper I wrote to bridge GObject to SQLite . It made a lot of assumptions about the world based on when it was prototyped.

    The past couple years had me using it again for the documentation search in Manuals . Typically, I would have just built Manuals to parse all the XML files on disk and hold them in memory. That’s how both Devhelp and Builder always did things. Once we started supporting Flatpak SDKs that was no longer realistic. You could have numerous SDKs all with copies of the overlapping data and it just became easier to have a query model.

    One of the more performance critical limitations was the locking model. When gom-1.0 was written, it was not common for distributions to compile SQLite with locking support. So you just created a single thread and did your work over there.

    Bolting fulltext search and many other missing features onto the old ABI just wasn’t realistic. Especially when I’ve wanted to make the thing properly async for years. One of my other projects, Libdex is just right over there and perfect for this sort of problem.

    The landscape changed and so do our horizons.

    A new informed ABI

    In the years after Gom was prototyped, I worked at a commercial database company and learned a great deal about implementing the internals of both that database and more traditional RDBMS. That left a certain cringe on my mouth whenever looking at my code predating it. Knowing how things get done inside the database allows for building better APIs to interact with it.

    This time everything is async. Queries are modeled like you do with a compiler. Lowered into the back-end specific implementation. There can be an entity map and real transactions which allows you to read back the same instance despite which query inflated it.

    The Center

    Your early stage objects are the GomRepository , GomDriver , and GomRegistry .

    The registry describes the entities that can exist within the repository. This is handy because it allows us to pre-compile information into a model that is both immutable and fast at runtime. Compare that to methods like g_object_class_list_properties() which is a performance bottleneck of its own.

    The driver is very obvious. It is our abstraction layer for the database engines. Currently we have support for SQLite and PostgreSQL .

    The repository is the center of the center. It is how you query, insert, update, delete, transact, and more. It is likely your application instance owns one of these unless of course you use Gom as your file format in which case you’ll have one per “document”.

    Two Access Models

    This new version of Gom can support either the entity mapping you’re used to or; optionally, raw access to relations/projections via the GomCursor .

    As the cursor moves through the resulting rows you will have access to all the projections requested in the query. Though it holds enough information to allow you to gom_cursor_materialize() the row into an GomEntity subclass.

    If you want a snapshot of that cursor row without materializing, you can use GomRecord which can also conveniently be used in GListModel for integration into GTK applications.

    Most of the time, you’ll use materialization. And even then it is likely to happen through automated collections rather than with a cursor directly. More on that later.

    Sessions

    As I mentioned, there was no concept of transactions previously.

    In this iteration we have GomSession . It is your standard identity-map layer with transaction-scoping. If you perform multiple queries for the same record, the session will ensure you get the same instance back. hat is essential when you do local mutations on an instance and what to see that reflected in followup queries.

    Additionally, it makes it nice to have multiple views of an object with an editor or listview and needing them to stay in sync.

    Relationship Modeling

    Support for relationships was adhoc previously. We had some functions named in ways that made you think you could, but I assure you, they were not well tested.

    This time around you can model your GomEntity with 1:1, 1:M, M:M, inverse, self-referencing, all while handling proper delete rules. Combing this with the session support mentioned previously is crucial.

    So now you should be able to show related models easily in GtkListView while keeping the paginated-and-lazy model beneath it transactional.

    Migrations

    In the previous version migrations were dynamic, but largely controlled by Gom itself. Very inflexible.

    This time around we have things broken down into Migrator and Migration .

    You can use built-in implementations like the EntityMigrator or implement your own. CustomMigrator makes that easy. Especially since you can inject your own migrations at just the right point.

    Internally, libgom-2 can snapshot your GomRegistry at specific versions based on the provided metadata. Then it performs a diff between two versions of the registry to determine what migration work must be done.

    You can just as easily use a SqlMigration with custom SQL scripts. This stuff is all highly composable now to get exactly what you need.

    Live List Models

    I’ve written many ways to get live SQLite results into GTK over the past two decades. I think one of the first was a GtkTreeModel implementation for GTK 2 which could do it. With that in mind, it was still rather annoying when making Manuals so I set off to make that convenient.

    We have GomRecordListModel , GomEntityListModel , GomRelatedListModel , GomQueryModel all of which have practical uses based on application needs.

    But in short, most of those are lazy and support transaction-backed stable identities for entities. Very useful when you have a list of items and an editor loaded in another frame, both of which must reflect the same data.

    Expression Trees

    This time around I implemented proper expression trees. They model the query, relations, and projections in a manner that allows the driver to lower into a query much more accurately.

    You can model things like function-calls cleanly all of which required writing manual SQL before. If you did anything outside of what gom could generate previously, it became madness to maintain.

    Vectors

    This version of libgom embeds the vec1 extension for SQLite. That means we can store vectors in your records and query them. GomVector makes that easier to manage as a property within your application entity.

    I can think of a few things this will be useful for, maybe you can too .

    Profiling

    This version of libgom has profiling support with another project of mine, Sysprof . The whole library emits profiler marks about what is going on so that it is easy for you to figure out why something might be slow in your application.

    Since we’ve already done the integration of Sysprof into GLib/GObject, GTK, Pango, Libdex, and GNOME Shell/Mutter you can very quickly get an idea with details of what is going on in your application. Click record, select the problem area, zoom, and it is often pretty clear. You can have flamegraphs, callgraphs, and timing marks all in one place.

    A screenshot of Sysprof in the marks section. A zoomed in timeline across the top, which marks in rows sorted by group/category/name. The timeline boxes show the time region they occupied. In the boxes are the message associated with the mark.

    Local First with Sync Coordination

    One of my personal motivations for this is around building a native sync protocol for applications I’m building. I wrote numerous SQLite-based sync protocols for the now defuct catch.com before they were acquired by apple. That means I know multiple wrong ways to do it.

    This time around, I want to put it right in the data-mapper at the point where you have the most insight. So libgom has the right abstractions in place to build that. The GomSyncCoordinator manages the process and GomSyncTransport is the abstraction-point for service integration.

    You work with GomDelta at this layer. The application can provide you with a GomMergePolicy to help make decisions which allow for contextually doing the right thing.

    This part is still very new. I’m still building the other side of it but landing the shape early allows me to mock and test things comprehensively before committing to the ABI.

    My goal is building a practical, robust, and correct implementation for personal local first features.

    A small personal note: as I wrote in my recent update from France , I am no longer employed by Red Hat. Work like this is currently self-funded, out of pocket, while my family and I settle into a new chapter. If you find it useful, a note of encouragement or a contribution means a lot right now. It helps make it possible to keep improving the free software infrastructure many of us rely on.