The new rule for DIPs by language maintainers was a mistake

Paul Backus snarwin at gmail.com
Tue Oct 19 02:22:54 UTC 2021


Early last year, Mike Parker, the DIP manager, announced [a set 
of new rules][1] for DIPs by language maintainers (i.e., Walter 
and Atila).

Under these new rules, rather that author DIPs directly, language 
maintainers would be required to find a community "champion" for 
each DIP they wished to submit, and allow that champion to author 
the DIP on their behalf. The purpose of this rule was to avoid 
the potential bias introduced by having a DIP's author be the one 
to evaluate it: in general, it is much easier to judge someone 
else's work impartially than one's own.

In light of recent events--in particular, the addition of 
[AliasAssign][2] and [ImportC][3] to the language--I think it is 
safe to say that this new rule has failed to achieve its goal.

The community's role in the DIP process is, and always has been, 
100% advisory. The D project uses a "Benevolent Dictator for 
Life" (BDFL) governance model, in which all decision-making power 
rests in the hands of the language maintainers. Thus, when a 
language maintainer submits a DIP for community review, it is not 
in order to seek the community's *approval* (which is 
unnecessary), but to solicit *constructive feedback*.

Constructive feedback is a good thing. It leads to better DIPs, 
and, ultimately, a better D language. It follows that, when we 
are deciding on rules for the DIP process, we should try to do so 
in a way that encourages as much constructive feedback as 
possible.

Unfortunately, the "champion" requirement does exactly the 
opposite: it actively *discourages* the language maintainers from 
soliciting constructive feedback on their proposals.

To see how, consider the choice faced by a language maintainer 
who wishes to propose a new feature for D:

* **Option 1: use the DIP process.** The benefit of this choice 
is that the language maintainer can get constructive feedback 
from the community. Prior to the new rule, the cost of this 
choice was that the language maintainer had to write up his 
proposal as a DIP. Now, the cost is that the language maintainer 
must find a champion, and help the champion write up the proposal.

* **Option 2: bypass the DIP process.** The benefit of this 
choice is that the new feature can be merged quickly and without 
any bureaucratic red tape. The cost is that the language 
maintainer misses out on the opportunity for constructive 
feedback afforded by the DIP process.

It is important to keep in mind that, given D's BDFL governance 
model, *option 2 is always on the table.* It follows that 
anything that makes option 1 more difficult will, on the margin, 
encourage language maintainers to choose option 2 instead.

By requiring the involvement of an additional person, the 
"champion" requirement makes option 1 more difficult than it was 
before. And the result has been exactly what you'd expect: rather 
than using the DIP process to solicit community feedback on 
ImportC and AliasAssign, the language maintainers have chosen to 
merge them without DIPs.

It is time for us to admit that the "champion" requirement was a 
mistake. It should be removed from the DIP process, and language 
maintainers should be allowed (and encouraged) to submit their 
proposals for community feedback directly.

[1]: https://forum.dlang.org/post/rf96ib$176$1@digitalmars.com
[2]: https://dlang.org/spec/declaration.html#AliasAssign
[3]: https://dlang.org/spec/importc.html


More information about the Digitalmars-d mailing list