phone

    • chevron_right

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

      news.movim.eu / PlanetGnome · Monday, 27 January - 15:52

    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 · Monday, 27 January - 11:00 · 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 · Saturday, 25 January - 19:06

    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 · Thursday, 19 December - 13:36 · 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 · Wednesday, 18 December - 17:21 · 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 · Wednesday, 18 December - 03:21 · 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

    • chevron_right

      Jussi Pakkanen: Meson build definitions merged into Git's git repo

      news.movim.eu / PlanetGnome · Tuesday, 17 December - 16:43

    The developers of Git have been considering switchibg build systems for a while. No definitive decision have been made as of yet, but they gave merged Meson build definitions in the main branch. Thus it now possible, and even semi-supported, to develop and build Git with Meson instead of the vintage Makefile setup (which, AFAICT, remains as the default build system for now).

    The most interesting thing about this conversion is that the devs were very thorough in their evaluation of all the different possibilities. Those who are interested in the details or are possibly contemplating a build system switch on their own are recommended to read the merge's commit message .

    Huge congratulations for everyone involved and thank you for putting in the work (FTR i did not work on this myself).

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2024/12/meson-build-definitions-merged-into.html

    • chevron_right

      Lennart Poettering: Announcing systemd v257

      news.movim.eu / PlanetGnome · Monday, 16 December - 23:00 · 1 minute

    Last week we released systemd v257 into the wild .

    In the weeks leading up to this release (and the week after) I have posted a series of serieses of posts to Mastodon about key new features in this release, under the #systemd257 hash tag. In case you aren't using Mastodon, but would like to read up, here's a list of all 37 posts:

    I intend to do a similar series of serieses of posts for the next systemd release (v258), hence if you haven't left tech Twitter for Mastodon yet, now is the opportunity.

    • wifi_tethering open_in_new

      This post is public

      0pointer.net /blog/announcing-systemd-v257.html

    • chevron_right

      Federico Mena-Quintero: Outreachy internship for librsvg, December 2024

      news.movim.eu / PlanetGnome · Friday, 13 December - 22:27 · 1 minute

    I am delighted to announce that I am mentoring Adetoye Anointing for the December 2024 round of Outreachy . Anointing will be working on librsvg, on implementing the SVG2 text layout algorithm . This is his first blog post about the internship.

    There is a lot of work to do! Text layout is a complex topic, so rather than just saying, "go read the spec and write the code", Anointing and I have decided to have a little structure to our interactions:

    • We are having two video calls a week.

    • During the calls, I'm sharing my screen to walk him through the code.

    • I'm using my friend Abrahm's Pizarra and a Wacom tablet to have a "digital chalkboard" where I can quickly illustrate explanations while Anointing and I chat:

    Screenshot of Pizarra, an electronic blackboard

    • Conveniently, Pizarra also produces SVG files from whatever you doodle in it, so it's easier to include the drawings in other documents.

    • We are using a shared document in pad.gnome.org as a development journal. Here I can write long explanations, leave homework, link to stuff, etc. Anointing can put in his own annotations, questions, or anything else. I'm hoping that this works better than scrolling through a Matrix chat channel.

    I have big hopes for this project. Please welcome Anointing if you see him around the Rust ♥️ GNOME channel!

    • wifi_tethering open_in_new

      This post is public

      viruta.org /librsvg-outreachy-dec-2024.html