Today is Thursday, and Thursday is bug-triage day. Each day of the week gets assigned to one of the core paid Rust contributors to go through the bug database and triage newer bugs as well as reviewing older ones, looking for duplicates, closing obsolete bugs, and so on. When there's any time left, I grep for the string "FIXME" in the code -- not everybody uses "FIXME", but there's been more than enough FIXMEs to keep me busy -- which usually denotes either a minor issue that can be fixed in minutes (because it was blocked on another compiler feature that's since been completed), or something subtle that unexpectedly ends up taking days. I
try to nudge myself towards just filing a new issue in the issue tracker (the goal is to have every FIXME in the code map to at least one issue in the issue tracker), but it's hard to resist that "I can do it!" urge that usually sends me too deep down into some rabbit hole.
I've been
keeping track of what bug ranges I review, and today I went over the most recent 34 issues. I should probably start going over the older issues again, since it's been six weeks since I looked at some of them and probably some things have changed. It's always a bit difficult to figure out who to assign bugs to, since our team of paid contributors is still pretty small, and I generally don't want to drop work non-consensually on the volunteer contributors. Assigning milestones is a bit random as well, but I figure if I make a mistake, it'll eventually get noticed in a group meeting and we'll move something to a different milestone. I wish github's issue tracker had a notion of priorities ("trivial", "important", "crucial") as well as milestones -- since some of the issues arising from FIXMEs, especially, can be pretty trivial, but I still want them to be on the record -- but it doesn't. So if at all possible, I try to make sure everything is milestoned (except for RFCs, enhancements, and "wishlist" items -- I see "wishlist" as like "enhancement", but even more optional); I also try to make sure bugs are assigned (using "git blame" to figure out who last touched the relevant bit of code, although it's misleading for occasions when we move directories around and do big reformats), though I'm more ok with leaving things unassigned than unmilestoned. (After all, unassigned bugs are openings for new contributors to get involved!)
Then I started in on FIXMEs. Most of the ones today were either comments I didn't understand, or quickly proved to be way too complicated (like, when I removed an unused constant -- should have been trivial -- promptly causing a scary memory corruption error, probably because the RTS also depended on the "unused" constant). So I filed issues. There were a few minor issues that I could fix quickly, and that was satisfying, like moving code over to use
new for loops. When I left the office I had gotten started on one of those bugs where you pull the thread in the sweater and the entire thing unravels (changing some constants from int-type to unsigned-int-type in the back-end -- I think it should be done, but it's death by a thousand type errors). I won't detail the other bugs I fixed and filed, because that would, maybe, be too much detail even for
this blog. I find joy and satisfaction in mundane, routine work. It's something I can do, and it's always still there for me no matter how long I've been away. And even though my highfalutin job title is "Research Engineer", it's my feeling that most of the effort involved in turning research into a thing that people can use (whether that thing is a programming language, or a compiler for it, or a browser implemented in the language)
is the mundane, routine details that you're just Not Allowed to be too interested in when you're a grad student. Something feels right to me about giving myself over to that unglamorous work now. So while I might say that my blog posts are boring, that's just because I don't automatically expect other people to care just because I care. I've been many things at work over the past few months, but I haven't been bored.
...Except when something's recompiling and I don't have the energy to context-switch when I know I'll have to context-switch again in 2 or 3 minutes. Then I'm bored.