call_end

    • chevron_right

      Marcus Lundblad: Pre-FOSDEM Maps wrap-up

      news.movim.eu / PlanetGnome • 28 January, 2025 • 1 minute

    As I've done some times previous years, I thought it would be appropriate to give a bit of a status update on goings on with regards to Maps before heading for this year's FOSDEM


    Refreshed Location Marker

    One of the things that landed since the December update are the new revamped location markers


    The marker now uses the system accent color, and sports a “torch” indicating the current heading (when known).


    And the circle indicating approximate accuracy of the location now has an outer contour.

    And on these notes, I would also like to take the opportunity to mention the BeaconDB project ( https://beacondb.net/ ) with the goal of building a community-sourced wireless positioning database. It is compatible the now-defunct Mozilla Location Service (MLS) and works as a drop-in-replacement with GeoClue.

    Improved Visuals for Public Transit Routes Lists

    The “badges” showing line numbers/names for public transit journeys, and markers for shown on the map when selecting a trip has been improved to avoid some odd label alignments and better looking contours (on lower contrast against light or dark background). The labels are now drawn directly using GSK instead of piggy-backing on a GtkLabel, doing some Cairo drawing on top of that. One additional benefit here is that it also gets rid of some of the remaining usages of the GdkPixbuf APIs (which will be gone in a future GTK 5).





    Transitous Move to MOTIS 2

    On the subject of transit, Transitous has now migrated to the new MOTIS 2 API. And consequently the support in Maps has been updated to use the new API (this is also backported to the stable 47.3 release).

    The new API is easier to use, and more in-line with the internal data types in Maps, so the code was also a bit simpler. Also now with the new API we get the walking instructions directly from MOTIS instead of using GraphHopper to compute walking  “legs”. This has made searching for routes in Maps quite a bit faster as well.


    FOSDEM

    And when talking about FOSDEM, me, Felix Gündling, and Jonah Brüchert will host a talk about Transitous in the “Railways and Open Transport” devroom (K.6.401) on Sunday @ 16:30 CET

    https://fosdem.org/2025/schedule/event/fosdem-2025-4105-gnome-maps-meets-transitous-meets-motis/

    So maybe see you in FOSDEM!

    • wifi_tethering open_in_new

      This post is public

      ml4711.blogspot.com /2025/01/pre-fosdem-maps-wrap-up.html

    • chevron_right

      Michael Meeks: 2025-01-28 Tuesday

      news.movim.eu / PlanetGnome • 28 January, 2025

    • Planning call; sync with Karen, lunch.
    • Published strip #2 early, FOSDEM travel coming up; an introduction to community road building:
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2025-01-28.html

    • chevron_right

      Michael Meeks: 2025-01-27 Monday

      news.movim.eu / PlanetGnome • 27 January, 2025

    • Up earlyish, mail chew - a lot of conference backlog. Sync with Lily, Miklos, Marketing team, Naomi, Pedro, Eloy.
    • Dug through urgent conference notes, wrote status reports, tried to get to code review.
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2025-01-27.html

    • chevron_right

      Felipe Borges: The GNOME LATAM 2024 recordings are now live!

      news.movim.eu / PlanetGnome • 27 January, 2025

    In October 2024 some members of our community gathered in Medelin, Colombia, for another edition of GNOME Latam . Some of us joined remotely for a schedule packed with talks about GNOME and its ecosystem.

    The talks, in Spanish and Portuguese, are now published on YouTube . Check it out!

    • wifi_tethering open_in_new

      This post is public

      feborg.es /gnome-latam-2024-video-recordings/

    • chevron_right

      Daniel García Moreno: Python 2

      news.movim.eu / PlanetGnome • 27 January, 2025 • 2 minutes

    python2.png

    In 2020, the Python foundation declared Python 2 as not maintained anymore .

    Python 2 is really old, not maintained and should not be used by anyone in any modern environment, but software is complex and python2 still exists in some modern Linux distributions like Tumbleweed.

    The past week the request to delete Python 2 from Tumbleweed was created and is going through the staging process.

    The main package keeping Python 2 around for Tumbleweed was Gimp 2, that doesn't depends directly on Python 2, but some of the plugins depends on it. Now that we've Gimp 3 in Tumbleweed, we are able to finally remove it.

    Python 2

    The first version of Python 2 was released around 2000, so it's now 25 years old. That's not true, because software is a living creature, so as you may know, Python 2 grew during the following years with patch and minor releases until 2020 that was the final release 2.7.18.

    But even when it was maintained until 2020, it was deprecated for a long time so everyone "should" have time to migrate to python 3.

    Py3K

    I started to write python code around the year 2006. I was bored during a summer internship at my third year of computer science, and I decided to learn something new. In the following months / years I heard a lot about the futurist Python 3000 , but I didn't worry to much until it was officially released and the migration started to be a thing.

    If you have ever write python2 code you will know about some of the main differences with python3:

    • print vs print()
    • raw_input() vs input()
    • unicode() vs str
    • ...

    Some tools appeared to make it easier to migrate from python2 to python3, and even it was possible to have code compatible with both versions at the same time using the __future__ module.

    You should have heard about the six package, 2 * 3 = 6. Maybe the name should be five instead of six, because it was a Python "2 and 3" compatibility library.

    Python in Linux command line

    When python3 started to be the main python, there were some discussion about how to handle that in different Linux distributions. The /usr/bin/python binary was present and everyone expect that to be python2, so almost everyone decided to keep that relation forever and distribute python3 as /usr/bin/python3, so you can have both installed without conflicts and there's no confusion.

    But python is an interpreted language, and if you have python code, you can't tell if it's python2 or python3. The shebang line in the executable python scripts should point to the correct interpreter and that should be enough like #!/usr/bin/python3 will use the python3 interpreter and #!/usr/bin/python will use python2.

    But this is not always true, some distributions uses python3 in /usr/bin/python like Archlinux or if you create a virtualenv with python3, the python binary points to the python3 interpreter, so a shebang like #!/usr/bin/python could be something valid for a python3 script.

    In any case, the recommended and safest way is to always use python3 binary because that way it'll work correctly "everywhere".

    Goodbye

    It's time to say goodbye to python2 , at least we can remove it now from Tumbleweed. It'll be around for some more time in Leap, but it's the time to let it go.

    • wifi_tethering open_in_new

      This post is public

      danigm.net /python2.html

    • chevron_right

      Tim Janik: JJ-FZF 0.25.0: Major New Features

      news.movim.eu / PlanetGnome • 25 January, 2025

    The jj-fzf project has just seen a new release with version 0.25.0. This brings some new features, several smaller improvements, and some important changes to be aware of. For the uninitiated, jj-fzf is a feature-rich command-line tool that integrates jj and fzf, offering fast commit navigation with…
    • wifi_tethering open_in_new

      This post is public

      testbit.eu /2025/jj-fzf-0.25.0

    • chevron_right

      Alice Mikhaylenko: Mobile testing in libadwaita

      news.movim.eu / PlanetGnome • 19 December, 2024 • 3 minutes

    Screenshot of Highscore, an emulator frontend running Doom 64 with touch controls, inside libadwaita adaptive preview, emulating a small phone (360x720), in portrait, with mobile shell (26px top bar, 18px bottom bar) and no window controls

    Lately I’ve been working on touch controls overlays in Highscore 1 , and quickly found out that previewing them across different screen sizes is rather tedious.

    Currently we have two ways of testing UIs on a different screen size – resize the window, or run the app on that device. Generally when developing, I do the former since it’s faster, but what dimensions do I resize to?

    HIG lists the 360×294px dimensions, but that’s the smallest total size – we can’t really figure out the actual sizes in portrait and landscape with this. Sure, we can look up the phone sizes, check their scale factor, and measure the precise panel sizes from screenshots, but that takes time and that’s a lot of values to figure out. I did make such a list , and that’s what I used for testing here, but, well, that’s a lot of values. I also discovered the 294px height listed in HIG is slightly wrong (presumably it was based on phosh mockups, or a really old version) and with older phosh versions the app gets 288px of height, while with newer versions with a slimmer bottom bar it gets 313px.

    Now that we know the dimensions, the testing process consists of repeatedly resizing the window to a few specific configurations. I have 31 different overlay, each with 7 different layouts for different screen sizes. Resizing the window for each of them gets old fast , and I really wished I had a tool to make that easier. So, I made one.

    View switcher dialog in libadwaita demo, running in adaptive preview, emulating large phone (360x760),  in landscape, with mobile shell and window controls turned off

    This is not a separate app, instead it’s a libadwaita feature called adaptive preview, exposed via GTK inspector. When enabled, it shrinks the window contents into a small box and exposes UI for controlling its size: specifically, picking the device and shell from a list. Basically, same as what web browsers have in their inspector – responsive design mode in Firefox etc.

    It also allows to toggle whether window controls are visible – normally they are disabled on mobile, but mobile gnome-shell currently keeps them enabled as not everything is using AdwDialog yet.

    It can also be opened automatically by specifying the ADW_DEBUG_ADAPTIVE_PREVIEW=1 environment variable. This may be useful if e.g. Builder wants to include it into its run menu, similar to opening GTK inspector.

    If the selected size is too large and doesn’t fit into the window, it scrolls instead.

    What it doesn’t do

    It doesn’t simulate fullscreen. Fullscreen is complicated because in addition to hiding shell panels almost every app that supports it changes the UI state – this is not something we can automatically support.

    It also doesn’t simulate different scale factors – it’s basically impossible to do with with how it’s implemented.

    Similarly, while it does allow to hide the window controls, if the app is checking them manually via GtkSettings:gtk-decoration-layout , it won’t pick that up. It can only affect AdwHeaderBar , similarly to how it’s hiding close button on the sidebars.

    Future plans

    It would be good to display the rounded corners and cutouts on top of the preview. For example, the phone I use for testing has both rounded corners and a notch, and we don’t have system-wide support for insets or safe area just yet. I know the notch dimensions on my specific phone (approximately 28 logical pixels in height), but obviously it will vary wildly depending on the device. The display panel data from gmobile may be a good fit here.

    We may also want to optionally scale the viewport to fit into the window instead of scrolling it – especially for larger sizes. If we have scaling, it may also be good to have a way to make it match the device’s DPI.

    Finally, having more device presets in there would be good – currently I only included the devices I was testing the overlays for.


    Adaptive preview has already landed in the main branch and is available to apps using the nightly SDK, as well as in GNOME OS.

    So, hopefully testing layouts on mobile devices will be easier now. It’s too late for me, but maybe the next person testing their app will benefit from it.


    1. gnome-games successor, which really deserves a blog post of its own, but I want to actually have something I can release first, so I will formally announce it then. For now, I’m frequently posting development progress on the Fediverse

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /alicem/2024/12/19/mobile-testing-in-libadwaita/

    • chevron_right

      Tobias Bernard: Introducing Project Aardvark

      news.movim.eu / PlanetGnome • 18 December, 2024 • 5 minutes

    Two weeks ago we got together in Berlin for another (Un)boiling The Ocean event (slight name change because Mastodon does not deal well with metaphors). This time it was laser-focused on local-first sync , i.e. software that can move seamlessly between real-time collaboration when there’s a network connection, and working offline when there is no connection.

    The New p2panda

    This event was the next step in our ongoing collaboration with the p2panda project . p2panda provides building blocks for local-first software and is spearheaded by Andreas Dzialocha and Sam Andreae . Since our initial discussions in late 2023 they made a number of structural changes to p2panda, making it more modular and easier to use for cases like ours, i.e. native GNOME apps.

    Sam and Andreas introducing the new p2panda release.

    This new version of p2panda shipped a few weeks ago, in the form of a dozen separate Rust crates, along with a new website and new documentation.

    On Saturday night we had a little Xmas-themed release party for the new p2panda version, with food, Glühwein, and two talks from Eileen Wagner (on peer-to-peer UX patterns ) and Sarah Grant (on radio communication).

    The Hackfest

    Earlier on Saturday and then all day Sunday we had a very focused and productive hackfest to finally put all the pieces together and build our long-planned prototype codenamed “Aardvark”, a local-first collaborative text editor using the p2panda stack.

    Simplified diagram of the overall architecture, with the GTK frontend, Automerge for CRDTs, and p2panda for networking.

    Our goal was to put together a simple Rust GTK starter project with a TextView, read/write the TextView’s content in and out of an Automerge CRDT, and sync it with other local peers via p2panda running in a separate thread. Long story short: we pulled it off! By the end of the hackfest we had basic collaborative editing working on the local network (modulo some bugs across the stack). It’s of course still a long road from there to an actual releasable app, but it was a great start.

    The reason why we went with a text editor is not because it’s the easiest thing to do — freeform text is actually one of the more difficult types of CRDT . However, we felt that in order to get momentum around this project it needs to be something that we ourselves will actually use every day. Hence, the concrete use case we wanted to target was replacing Hedgedoc for taking notes at meetings (particularly useful when having meetings at offline , where there’s no internet).

    The current state of Aardvark: Half of the UI isn’t hooked up to anything yet, and it only sort of works on the local network :)

    While the Berlin gang was hacking on the text editor, we also had Ada , a remote participant, looking into what it would take to do collaborative sketching in Rnote . This work is still in the investigation stage, but we’re hopeful that it will get somewhere as a second experiment with this stack.

    Thanks to everyone who attended the hackfest, in particular Andreas for doing most of the organizing, and Sam Andreae and Sebastian Wick, who came to Berlin specifically for the event! Thanks also to Weise7 for hosting us, and offline for hosting the release party.

    The Long Game

    Since it’s early days for all of this stuff, we feel that it’s currently best to experiment with this technology in the context of a specific vertically integrated app. This makes it easy to iterate across the entire stack while learning how best to fit together various pieces.

    However, we’re hoping that eventually we’ll settle on a standard architecture that will work for many types of apps, at which point parts of this could be split out into a system service of some kind. We could then perhaps also have standard APIs for signaling servers (sometimes needed for peers to find each other) and “dumb pipe” sync/caching servers that only move around encrypted packets (needed in case none of the other peers are online). With this there could be many different interchangeable sync server providers, making app development fully independent of any specific provider.

    Martin Kleppmann’s talk at Local-First Conf 2024 outlines his vision for an ecosystem of local-first apps which all use the same standard sync protocol and can thus share sync services, or sync peer-to-peer.

    This is all still pretty far out, but we imagine a world where as an app developer the only thing you need to do to build real-time collaboration is to integrate a CRDT for your data, and use the standard system API for the sync service to find peers and send/receive data.

    With this in place it should be (almost) as easy to build apps with seamless local-first collaboration as it is to build apps using only the local file system.

    Next Steps

    It’s still early days for Aardvark, but so far everyone’s very excited about it and development has been going strong since the hackfest. We’re hoping to keep this momentum going into next year, and build the app into a more full-fledged Hedgedoc replacement as part of p2panda’s NGI project by next summer.

    That said, we see the main value of this project not in the app itself, but rather the possibility for our community to experiment with local-first patterns, in order to create capacity to do this in more apps across our ecosystem. As part of that effort we’re also interested in working with other app developers on integration in their apps, making bindings for other languages, and working on shared UI patterns for common local-first user flows such as adding peers, showing network status, etc.

    If you’d like to get involved, e.g. by contributing to Aardvark, or trying local-first sync in your own app using this stack feel free to reach out on Matrix (aardvark:gnome.org), or the Aardvark repo on Github .

    Happy hacking!

    • chevron_right

      Peter Hutterer: A new issue policy for libinput - closing and reopening issues for fun and profit

      news.movim.eu / PlanetGnome • 18 December, 2024 • 2 minutes

    This is a heads up that if you file an issue in the libinput issue tracker , it's very likely this issue will be closed. And this post explains why that's a good thing, why it doesn't mean what you want, and most importantly why you shouldn't get angry about it.

    Unfixed issues have, roughly, two states: they're either waiting for someone who can triage and ideally fix it (let's call those someones "maintainers") or they're waiting on the reporter to provide some more info or test something. Let's call the former state "actionable" and the second state "needinfo". The first state is typically not explicitly communicated but the latter can be via different means, most commonly via a "needinfo" label. Labels are of course great because you can be explicit about what is needed and with our bugbot you can automate much of this.

    Alas, using labels has one disadvantage: GitLab does not allow the typical bug reporter to set or remove labels - you need to have at least the Planner role in the project (or group) and, well, suprisingly reporting an issue doesn't mean you get immediately added to the project. So setting a "needinfo" label requires the maintainer to remove the label. And until that happens you have a open bug that has needinfo set and looks like it's still needing info. Not a good look, that is.

    So how about we use something other than labels, so the reporter can communicate that the bug has changed to actionable? Well, as it turns out there is exactly thing a reporter can do on their own bugs other than post comments: close it and re-open it. That's it [1]. So given this vast array of options (one button!), we shall use them (click it!).

    So for the forseeable future libinput will follow the following pattern:

    • Reporter files an issue
    • Maintainer looks at it, posts a comment requesting some information, closes the bug
    • Reporter attaches information, re-opens bug
    • Maintainer looks at it and either: files a PR to fix the issue or closes the bug with the wontfix/notourbug/cantfix label
    Obviously the close/reopen stage may happen a few times. For the final closing where the issue isn't fixed the labels actually work well: they preserve for posterity why the bug was closed and in this case they do not need to be changed by the reporter anyway. But until that final closing the result of this approach is that an open bug is a bug that is actionable for a maintainer.

    This process should work (in libinput at least), all it requires is for reporters to not get grumpy about issue being closed. And that's where this blog post (and the comments bugbot will add when closing) come in. So here's hoping. And to stave off the first question: yes, I too wish there was a better (and equally simple) way to go about this.

    [1] we shall ignore magic comments that are parsed by language-understanding bots because that future isn't yet the present

    • wifi_tethering open_in_new

      This post is public

      who-t.blogspot.com /2024/12/a-new-issue-policy-for-libinput-closing.html