Status update, March 2022

Hi all!

My main focus these last few weeks has been a new project: goguma. It’s a new IRC client for mobile devices.

Conversation list Conversation view Conversation details Conversation view, dark

It’s quite different from traditional IRC clients, because I wanted to experiment with new ideas. I expect some people will dislike it, and it’s perfectly fine, there are other Android IRC clients. For instance, goguma is intentionally missing the concept of “server buffers”. The conversation list doesn’t group by network, it shows conversations with recent activity first. The username and hostname (emersion!emersion@source/staff/emersion) are never displayed, only the nickname and realname are. goguma focuses on first-class support for servers with recent IRCv3 extensions and bouncers, older servers might have a degraded experience.

The goals are outlined in the project’s README. Most notably, goguma will try to go easy on the battery, and conversations can be read without network access (existing Android IRC clients are pretty bad at these two things). The former is currently achieved by periodically being woken up by Android to check for new messages. This is better than the status quo but delays notifications and is still wasteful. I’m working on support for push notifications to hopefully completely fix this issue, but it’s quite an involved task.

At the moment, goguma supports the basic features you’d expect from a messaging app, and not much else. It shows notifications for new direct messages and highlights, supports infinite chat history scrolling, synchronizes read markers with other clients, and supports swipe-to-reply gestures. The yet-to-be-implemented features include displaying timestamps and events (topic changed, user joined, and so on) in conversations. There’s much to be done, for more information see the issue tracker.

Under the hood, goguma uses Flutter. Flutter is compiled to native code, so should have performance comparable to regular Android applications. The main reason for Flutter is that I’d like to eventually be able to run goguma on devices such as the PinePhone, without an Android emulator or similar. As a side effect, Flutter lets me work on goguma without having to spin Android Studio nor an Android emulator. Additionally, at the time I started playing around with the idea of a new IRC client, Android’s Jetpack Compose framework was still very unstable, so wasn’t really an option. Flutter also hides all slow operations behind async/await so there’s no need to offload work from the main thread to helper threads and services like in Kotlin (technically Kotlin supports this as well but it seems a bit hit-or-miss). Of course, Flutter has many downsides: app bundle size is larger, interactions with Android APIs (e.g. for notifications) require more boilerplate, and the native Android widgets aren’t used. Overall, I think mobile development is a “pick your poison” situation, much like web development, so I’m not regretting this choice so far.

On the whole, I’m pretty happy with my progress so far. It feels refreshing to finally have an IRC app which integrates well with Android and soju. If you’re interested, feel free to try it out, come ask questions on IRC and send patches!

In other IRC news, I’ve deployed a chat.sr.ht update yesterday. It should now have all of the fancy new soju and gamja features, including the soju.im/read extension to synchronize read markers between devices. Additionally, we now have a nice metrics.sr.ht graph displaying per-network connection counts for the bouncer. This helps us make sure we don’t hit connection limits.

Simon Zeni and Kirill Primak have kept wlroots busy by submitting a bunch of improvements and large refactorings for xdg-positioner and input devices. As wlroots grows older, we’re trying to minimize the number of breaking changes we force compositors to track, but these two APIs were very old and needed an overhaul.

A number of improvements have been implemented for the hut CLI tool. A hut init command walks users through the first-time setup. Thorben Günther has made numerous additions to the hut todo subcommand: labels and access control lists can be listed and managed by the tool, among other things. There is a ton of pending patches I still need to go through and review, but more on that next month!

Questions, comments? Please use my public inbox by sending a plain-text email to ~emersion/public-inbox@lists.sr.ht.

Articles from blogs I follow

Status update, May 2023

Unfortunately I had to take a little leave for personal reasons, so this update will be rather small. My main adventures last month were in Alpine packaging. My motivation was to set up a package repo for Anemos. Alpine's apk is pretty great, but I found …

via blogfehler!

Friday Updates

Team Updates A number of members of my team at Valve don’t blog, and I like to bring visibility to their work when I can. Here’s a quick roundup of what some of them have been doing, in no particular order.

via Mike Blumenkrantz


It kind of crept up on me. One day, sitting at my workstation, I stopped typing, stared blankly at the screen for a few seconds, and a switch flipped in my head. On the night of New Year’s Eve, my backpack was stolen from me on the train from Berlin to Amste…

via Drew DeVault's blog

Generated by openring