Drama on the github

Posted 2021-07-12

Core D Development Statistics

In the community

Community announcements

See more at the announce forum.

My thoughts on community development

Last week, a git PR came in and then reverted back out. In the reversion PR, there were several comments that suggest a contributor is abandoning the project and several others sympathize. See for yourself here: https://github.com/dlang/dmd/pull/12828

This isn't the first time contributors have been demotivated or even just plain left over differences with upstream and it won't be the last. Even if this particular disagreement gets sorted out, the underlying problem has been there practically since the beginning and will still be there until something is done about it, and that something can't just be complaining about a lack of manpower. That lack has an underlying cause that needs to be addressed. I propose that the underlying flaw is a lack of leadership.


"Lack of leadership?" I can see people exclaiming, "but we have a BFDL!" The thing is leadership isn't just a title you claim, nor a technical feature box you check. Making decisions is a part of it, but actually a fairly small part; leadership is about a social relationship wherein the leader (and their associated ideology) is able to convince other people to actually get on board. A good leader needs to communicate decisions, motivate people to actually work toward the goal and, very importantly, convince them to put their dissenting views on the backburner to instead work on the leader's priorities. This really isn't a technical skill, but rather about social charisma... or whatever.

The miracle of political democracy is not the winner of an election taking power. That part's easy. The real victory is the loser of the election stepping aside and letting the winner take over. The loser surely still disagrees with the winner's agenda, but voluntarily accepts their loss and tries to work with the winner, then maybe try again next time. Losers rarely just rage quit, secede from the state, nor raise their army to contend for the throne anymore. That's harder to achieve than it seems.

With D, contributors leave regularly. Most just abandon things, but there's also the periodic dramatic flame out. There's several little forks and new languages inspired by D, and library contributors often just separate into their own domains. I do this too. To some extent, I think this is good since it lets library authors maintain some level of ownership, which keeps them motivated, able to fix bugs at their pace, etc.. I've argued the stdlib, for example, should embrace more independent projects and curate them into a cohesive whole. But on the other hand, this fragmentation also limits mutually beneficial collaboration. It'd be better if we worked productively together. Instead, there's an impression around the community that Phobos is where code goes to get mutilated and die.

Everyone complains that important things go unaddressed, but if D had strong leadership this could change - they'd identify the goal and then corral us to actually focus on that, even if it isn't exactly what we want to do on our own. On paper, D has a "strong leader", it has a dictator with absolute veto power. But in practice, it has nothing of the sort. Instead of respecting the veto and acquiescing, several contributors resent the veto and talk about forks.


What is a fork? They often are individual things - someone saying I don't like the way you are doing it, so I'm going to go do my own thing. Maybe you'll get other people to join you, but it represents a resignation from the original project; you've given up on them. This fork risks splitting one troubled project into two troubled projects.

There's another kind of fork too, which is more similar to a labor strike: where contributors get together and say they'll all leave to start a new project unless they can come to an agreement with the original. This is frequently what happens with the individual fork anyway, since the two troubled projects it spawn realize that there are actually mutual benefits to coming back together under some kind of compromise, but here, that's the explicit goal from the beginning.

I fear the former kind is what will happen to D (again. I put the Tango/Phobos split in this same category), but I think the latter kind of fork would be more productive. Walter does a lot of great work and we're stronger if we work together. But we need to stop losing contributors like this and that's going to take deliberate effort and mutual compromise.

Though while some of the process could plausibly by improved, we'd still have a shortage of real leadership.

Dictatorship vs Democracy

Leadership is independent on how decisions are reached. A decision may be unilateral or it might be the result of some kind of democratic process, or whatever else. The leadership question is: how do you implement it? In either case, you need to convince dissenters to get onboard.

We often handwave this in the D world, saying it is a volunteer project, so you can't hold a paycheck as leverage. But there's a lot of other forms of motivation out there than just money and other forms of correction than the kind of force governments can bring to bear on would-be rebels after losing an election. A lot of people care about recognition of work and like being a team player. Just people also like to feel heard, valued, respected. Process can help a lot on these factors, but this is where leadership really comes in - throwing in the social grease and yes, chastisement when correction is necessary - to realize non-monetary motivation.

I don't know what would be best for us. There's not a lot of great social charisma among D's big names, so I think we're going to be forced to work on some kind of process and ideology. Contributors must, at a minimum, feel like they have some input or they'll eventually leave and as good as Walter is, he can't make D great on his own.

This thread appears to have already blown over, but it will not be the last. D needs leadership, but at least a reformed development process may be a viable substitute to stop the damage. Pretending this isn't a real and long standing problem won't solve anything.