First off, I want to apologize for the radio silence on this working group. It’s been harder than I anticipated to come up get a good crop of “start issues” and so forth. In general, I feel like we’re still trying to figure out the best way to get a “working group” up and going.Therefore, I thought, if I can’t figure this out on my own, why don’t we all start talking it out together? Hence this thread!
There are a few things that have been puzzling me. I’ll write a bit about topics, but mostly I want to hear from all of you.
- Communication places
- How can we as a group best stay in sync?
- How best to proceed with changes?
We have the gitter channel. I’ve just creaed a category on internals:
Since we’re spread across so many time zones, let’s try to make good use of the message board for communication. In particular, you can customize notifications for things in this category.
How can we stay in sync?
Most teams wind up with some kind of regular “check-in”, to pass news, stay in touch with what poeple are up to, or ask questions. I think we should do the same. However, here are a few challenges:
- Time zones: we have a lot of them!
- Language barriers: voice calls can be tough on folks for whom English isn’t their first language.
I was thinking we could therefore try to do one of two things (or both!):
- Weekly check-in on the gitter channel at some regular time (optional)
- We can jump on the gitter channel to sync up. I imagine a relatively short, triage-like meeting. We would then post the notes and minutes to an internals thread for others to comment on async.
- Weekly check-in on an internals thread
- We can have a dedicated thread. I can try to ping folks every week, say on Monday, and hopefully people can leave updates in a 24 hour window?
How best to proceed with changes?
So, I definitely have ambitious plans, and I’m trying to figure out how best to “stage” them. There are a few challenges I see:
Explaining the design I have in mind. My plan here was to write chapters in the rustc-guide. I still want to do this, and am hard at work on it, but it’s been hard to find time for that. I could imagine also writing up an RFC, but I feel like our experience on the compiler team has been that compiler RFCs are not necessarily worth the trouble. Maybe I should just try to write-up some more things and cc this group for feedback? And/or post drafts/links on internals?
Hashing out some of the open questions and a transition plan. The above is really looking at “big picture” questions. But there are also a bunch of smaller things, like how to actually do the transition. Even if you don’t know the compiler really well, I think it’d be pretty useful to be getting feedback on these questions. For one thing, it will help all of us to learn, since if you ask a question, then those who know more will have to explain the answer. But secondly, even a rubber duck can be a pretty useful role to play!
Land the canonicalization PR. One of the first steps that I think needs to get done is to land https://github.com/rust-lang/rust/pull/48411, which adds the idea of canonicalization and is kind of a pre-req to most of the design I have in mind. It’s been a bit stalled trying to overcome some small performance hits in a few cases – I believe these are due to the fact that we’re not using the new design very broadly yet, and hence we’re populating two sets of caches. (I could probably use some help doing profiling and making improvements here, if someone is interested – I only get a few hours a day to code, so I have to have things blocked on me.)
Finding good “startup” issues to help people get acquainted with the trait checker. I haven’t done a thorough search of the GitHub repo, that is the obvious place to start. I will endeavor to make time for this. I’ve found it’s a very time confusing – but very useful! – thing to do. I suspect there will be some good candidates in error reporting – and, incidentally, that is one of the “sticky widgets” with transitioning to a new system, so I’m wondering if we can do some refactoring there.
OK, to avoid this message being too overwhelming, I’m going to end it here. Please give feedback, I’ll try to add more thoughts later.