Luke T. Shumaker » imworkingon

Luke is working on
improving the GNU/Linux ecosystem

If you find this work valuable, please consider sponsoring me.

Top themes 🔗

#ARM : ARM support

Not that folks can't use GNU/Linux on ARM (obviously, the Raspberry Pi has been a huge success), but there's still a lot more friction to using GNU/Linux on ARM compared to x86. I'm working on that.

#GI : GObject Introspection

GObject Introspection (which is a terrible name for what it is, btw) is a cross-(language-runtime) object system. GObject was an object system for C that game out of GTK+, and then GObject Introspection was created as a way to specify the ABI for working with an object, so that GObjects could be used from other languages. I think that GObject Introspection is a really cool technology that can be the basis of reducing friction between languages, but it needs better/more-ubiquitous tooling.

#docs : Documentation

I'm working to improve documentation for GNU/Linux, but more than that I'm working to improve the forms of documentation that more skilled technical writers might be afraid or incapable of working on: --help text, generated documentation, and auditing documentation against the source code to make sure that it is accurate and complete.

In-progress work 🔗

golang.org/x/net is a set of supplementary Go networking libraries. These are used not just by programmers doing advanced networking things in Go, but are also used internally by the Go standard library.

Last updated: by gopherbot
Status: open

The functions html.EscapeString and html.UnescapeString were once the same between "golang.org/x/net/html" and std "html", but have been slowly drifting apart since 2012. This PR ports over documentation and performance improvements from std to x/net.

This will provide a consistent base for fixing bugs in html.UnescapeString that were found when working on the documentation parser in gotk4.

The Go programming language.

#Go
Last updated: by gopherbot
Status: open

The functions html.EscapeString and html.UnescapeString were once the same between "golang.org/x/net/html" and std "html", but have been slowly drifting apart since 2012. This PR ports over documentation and performance improvements from x/net to std.

This will provide a consistent base for fixing bugs in html.UnescapeString that were found when working on the documentation parser in gotk4.

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated:
Status: open

This PR adds tests for the earlier ARM zImage work. This was split off into a separate PR from the main ARM zImage PR because the maintainers had concerns about merging binary test files (very understandable, especially given the recent XZ issue!), but didn't want to hold up the main work.

gotk4 is a project that burries the lede: yes, it is a set of Go bindings to GTK4. But (IMO) more interestingly, ./gir/cmd/gir-generate is a tool for generating Go bindings to GObject Introspection (GI) libraries from the .gir files describing the library.

Last updated: by LukeShu
Status: open

The not-quite-markdown format that .gir files use for documentation is under-specified and hard to parse. Right now I'm focusing on how to properly parse it, so that we can have top-notch language-specific documentation for GI libraries.

This PR is laying the groundwork for the new parser.

Ruby's standard JSON gem (which comes bundled with the core Ruby distribution!).

Last updated: by LukeShu
Status: open

ruby-json contains code that is not Free under the FSF's definition, not Open Source under the OSI's definition, and not GPL-compatible. This has coused much consternation among folks who care about any of those 3 things.

This PR replaces that non-Free code with Free code, removing friction for Ruby users on GNU/Linux distros that care about those 3 things.

Completed work 🔗

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated:
Status: merged, not yet in a release

To do its work, mkinitcpio needs to know the version number of the Linux kernel that it is generating an image for; the normal way that it knows this is to sniff the version number from the kernel file. However, it fails to sniff the version number from ARM zImage kernels, which means that Arch Linux ARM and Parabola for ARM need to resort to hacks to get mkinitcpio to work right.

This PR removes that friction by teaching mkinitcpio to understand ARM zImage files.

Sponsored-by: Umorpha Systems

The file tool sniffs a file to tell you about the file's format.

Last updated:
Status: merged, not yet in a release

This PR improves its ability to detect information about Linux kernel ARM zImage files.

Liberapay is a recurrent donations platform to help fund creators and projects.

Last updated: by Changaco
Status: merged+deployed

When managing your profile, Liberapay nominally supports using your Libravatar federated avatar as your profile pic. However, it only loads avatars from the libravatar.org instance; not actually supporting federation. This PR properly implements the Libravatar federation API to load avatars from any instance.

The file tool sniffs a file to tell you about the file's format.

Last updated:
Status: merged, not yet in a release

To do this, file reads a "magic" file that describes the magic numbers that it might see in a file. This PR fixes a mistake in the magic(5) manual for writing such files.

The mkinitcpio tool generates init-ramdisk images to boot GNU/Linux systems.

Last updated:
Status: merged, released in v38

One of the things going on in the secure-boot world is moving toward "Unified Kernel Images" (UKI), which are when the kernel and the init-ramdisk are bundled together into a single file to reduce the risk of a compromised init-ramdisk being able to compromise a secured kernel. This PR reduces friction when using mkinitcpio to generate images directly as UKI without generating a plain init-ramdisk first.

Sponsored-by: Umorpha Systems

EROFS is the Enhanced Read-Only File System, a successor to SquashFS.

Last updated:
Status: merged, not yet in a release

This patchset improves the --help documentation and man-pages of the EroFS userspace tools, and reduces friction by having fsck.erofs accept common command line flags that fsck implementions for other filesystems take.

Sponsored-by: Umorpha Systems

gotk4 is a project that burries the lede: yes, it is a set of Go bindings to GTK4. But (IMO) more interestingly, ./gir/cmd/gir-generate is a tool for generating Go bindings to GObject Introspection (GI) libraries from the .gir files describing the library.

Last updated: by diamondburned
Status: merged, released in pkg/v0.0.6

This PR makes it easier to contribute to gotk4 by improving developer documentation and automated checks.

Daily statuses 🔗

Posted daily on Mastodon with the #DailyStandup tag.

Calendar view
Su M Tu W Th F S
April 2024 28 29 30 1
21 22 23 24 25 26 27 April 2024
14 15 16 17 18 19 20
7 8 9 10 11 12 13
March 2024 31 1 2 3 4 5 6
24 25 26 27 28 29 30 March 2024
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
February 2024 25 26 27 28 29 1 2
18 19 20 21 22 23 24 February 2024
11 12 13 14 15 16 17
4 5 6 7 8 9 10
January 2024 28 29 30 31 1 2 3
21 22 23 24 25 26 27 January 2024
14 15 16 17 18 19 20
7 8 9 10 11 12 13
December 2023 31 1 2 3 4 5 6
24 25 26 27 28 29 30 December 2023
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
November 2023 26 27 28 29 30 1 2
19 20 21 22 23 24 25 November 2023
12 13 14 15 16 17 18
5 6 7 8 9 10 11
October 2023 29 30 31 1 2 3 4
22 23 24 25 26 27 28 October 2023
15 16 17 18 19 20 21
8 9 10 11 12 13 14
1 2 3 4 5 6 7
September 2023 24 25 26 27 28 29 30 September 2023
17 18 19 20 21 22 23
10 11 12 13 14 15 16
3 4 5 6 7 8 9
August 2023 27 28 29 30 31 1 2
20 21 22 23 24 25 26 August 2023
13 14 15 16 17 18 19
9 10 11 12

What I did yesterday:
- Fixed bugs in my GI-DocGen parser.
- Left the fuzzer running for a few hours to find more bugs.

What I'm doing today:
- Some website-handoff stuff for Umorpha
- Fixing more Gi-DocGen parser bugs.

What I did on Friday and over the weekend:
- Got the Python-Markdown compatible parser for the GI-DocGen thing passing its tests!

What I'm doing today:
- Fixing a CSS bug on narrow-but-not-too-narrow screens on lukeshu.com/imworkingon/ and adding last-updated-by info to the page.
- Figuring out how HTML5 deals with \x00 bytes, for the purposes of the GI-DocGen parser.

What I did yesterday:
- Got my GI-DocGen parser to handle implied-end-tag cases, getting it down to just 3 "types" of test failures.

What I'm doing today:
- I'd really like to say "wrapping up this parser, there are just a few bugs left!" but if the bugs were easy, I'd have already fixed them… so more realistically…
- handling HTML5's "no nested <a> elements" rule

If you'd like to fund this work to improve GI tooling and other GNU/Linux things: lukeshu.com/sponsor/

What I did yesterday:
- Dropped testing-compatibility hacks from the GI-DocGen parser that enable the tests to get the exact newlines as the old Python parser; instead the tests now normalize whitespace between block elements.
- Implemented the HTML5 "block element implies '</p>'" logic in said parser.

What I'm doing today:
- Figuring out how to handle more implied-end-tag cases.
- Figuring out how to handle the "no nested <a> elements" rule.

What I did yesterday:
- Fixed a mistake in golang.org/cl/580855 (my backport of improvements from std "html" to "x/net/html")
- Fixed the "&nLt;" and "&nGt;" bug in html.UnescapeString (but I'm holding off on submitting the bugfix CL(s) until the sync CLs land — github.com/LukeShu/net/tree/lu if you want to see it)
- Fixed my website on mobile

What I'm doing today:
- Contemplating the horror that is HTML's nesting rules in relation to Python-Markdown (Gi-DocGen )

I'm seeing the pattern that I work on stuff during the weekend, then run out of steam Monday afternoon, then get jack shit done on Tuesday and actually rest on Tuesday.

Anyway,

Yesterday:
- Put up golang.org/cl/580896 and golang.org/cl/580855 to sync code between "x/net/html" and std "html"
- Got the HTML entity escaping rules in the GI-DocGen parser worked out.

Today:
- prolly not a lot
- Figuring out how to implement HTML5's nesting rules in the GI-DocGen parser

What I did on Friday:
- Got my GI-DocGen parser normalizing inline HTML per the HTML5 rules

What I did over the weekend:
- Added a viewer for my mastodon posts to lukeshu.com/imworkingon/ , with a cool calendar view
- Worked on more bugs in the GI-DocGen parser
- Started on a PR to fix html.UnescapeString fosstodon.org/@lukeshu/1111014

What I'm doing today:
- Addressing the drift between Go "golang.org/x/net/html" and std "html"
- More GI-DocGen parser bugs

Yesterday:
- I spent the day reworking the GI-DocGen parser's tests, because I realized a lot of the failures I was hitting were quirks in my test suite, not bugs in the code-under-test.

Today:
- Getting the GI-DocGen parser to properly normalize inline HTML, as is now evident that it has to do based on the new test setup.

Yesterday:
- Add "released" detection to lukeshu.com/imworkingon/
- But mostly didn't get to work on things yesterday.
- My mkinitcpio ARM zImage PR got merged!
Today:
- A few more incremental improvements to the imworkingon page
- Chugging through fuzzer-found bugs in my GI-DocGen parser

Friday:
- Got the GTK-Doc/GI-DocGen markdown parser updated to use Nix Flakes and rebased up to gotk4 HEAD
- but didn't really get anything else done

Over the weekend:
- I made lukeshu.com/imworkingon/ to have a cool tracker of what I've been working on (I ack that the page is fairly rough at this point). If you find any of that work valuable, please consider sponsoring me.

Today:
- Responded to more feedback on the mkinitcpio ARM zImage PR
- Honestly, IDK, too many choicies

Yesterday:
- Responded to more feedback on various PRs.
- At , listened to a new class from David of the School
sofree.us/

Today:
- Figure out Flakes enough to rebase the gotk4 markdown parser up to HEAD (since I started my branch, gotk4 has switched from `.nix/default.nix` to Flakes)
- Rather than grinding at fuzzer-found bugs in the gotk4 parser, might get some other (Linux? FUSE? EroFS?) docs improvements fired off?

Yesterday:
- Worked on the gotk4 gi-docgen markdown parser.

Today:
- Responding to more feedback on the mkinitcpio PR
- Responding to feedback on the preliminary gotk4 docs PR.
- Working through more test failures on the gotk4 gi-docgen markdown parser.

Yesterday:
- Responded to some feedback on the mkinitcpio zImage PR
- Responded to some feedback on the @Liberapay @libravatar PR. It is now merged and deployed! Federated avatars now work on Liberapay!
- Kept working on gotk4 GTK-Doc/GI-DocGen markdown parsing.

Today:
- Responding to more feedback on the mkinitcpio PR.
- Still working on the GI-DocGen parser.

Friday:
- who even remembers

Today:
- I spent some time yesterday finally coming back to parsing GTK-Doc/GI-DocGen markup, and I think I'm going to let that be my focus for today.

Yesterday:
- I submitted proper @libravatar federation to @Liberapay github.com/flori/json/pull/567

Today:
- Benchmarking the changes I made to the gem to make it /GPL-compatible. Preliminary results are that my new code is faster than the old proprietary code! github.com/flori/json/pull/567

Yesterday:
- Pushed out libretools v20240403 lists.parabola.nu/pipermail/de ; support for makepkg v6.1!
- Spent way more time than expected reviewing Bill's contributions to libretools

Today:
- Implementing proper @libravatar federation for @Liberapay github.com/liberapay/liberapay
- More libretools contribution reviewing

Yesterday:
- Didn't get through any of my stated goals, but
- I did find an issue in where some package files that are mentioned on the .db file aren't on the mirrors
Today:
- Actually doing a new libretools (see: bug#3622)
- Realistically, I don't think I'm going to be submitting my kernel config-docs patches today, but that's my "if I'm not making progress on the other thing" task today.

Since Thursday:
- Submitted a non-draft version of my PR to make mkinitcpio correctly handle ARM zImage files

Today:
- Updating libretools to work with the new makepkg.
- Getting some kernel devdocs polished up to submit upstream.

Yesterday:
- Figuring out what I want my ruby-json benchmark strategy to be.

Today:
- My script for generating kernels for the mkinitcpio tests has some trouble with kernels v6.0 and older, so dealing with that (I want to go down to v4.15)
- Continuing with ruby-json benchmarking

What I did yesterday:
- Update my mkinitcpio detect-ARM-zImage-files patch to properly deal with more kernel configurations, adding tests for them
- Submit improvements to file(1) and fixes to the magic(5) man-page
- left a script running overnight testing the mkinitcpio patch against a bunch (thousands) of historical kernels...

What I'm doing today:
- ... still leaving that running
- benchmarking the ruby-json replace-CVTUTF PR

What I did yesterday:
- Working on a system for building firmware images for embedded devices/appliances based on (reviving osi-mk from git.parabola.nu/~lukeshu/notsy)

What I'm doing today:
- Still that
- Deploying a git server for Umorpha
- new libretools?

Blockers/concerns:
- I just cant *believe* that hacks I wrote 5 years ago have bit-rotted.
- Parabola's systemd is a version behind
- Parabola's grub is old

:

What I did yesterday:

- Spent some time rebasing things from testbench mkosi up to current mkosi to submit upstream
- Order another phone as a dev tool for my fork

What I'm doing today:

- Push out a SignalApp build
- First day officially working for Umorpha Systems
- Figuring out a good process for building OS disk images (with mkosi?)
- ... deploying a Gitea server appliance
- new libretools version?

Concerns/blockers:

- none?

- Because I was wanting to borrow some code from it, I fixed bitrot in git.lukeshu.com/2git/cvtutf-ma which is the scripts that make the git.lukeshu.com/2git/cvtutf repo, which is the history of the CVTUTF library.

- The last 3 days have been 100% dedicated to finding Olive who pushed out a window screen Saturday night/Sunday morning. She's back home safe now!!!

I don't have an excuse for last week tho.

- Investigated a bug with kmod v31 and v6.3.3 not playing nice on . No conclusion yet.

- workin on the gidocgen parser
- improving btrfs-rec rebuild-mappings

Yesterday:
- So I think the gi-docgen HTML parser is finally bug-free? Fuzzer hasn't found any issues in a while.

Today:
- I saw that @orsinium published his enum library (github.com/orsinium-labs/enum), so I took a peek at it and filed a couple minor PRs :)
- Work on improving the btrfs-rec rebuild-mappings algorithm

Yesterday:
- Had a not very productive day working on the gi-docgen parser

Today:
- Having a very productive day working on the gi-docgen parser. I think I have basically all the parts working, and now I just need to tie things together.

Concerns/blockers:
- idk

- Ugg I'm the worst and haven't been posting standups this week

Today:
- Try to get the gi-docgen html block processor working
- Fuss with MMS

Blockers/Concerns:
- ?

Yesterday:
- Slept 'til 3pm
- found an issue with the gi-docgen blockparser (hence the toots)
- Read Umorpha's mission+values doc
- put the LED in my lightsaber that I drilled the hole for in May
- SIM for testing came, so used it to play w/ my

Today
- Donut's bday! 🐱😍🎂
- fixed the blockparser
- meet w/ Umorpha
- put on router for mom
- put new HDDs in the build server (assuming they arrive)
- so many emails

Concerns
- idk

There is no there is only sleep.

What I did yesterday:
- Mostly just napped
- My aluminum wire came so I spent some time re-doing the brim of my wizard hat

What I'm doing today:
- Ugg, overnight the fuzzer found another issue in the blockparser. Fixing.
- Rework the first part of the btrfs-rec rebuild-chunks algorithm

Blockers/concerns:
- none?

What I did yesterday:
- I thought I got the gi-docgen blockparser working correctly

What I'm doing today:
- Actually the fuzzer found some issues in the night; fixed them
- Proceeding to work on the inlineparser

Concerns/blockers:
- Low energy today. Tempted to just screw off and play with my new Flipper Zero? Or take a nap?

Today was weird because sleep.

What I did Sat/Sun:
- Ordered another SIM card to more easily test this MMS issue
- build server locked up again, idk why. But: 1. SMART errors; so new drives will be here Thursday 🤞 2. Fixed errors from hackers-update.service and shadow.service
- Worked on the gi-docgen parser

What I did today:
- Worked on the gi-docgen parser. Still fuzzing running, but it's looking like I've finally got the blockparser behaving correctly 🤞

No yesterday because I didn't sleep right and spent the day in a half-asleep haze.

But on Thursday I:
- Dealt with the build server overheating
- Presented on Parabola at
- Got a good log trace of the MMS bug in my fork of
- Ordered a Flipper Zero

Today I'm going to:
- Looks like the Parabola build server died because the OOM killer made some bad choices? Looking into that.
- Emails
- Try to wrap up the gi-docgen parser, and PR that into gotk4

What I did yesterday:
- Fight with the Signal build system and Android app signing and dumb user-hostile bullshit
- Read docs on Android telephony

What I'm doing today:
- Work on LUG presentation, give LUG presentation

Blockers/concerns:
- My brain is garbage

What I did yesterday:
- Flew back home from Indianapolis after
- Started updating my fork of from v6.26 to v6.27

What I'm doing today:
- Track down a bug with MMS group messages in my fork of
- Sync with Flynn
- Prepare my presentation on / that I'm giving at the Boulder LUG tomorrow.

Blockers/Concerns:
- I hate Gradle so much