Status update, March 2019

Published 2019-03-15 on Drew DeVault's blog

My todo list is getting completed at a pace it’s never seen before, and growing at a new pace, too. This full-time FOSS gig is really killing it! As the good weather finally starts to roll in, it’s time for March’s status update. Note: I posted updates on Patreon before, but will start posting here instead. This medium doesn’t depend on a proprietary service, allows for richer content, and is useful for my supporters who support my work via other donation platforms.

Sway 1.0 has been released! I wrote a detailed write-up on the release and our future plans separately, which I encourage you to read if you haven’t already. However, I do have some additional progress to share outside of the big sway 1.0 news. In the last update, I mentioned that I got a Librem 5 devkit from Guido Günther1 at FOSDEM. My plans were to get this up and running with sway and start improving touch support, and I’ve accomplished both:

A picture of a Librem5 devkit running pmOS and sway

As you can see, I also got postmarketOS running, and I love it - I hope to work with them a lot in the future. The first patch for improving touch support in sway has landed and I’ll be writing more in the future. I also sent some patches to Purism’s virtboard project, an on-screen keyboard, making it more useful for Sway users. I hope to make an OSK of my own at some point, with multiple layouts, CJK support, and client-aware autocompletion, in the future. Until then, an improved virtboard is a nice stop-gap :) I’ve also been working on wlroots a bit, including a patch adding remote desktop support.

In other Wayland news, I’ve also taken a part time contract to build a module integrating wlroots with the Godot game engine: gdwlroots. The long-term goal is to build a VR compositor based on Godot and develop standards for Wayland applications to have 3D content. 100% of this work is free software (MIT licensed) and will bring improvements to both the wlroots and Godot ecosystems. Next week I’ll be starting work on adding a Wayland backend to Godot so that Godot-based games can run on Wayland compositors directly. Here’s an example compositor running on Godot:

I’ve also made some significant progress on aerc2. I have fleshed out the command subsystem, rigged up keybindings, and implemented the message list, and along with it all of the asynchronous communication between the UI thread, network thread, and mail server. I think at this point most of the unknowns are solved with aerc2, and the rest just remains to be implemented. I’m glad I chose to rewrite it from C, though my love for C still runs deep. The Go ecosystem is much better suited to the complex problems and dependency tree of software like aerc, plus has a nice concurrency model for aerc’s async design.2 The next major problem to address is the embedded terminal emulator, which I hope to start working on soon.

aerc2’s progress is a great example of my marginalized projects becoming my side projects, as my side projects become my full-time job, and thus all of them are developing at a substantially improved pace. The productivity increase is pretty crazy. I’m really thankful to everyone who’s supporting my work, and excited to keep building crazy cool software thanks to you.

I was meaning to work on RISC-V this month, but I’ve been a little bit distracted by everything else. However, there has been some discussion about how to approach upstreaming and I’m planning on tackling this next week. I also spent some time putting together a custom 1U I can install in my datacenter for a more permanent RISC-V setup. Some of this is working towards getting RISC-V ready for users to take advantage of - that relay is for cutting power to the board to force a reboot when it misbehaves - but a lot of this is also useful for my own purposes in porting musl & Alpine Linux.

Picture of a 1U chassis with a bunch of custom components within

One problem I’m still trying to solve is the microSD card. I don’t want to run untrusted code when that microSD card is plugged in. I’ve been working on some prototyping (breaking out the old soldering iron) to make a microSD… thing, which I can plug into this and physically cut VCC to the microSD card with that relay I have rigged up. This is pretty hard, and my initial attempts were unsuccessful. If anyone knowledgable about this has ideas, please get in touch.

Outside of RISC-V, I have been contributing to Alpine Linux a lot more lately in general. I adopted the sway & wlroots packages, have been working on improved PyQt support, cleaning up Python packages, clearing out the nonfree MongoDB packages, and more. I also added a bunch of new packages for miscellaneous stuff, including alacritty, font-noto-cjk, nethack, and Simon Ser’s go-dkim milter. Most importantly, however, I’ve started planning and discussing a Python overhaul project in aports with the Alpine team, which will including cleaning up all of the Python patches and starting on Python 2 removal. I depend a lot on Alpine and its Python support, so I’m excited to be working on these improvements!

I have some Sourcehut news as well. Like usual, there’ll be a detailed Sourcehut-specific update posted to the mailing list later on. With Ludovic Chabant’s help, there have been continued improvements to Mercurial support, notably adding integration as of yesterday. Thanks Ludovic! We’ve also been talking to some NetBSD folks who may be interested in using Sourcehut to host the NetBSD code once they finish their CVS->Hg migration, and we’ve been improving the performance for large repositories during their experiments on

There’s a bunch more going on with Sourcehut -, APIs, a command line interface for those APIs, webhooks, and more still - check out the email on later. That’s all I have for you today. Thank you for your support, and until next time!

This work was possible thanks to users who support me financially. Please consider donating to my work or buying a subscription. Thank you!

  1. A Purism employee that works closely with wlroots on the Librem 5 

  2. “aerc” stands for “asynchronous email reading client”, after all. 

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~sircmpwn/ [mailing list etiquette]

Articles from blogs I follow around the net

Working with Errors in Go 1.13

Go’s treatment of errors as values has served us well over the last decade. Although the standard library’s support for errors has been minimal—just the errors.New and fmt.Errorf functions, which produce errors that contain only a message—the built-in error …

via The Go Programming Language Blog October 17, 2019

Working full-time on open-source software

I’ll soon be working full-time on open-source software! I’m pleased to announce that I’m joining Sourcehut. Huge thanks to Drew DeVault for making this possible. I also want to thank everyone supporting Sourcehut and allowing it to grow. Being able to do …

via emersion October 15, 2019

Updates in September 2019

This post gives an overview of the recent updates to the Writing an OS in Rust blog and the used libraries and tools. I finished my master thesis and got my degree this month, so I only had limited time for my open source work. I still managed to perform a…

via Writing an OS in Rust October 6, 2019

Generated by openring