Batten Down Fix Later
graydon2.dreamwidth.org
graydon2.dreamwidth.org
What struck me as odd about JT's resignation was that they were nominally in the group that was in charge of everything. They were even primarily responsible for drafting the new organizational structure. Why, then, did they feel the need to resign when they had so much influence?
Having read Tyranny I think I understand. JT resigned because the recent episode revealed just how little influence they actually had and how little the supposed structure of the project mattered. What structure was there was a smokescreen for the actual informal power structures in the project.
Fasterthanli.me called out these informal networks and promised to stop participating in them in order to try to minimize their legitimacy [1], but I don't think that is going to be enough. The problem is the anonymity of the elite that is actually governing the project—we don't know who they are, so we don't know the informal structure through which decisions are actually made. Those who do know insist on keeping quiet, which does prevent an internet mob but also preserves those informal structures from scrutiny and dismantling. We need the people in the know to come clean not so that we can unleash an internet mob but to lay bare the actual power dynamics. Until that's done it won't matter how much the formal structure changes, the informal structure will continue to dominate.
EDIT: I missed several developments[2][3] over the past few days, so it looks like there may already be progress may be being made on this front. Thanks to Georgelemental for drawing my attention to them [4].
[0] https://www.jofreeman.com/joreen/tyranny.htm
[1] https://fasterthanli.me/articles/rust-the-wrong-people-are-r...
[2] https://blog.rust-lang.org/2023/05/29/RustConf.html
Yeah, I'm starting to think that for the Rust dramas specifically we need to start publicly naming and shaming those involved.
In the tech industry we have internalized the (excellent) idea of "blameless postmortems". We don't blame individuals for things that went wrong - we examine systems and structures instead. This idea is embedded in many of the links above: there is a significant focus on the structural mechanics of what happened.
However, I think the blameless postmortem approach breaks down when people aren't participating in good faith. In that case people need to be given some other incentive to behave well. I think for Rust, unfortunately, we need add a new incentive: if you use back-channels to get something stupid done, you will be publicly named and shamed and you will be put under pressure to resign. I think this should be implemented for the current drama: we should have an exact play-by-play, with names, of what happened.
Blameless postmortems are not anonymous. They often include a link to whatever change broke whatever broke, with the author's and reviewers' names right there at the top. They usually also include a "X happened at Y time" listing with the names of the parties involved.
The point is to infuse a culture with the certainty that the postmortem is laying no blame, despite naming names. It's pretty hard to maintain that culture even for purely technical issues, and I think just gets harder for interpersonal issues. But the transparency is definitely valuable.
As if informal politicking doesn’t happen inside ostensibly formal governance.
And Graydon has (according to himself) been out of this game for ten years. Then he was like, “Oh this sounds like this meme that I like” (which he came up with as more of a bystander than an insider, by the way).
[1] See the previous submission [2]. How many levels of leaders of the leadership chat on the leadership working group steering committee is it on when it tries to explain the chain of events.
[2] https://news.ycombinator.com/item?id=36101501
> Fasterthanli.me called out these informal networks and promised to stop participating in them in order to try to minimize their legitimacy
Concretely, he
> Up until recently, I was part of two private online discussion spaces where a bunch of Rust people hung out.
So he’s resigning from two private chats/forums about Rust. Okay.
The Rust leadership team is not anonymous; you can read about them on the rust-lang.org website [1]. The much-discussed "leadership chat" was created to enable process-all-the-way RFC acceptance earlier this year [2] and has been updated twice since then [3][4]. There was also public-facing communication about this [5].
I believe GP is referring to JT (and others) choosing not to name the people who decided to downgrade JeanHeyd Meneide's talk from keynote status. Those people have since publicly named themselves in relation to the incident.
1: https://www.rust-lang.org/governance 2: https://github.com/rust-lang/team/commit/3700516795a293493e8... 3: https://github.com/rust-lang/team/commit/09717c6540c47663960... 4: https://github.com/rust-lang/team/commit/2cea9916903fffafbfa... 5: https://blog.rust-lang.org/inside-rust/2023/02/22/governance...
At the most basic, the BDFL sets a vision and change approval process. At the beginning you don't need anything more. Maybe that vision isn't clear, and the approval process is a wreck. But it's possible to figure out where you stand in relation to the project. And you know how to engage with it productively.
I've long gotten the impression Rust lacks leaders in leadership, and is riddled with power brokers. Recent blog posts have confirmed this.
Who is going to find those experts? How do you prevent empire-building and fiefdoms affecting which experts are hired? How will the new people be aligned?
> a lot of people over the years have left the project, and a lot of the leaving has been on fairly sour terms. A lot of people feel regret and resentment about ever participating.
This happens a lot with projects. Though some of the odd vibes from Rust leadership lately are more concerning than some of the idiosyncrasies that have caused me to write off some other projects in the past. Hopefully they straighten that out a lot, before more damage is done.
You can hire an “Organizational Dynamics” consultant. Their job is to help create healthy organizational structures.
This doesn’t answer the question of who and how to make that hiring decision, but a good OD consultant will nip empire-building behavior in the bud. The decision becomes “is this person qualified to help with our sort of organization,” rather than, “will this person support my agenda,” which is an easier decision to make.
An OD consultant will also be able to recommend or provide conflict resolution strategies, training, and mediation services. Grayson mentioned that as a possible root cause, and that seems very probable, based on what I know of typical geek interpersonal failure modes.
It’s a typical "compiler nerd" (any nerd) response. You don’t know something so you think you can outsource it to someone who has the required skills.
Which is fine in a limited sense. But if the problem is political then you might get other problems if you outsource it too much.
(PSA side note to any individuals/teams in a "stressful" project/org. Stress isn't only unpleasant and difficult; it's physiologically damaging you, and you can't perceive much of the damage until it's too late. And the kinds of stress that come from org dysfunction beyond your power to fix are IMHO worse than the usual startup kinds of problems that you can potentially overcome with creativity and smart/hard work. Push back on bad stress, decide when to walk away, and next time try not to go there in the first place.)
I'm not trying to minimize this because it deeply needs to be addressed, but using one language or another is a relative decision, and between Rust and C++ I still think C++ is more dysfunctional, Go doesn't really attempt to be a "community" led project in the first place, Java drama ended up in the Supreme Court, etc.
That's the example I personally have in mind, but other individuals and organizations can usually think of multiple options for investing their resources, what directions they could head towards, etc.
This comment gives me the impression of someone using Rust to follow a fad, not because it is something that is useful to them.
I can already do systems programming in C or C++. If I'm investing in Rust, to do systems programming in some ways better, then I want to restore confidence that it's not already becoming dysfunctional in leadership.
Fads come and go, some fad-followers hop jobs every 12-18 months (and really don't have to care much whether a fad pans out, because they'll just hop on the next one), but I'm trying to think strategically and longer-term about what I invest in.
I think the reality is though that you can’t really get away from dysfunctional organization even falling back on other languages (or maybe you prefer the C++ flavor of organizational dysfunction), but I do think with Rust you see it a lot more in the public eye.
The rust leadership issues are just not things you have to think about as a rust developer. There isn't going to be a meaningful fork, there... just is nothing to worry about. The people who are invested in this sort of thing are discussing it, that does not have to be you.
An individual Rust developer probably doesn't care about any of that, absolutely correct.
But it can affect some Rust developers near-term in perceptible ways, and longer-term it will absolutely affect much more.
Org dysfunction is often how empires fall, getting twisted along the way, and sometimes why they fail to become empires in the first place.
And where that platform goes is to a large extent determined by org dynamics (leadership, drama, etc.).
Every other language has survived plenty of drama.
And the ones that did survive have often been twisted, developed poorer communities than some others, etc.
Elm was an interesting language but I don't think it ever saw anywhere near the same level of adoption by hobbyists nor companies.
There's a dual meaning to politics there: casually, it is a synonym for acrimony and resentment and airing of grievances in public. But a more general definition of politics is just any process to make decisions over collective resources. You make a decision about what toothpaste to buy for you: no politics. A decision about toothpaste for the whole household: politics. It's always imperfect, someone always ends up with more power, and not everyone can be satisfied.
The Tyranny of Structurelessness is such a classic. You might think that feminist collectives in the 1970s have little to do with 21st-century coding projects. But every group with a mission struggles with this. Because people are "paid" not with money, but with personally meaningful work. That's what people are looking for when they get involved.
When there are trade-offs to be made, and no transparent structure about how those trade-offs are being made, that can be the source of a lot of resentment. You're not just messing with their money or their career, but their sense of self. I'm not surprised many Rust contributors regret their involvement.
But it's such a good project with many good characteristics. I hope they can get it together. There are all kinds of people who can help, who make it their mission to redesign organizations that are suffering from problems just like this. You might find that the people you think are irredeemably conflict-prone might be actually okay in the right organizational structure.
In any project this is the worst, because it is most effective against the people who want to get things done and get things done.
> One informal structure that governs a lot of Rust and a lot of open source in general (and is mentioned in The Tyranny Of Structurelessness) is that of time commitment. The passionate contributor often is willing and able to spend a lot of time on the project. And that time commitment is not always available to others. This is often explicitly stated as a positive virtue: "people who do the work get to decide". But those decisions often affect many other stakeholders, and "the people with the most time" might not represent those stakeholders well, or might lack skills or knowledge for the task at hand. And "putting in more time than others" is also a way -- a fairly unhealthy one -- of dealing with a conflict: rather than addressing it head-on, you just wear the other side out. This can even be employed within a formal structure, if there's wiggle room for "how much input you contribute per unit time". Some people will show up to every city council meeting to push the same agenda. It works, you get your way, and it's not great.
The notion applies to communities like Wikipedia and similar even more than to FOSS projects. Except that in that case there's often additional factors at play, like malicious coordination, "meat puppets", "sock puppets", etc.
https://news.ycombinator.com/item?id=36101501
The main thing that summary is missing is that the one who resigned was one of the most popular contributors and a member of the core team, and that it was some unidentified member of the core team who pulled the strings to revoke the invitation without a vote.
That is bit overly reductive imho. As far as I can tell there wasn't really a singular leadership group making decisions collectively, which was the crux of the issue.