New DIP Rules

Mike Parker aldacron at gmail.com
Wed Jul 22 08:20:37 UTC 2020


In response to the controversy over the acceptance of DIP 1028 
(Make @safe the Default), which ultimately resulted in the 
reversal of the decision, I received proposals to change how DIP 
assessments are carried out. This is beyond the scope of my role 
as DIP manager, so I put it on the agenda of our most recent 
quarterly D Language Foundation meeting, where we discussed it 
and reached a decision.

The crux of the proposals was that the language maintainers, 
Walter and Atila, should not be in a position to evaluate their 
own DIPs. The suggestions were to either add a third maintainer 
to the team or to have a person on call to evaluate any DIPs by 
Walter and Atila.

On the surface, these are reasonable suggestions. There are many 
scenarios in modern society where we expect individuals to recuse 
themselves from performing their normal duties when those duties 
intersect with their personal interests. However, language design 
is generally not one of them.

Adding a third maintainer, whether on a flexible or permanent 
basis, requires finding someone with the proper skillset and 
scope of knowledge to fill the role, which is no easy task. But 
even were such a person found, we can find no rationale to 
prevent any language maintainer from evaluating their own 
proposals. By definition, as language maintainers, Walter and 
Atila are the final arbiters of which features do and do not make 
it into D. Whether one of them or someone else is the source of a 
feature proposal is irrelevant. They are either maintainers or 
they aren't. To take either of them out of the decision making 
process would be to say they aren't.

On the other hand, it's not often that the community comes 
together in fierce agreement on any D issue. When that happens, 
as it did in the case of DIP 1028, it can't be ignored. That's 
why the decision to accept was reversed. It's also why we've 
decided on implementing a change that we hope will be an 
improvement.

That we have two maintainers means nothing is accepted unless 
they both agree. Very few DIPs reach Formal Assessment without 
flaws and with both maintainers in agreement on acceptance. In 
those cases, whether the end result is acceptance or rejection, 
the decision isn't reached without debate and without one of them 
finally convincing the other (often over the phone). The decision 
making is not a rubberstamp. It's actually sometimes adversarial. 
When it comes to proposals by the maintainers, introducing such 
adversity earlier in the process may be a good thing.

Henceforth, when a language maintainer wants to write a DIP, he 
will instead recruit someone to write it for him. This third 
party will not just be the DIP author, he or she will be the 
champion of the DIP. The idea is that the maintainer provides the 
author with the broad outline (bullet points, notes, whatever 
works) and any input necessary to get the initial draft off the 
ground, but the author is ultimately responsible for the content, 
including modifying the additional draft as they see fit, and 
deciding which bits of community feedback to incorporate and 
which to ignore throughout the DIP process. (All such DIPs will 
include a note that the idea came from a maintainer.)

With this change, Walter and Atila will still be the ones who 
decide what does and does not get into the language, but any 
feature ideas they have will evolve, for better or worse, without 
their input. Those DIPs from Walter currently moving through the 
DIP queue will remain in their current form. Those still in Draft 
Review in PR queue will be subject to the new rule and will be 
revised by a different author.

Two other major issues were raised in the wake of 1028:

* /No rationale was provided for acceptance./ This is my fault. I 
have always requested a rationale for rejection, but not for 
acceptance. Often, the maintainers have had specific issues with 
the DIPs they accepted. In those cases, they have always provided 
comment. Only one DIP had previously been accepted without any 
comment at all (1024). I did not ask for a rationale for either 
1024 or 1028. Henceforth, we will always provide a rationale for 
both acceptance and rejection.

* /Walter didn't listen to the feedback./ There is a difference 
between listening to feedback and disagreeing with feedback. I 
ask every DIP author to respond to each unique point of feedback 
in the Feedback Thread, but no DIP author is required to modify 
their DIP in response to feedback. All criticisms, positive and 
negative, will be there in both threads for the language 
maintainers to take into account as part of the assessment. We 
hope the change I outlined above will alleviate this by putting 
the decision to modify maintainer's DIP idea into the hands of an 
author who is not a language maintainer.


More information about the Digitalmars-d mailing list