User avatar
Pyrex, nightsworn alchemist @pyrex@dragon.style
3y
Rust, long I want to write about an event that happened a few months ago, and I want to express my incredible disappointment with the Rust Project in the process.

You may remember:

- Manishearth, a Rust devtools lead (Manish Goregaokar) invited ThePhD, the editor of the C standard (JeanHeyd Meneide) to work on Rust reflection
- ThePhD was invited to deliver a keynote at RustConf
- Josh Triplett, a Rust language lead, informed RustConf staff (Sage Griffin, Leah Silber) that unnamed people (David Tolnay, maintainer of syn) inside the Rust Project had decided to reverse the decision to give ThePhD a keynote for undisclosed technical reasons
- ThePhD noped out of any further work on Rust

This is the simplest account. I know a few people would dispute details, although I think they would all agree to this summary. I want to include a few examples of wrinkles here:

- Josh would dispute that the group ever reached a consensus to remove ThePhD
- The RustConf staff express that they should have refused to take orders from Josh
- David Tolnay attributes the decision to dekeynoteize the talk to Josh, although David Tolnay also did not think the talk should be a keynote.

----

Afterwards, the Rust leadership closed ranks to avoid revealing the names of those involved.

They released a few public statements expressing regret, which I believe were sincere, and Josh Triplett resigned from his talk at RustConf. He claimed he was resigning from Rust project leadership.

(He is now a language and library team member, but not a lead.)

They refused to release the names of anyone involved, citing fear that those people would be harassed.

----

Before I get any further on this, I need to cover something that everyone else who opined on this glossed over. What I want to cover is that ThePhD's proposal was reasonable.

Like, "literally had already produced things that had been merged into Rust master at the time the keynote was canceled," reasonable.

Their writeup is actually incredibly good and you should read it before you opine any more because it will strongly influence your opinion on whether they deserved a real response:
soasis.org/posts/a-mirror-for-rust-a-plan-for-generic-compile-time-introspection-in-rust/ .

They're proposing Introwospection, a system that would replace significant parts of
syn, a macroing library for Rust; and serde, Rust's serialization/deserialization library, both written by David Tolnay.

(Note that neither syn nor serde is an introspection library, but a serialization/deserialization library effectively incorporates an introspection library once it starts having to operate on arbitrary types.)

Effectively, JeanHeyd's article starts with:

- what would happen to Serde in a world where Introwospection is merged.
- Introwospection's design goals, which are effectively the same as syn/serde's but with a greater desire to operate on foreign code
- why designs with a greater dependency on runtime tracing are a bad idea

Basically every other reflection/introspection library for Rust gets evaluated here, in reasonable and favorable terms. I feel the need to emphasize it is an incredibly fair dissection that acknowledges the design goals and constraints of every alternative project.

From there, ThePhD presents escalating versions of Introwospection, presented in a way designed to invite easy comparison to
syn/serde and to reflect, using an incrementally greater number of new language features.

In other words, you're meant to understand that the system is on the complicated side, but on a similar level to
syn/serde, and can be built with varying levels of language support. And you're invited to compare it to Rust's very weak builtin introspection tool, Any, which gets a few things right.

The overall impression that is left is that Rust has a strong existing habit of implementing things that look very much like the features that would need to be included as support for Introwospection, and that Rust library designers are gradually consolidating support behind designs that look like it.

I think it's very important to read the article specifically because a lot of the commentary on this episode implies that ThePhD's idea was particularly radical and unreasonable, or that it wasn't "a direction that Rust developers are willing to go." If anything, it makes itself look downright conservative.

Others have have responded to this drama have acted as if the technical merit of ThePhD's design might be high, might be low -- it's all a matter of opinion, and as if ThePhD's design ultimately has little value because it can't be adopted.

That's all false -- it's a design that justifies itself very well in terms of concerns the community evidently has, and it's an exhaustive survey of other people's efforts to do the thing.

It's not only a workable project, but it's all the groundwork anyone else would ever need to do if they wanted to make their own crack at the exact same problem.

And you certainly shouldn't consider it a mere matter of opinion when some people's opinions -- project leadership -- matter way more than others. Ultimately someone is not going to get what they want on this one. Even if it were a matter of opinion, which it's not, the process to review it should involve some conscientious process of weighting those opinions. Not private tribunals.

----

So what you have in alternative to this is a (legitimately good) library ecosystem based on David Tolnay's web of projects.

I don't think you can get around mentioning this -- David Tolnay's code is not reviewed. David Tolnay commits into master regularly. David Tolnay sometimes commits code that doesn't have tests.

You will even see cases on GitHub where David Tolnay commited code directly to master that broke the test suite:

github.com/dtolnay/syn/commit/94439aae5fe52ea9d753cef7e33262122e4022b5

And David Tolnay recently broke serde on a whole bunch of people's machines by making it depend on a binary version of
serde_derive, its set of procedural macros based on syn, which he had built on his local machine and uploaded to a server.

I believe David Tolnay is trying to release really good code, but I also think these are the behaviors of someone who quite enjoys being a central, load-bearing figure and who likes to be able to make changes basically without review.

I am saying he likes those things because he is literally doing those things and has made no effort to stop.

Now, in C++, you used to have a situation where a huge number of valid uses of the language were gated behind Boost, a set of libraries made by an independent group of somewhat rude people who like not being reviewed, and sure enough a lot of that was merged into the core language and made way less janky.

I don't see ThePhD's proposal as significantly different from that, which leads me to believe it is a literally good idea. But I can imagine it being incredibly threatening to a serial BDFL who sometimes enjoys public exercises of his power.

I also think it's incredibly obvious that something resulting from ThePhD's survey, if not ThePhD's actual proposal, would be a great improvement over the current implementation of serde for many users of the language.

I cannot say with literal certainty what David Tolnay's reasons for objecting to ThePhD getting a keynote were, but I suspect they are ego-related.

----

So, to start my post-mortem: I think this is racist.

I'm calling it racist because JeanHeyd is a highly qualified Black person who deserved technical comment, and David Tolnay evaded doing that by abusing a bureaucratic structure to take petty revenge.

I absolutely call bullshit on the idea that there is a technical explanation that would have merited the response ThePhD got -- not just because the response they got was rude and pointedly offensive, but because the work was excellent.

If I had to choose between a world where developers behaved like ThePhD and a world where they behaved like David Tolnay, I would choose a world where they behaved like ThePhD.

It was also racist when the bureaucratic structure decided to operate outside of its ordinary rules specifically to target ThePhD. It should not have been possible for David Tolnay to get Josh Triplett to write Sage and Leah to get them to target ThePhD. Someone should have stood in the way of that.

It was racist when the Rust Project refused to assign responsibility for this action to any specific person, even though it appears that one person basically end-ran the entire process to accomplish it. It was very unfortunate that eventually Josh Triplett resigned apparently to end the drama.

I am belaboring the question of whether it is racist because my experience was that representatives of the Rust Project repeatedly denied that it was racist. This is something that a lot of community members tolerated because they accepted that there must have been closed-door reasons that would have justified it, and then later from inertia when those reasons never materialized.

Is the racism the only thing that is fucked up about it? No. But I refuse to stop asserting that, in part because it's obviously true and also because I refuse to support the norm that a behavior is "racist" only when there's a smoking gun in that the racist in question has publicly acknowledged his intent.

While I believe that Project staff do not actively believe in that norm, I believe the Project benefited from this norm and made public statements intended to invoke it when they felt that it was a valid way to defend themselves.

----

There are a few responses I am expecting to the set of claims I'm making.

One of the responses I'm expecting is that it isn't, legalistically speaking, "racist" -- David Tolnay would have done the same thing to a white developer who were running the keynote.

We don't live in that world. I refuse to presuppose that someone who has targeted a Black person for discriminatory behavior did so for colorblind reasons, especially when the evidence rules out merit as a factor.

I also think that it is extremely likely ThePhD would have had more institutional support if they were white. I don't know how this would have played out -- there's a million little places where they've probably been treated slightly shittier for reasons that are totally deniable, and you add that up and you get an overtly discriminatory outcome.

You've got a case where the one Black guy is an outsider and the nonwhite guy who sponsored them is 100% insulated from the process that touched them.

Even if David Tolnay is not a card-carrying racist, you have a case of a guy exploiting the outcomes created by a clearly racist system to create a worse outcome for a Black person who he apparently personally disapproves of for non-technical reasons, who then covers himself with the figleaf of "It was a technical disagreement."

You should know by now that if it were a genuine technical disagreement then the technical disagreement could have been litigated publicly. It could have been instantiated in some form other than the cryptic and anonymized rumor that someone in a closed chatroom no one else in the world has access to made some pretty good arguments one day.

There's a second argument I'm expecting people to make when litigating that the horrible action -- unjust, rude, whatever -- wasn't "racist." I'm also expecting people to assert that it wasn't "racist" per se because there's nothing else that could have been done.

Like, I'm expecting people to say that Sage and Leah were just doing what they could, that they would have replied the same way to an arbitrary dictate about a white developer.

And I'm especially expecting people to argue that if David Tolnay were to have been held accountable -- by real name or similar -- the eventual harassment would have been worse. I'm expecting that category of person to argue that there is no alternative other than keeping the actor secret.

I would say that, one, if nothing can be done other than something that produces a racist outcome, then you're describing a system that is racist. The idea that people have to choose racism over non-racism to do a racist thing is fucked up.

But I'd also argue that, no, there is another option in this situation. Anyone who saw David Tolnay take this action could have held him accountable. Taking collective responsibility in this case isn't really taking responsibility at all, because the only people who are moved out of power are the people who are non-shitty enough to publicly take the fall.

(Like, you can argue that apologies aren't about getting even or making sure someone faces consequences. But part of making amends is taking some step to make sure the harm can't happen again, and from what I can tell that basically was not taken.)

I don't know how badly Josh Triplett was harassed. I know he's still here. He lived. If you're going to sacrifice a white guy to the angry masses, why not sacrifice the guy who actually did it?

It makes absolutely no sense to me to run an organization in such a way that someone can take a flagrantly racist action -- which I hope I've convincingly established this was -- and absolutely no recourse is possible. I can understand doing so before the racist action takes place, but the idea of effectively resetting the scores because the management wasn't paying enough attention the first time is maddening.

Like, David Tolnay still holds a position on the Library API team.

----

EDIT: David Tolnay has written opinions on this situation that are here. Be sure you read his thing too:
gist.github.com/dtolnay/7f5da4bf057b7c6d0d00c6bed3060b96 .

In short, his claims are that his CoI isn't relevant, that Josh Triplett is also at fault, that the Language Team was recently cut out of an Inside Rust blogpost that they and readers disagreed with and that he feared this would be a repeat of that situation.

He claims he didn't know JeanHeyd had already been offered a slot and been okayed on this topic, and asserts that JeanHeyd had at some point also thought that doing this as a keynote talk was a bad idea.

I've responded here:
dragon.style/@pyrex/111005018693053136
2
0
0
0
User avatar
celeste_hearts_lesbianceleste_hearts_transceleste_hearts_demisexual flori_ava_star:~cursor_blinking @star@amazonawaws.com
8mo
Rust, long @pyrex hey I'm gonna be real a cw for "rust" doesn't quite cut it here >.>
1
0
1
0

User avatar
Pyrex, nightsworn alchemist @pyrex@dragon.style
8mo
Rust, long @star

Ack! I think you are right. Also, hello! This is a toot from 2023, I barely remember writing it and there have definitely been developments since this time. Is it circulating somewhere?
1
0
1
0
User avatar
celeste_hearts_lesbianceleste_hearts_transceleste_hearts_demisexual flori_ava_star:~cursor_blinking @star@amazonawaws.com
8mo
Rust, long @pyrex oh! oops! i didn't even check the post date! my bad. yes, it was circulating somewhere, as a comment under a comment under a comment to an original post, but i can't really tell you more than that, since i do not remember more neobot_woozy

either way, my bad, and have a nice day c:
1
0
1
0
User avatar
Pyrex, nightsworn alchemist @pyrex@dragon.style
8mo
Rust, long @star

No worries, I actually don't know where a good roundup on this whole situation could be found but my guess is manishg, jeanheyd, sage griffin, david tolnay's, and josh triplett's feeds might be good starting points for research.

(I don't really recommend directly contacting them as I think it was a bad episode for all of them.)
0
0
1
0