Walter and Andrei and community relationship management

Nick B via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 6 00:24:28 PDT 2017


I'm going to address this post to Walter and Andrei, as the joint 
captains of the D ship, so to speak.


As an outsider I can see there are two major issues, at play, at 
present, in this series of threads.

1. The technical proposals and arguments for x & y, or against x 
& y. On one side is Walter & Andrei with Walters proposal, and 
the other is Deadalnix.

2. The relationship management, between the co-captains and the 
community. And the perception of the different rules for the 
captains verses the community, which causes
resentment, and friction, to members of this community.

I'm not going to discuss item 1 in-depth, because item 2 is far 
more important.

So let's go back to the beginning.

------------------------

Andrei starts a thread, 4 days ago, titled 'Exceptions in @nogc 
code'.

     "Walter and I discussed the following promising setup:

     Use "throw new scope Exception" from @nogc code. That will 
cause the exception to be allocated in a special stack-like 
region.

     If the catching code uses "catch (scope Exception obj)", then 
a reference to the exception thus created will be passed to 
catch. At the end of the catch block there's
no outstanding reference to "obj" so it will be freed. All @nogc 
code must use this form of catch.

     If the catching code uses "catch (Exception obj)", the 
exception is cloned on the gc heap and then freed.

     Finally, if an exception is thrown with "throw new Exception" 
it can be caught with "catch (scope Exception obj)" by copying 
the exception from the heap into the special region, and then 
freeing the exception on the heap.

     Such a scheme preserves backward compatibility and leverages 
the work done on "scope".


----------------------------

Deadalnix enters the discussion in Andrei's thread, with:

     "It doesn't need any kind of throw new scope Exception, and 
was proposed, literally, years ago during discussion around DIP25 
and alike.

     I urge you to reconsider the proposal that were made at the 
time. They solve all the problems you are discovering now, and 
more. And, while more complex that DIP25
alone, considering DIP25+DIP1000+this thing+the RC object thing, 
you are already in the zone where the "simple" approach is not so 
simple already.

     Things are unfolding exactly as predicted at the time. Ad hoc 
solutions to various problems are proposed one by one and the 
overall complexity is growing much larger
than initially proposed solutions."

Others (Eugene Wissner & Dmitry Olshansky) also comment on the 
proposed syntax.

Walters responds to Deadalnix by asking for more details:

     > It doesn't need any kind of throw new scope Exception, and 
was proposed,
     > literally, years ago during discussion around DIP25 and 
alike.

     "A link to that proposal would be appreciated."

Walter adds an additional requirement in response to Deadalnix

     "This does not address the stated need (by many programmers) 
to not even have to link in the GC code. A solution that falls 
short of this will be rejected. The
rejections may not be technically well founded, but we're not in 
a good position to try to educate the masses on this. A solution 
that does not require linking to the GC
sidesteps that problem."

Walter then adds the following:

     >  I urge you to reconsider the proposal that were made at 
the time. They solve all
     > the problems you are discovering now, and more. And, while 
more complex that
     > DIP25 alone, considering DIP25+DIP1000+this thing+the RC 
object thing, you are
     > already in the zone where the "simple" approach is not so 
simple already.

     "I did some searching for this previous proposal discussion, 
but could not find it. Instead, I'll go by your description of it 
here.

     I've written a more fleshed out proposal and started a new 
thread with it. Feel free to rip it to shreds! "
------------------------

Walter then starts a new thread, 3 days ago, titled: Proposal: 
"Exceptions and @nogc". Within the post he lays sub-headings out: 
Problem; Solution; throw Expression; catch

(Exception e); Chained Exceptions; Copying Exceptions; Legacy 
Code Breakage; Conclusion; and References. It's like a DIP in 
structure, but its NOT a formal DIP.

Walters replies to a request by Rikki Cattermole for a DIP.

     >And as probably expected, DIP please. Its a big set of 
changes and warrants
     > documenting in that form.

     "If it survives the n.g. discussion I will. Though the DIP 
process is in limbo at the moment since Dicebot is no longer 
running it."

Here Walter is saying, lets discuss it thoroughly on the n.g. and 
then LATER, if it's any good, he will formal put it into a DIP.
Fair enough.
----------------------------

Discussions continue.

Deadalix then composes a long reply, in Andreis thread, to 
Walters request. He is hopeful he will be heard:

     "The forum search isn't returning anything useful so I'm not 
sure how to get that link. However, it goes roughly as follow. 
Note that it's a solution to solve
DIP25+DIP1000+RC+nogc exception and a sludge of other issues, and 
that comparing it to any of these independently will yield the 
obvious it is more complex. "

[snip]

He posts a link to a Microsoft Research paper.

      "Going into the details here would take too long, so i'll 
just reference this paper ( 
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/msr-tr-2012-79.pdf ) for detailed work in C# about this. This is easily applicable to D."

The PDF is 26 pages long, and very technical.  There is also a 
link to a Youtube talk that runs for over one hour.

Discussions continue, but Deadalix proposal is not replied to.

I (Nick) after 24 hours, of no response, then ask for a comment 
from Walter to Deadalix's proposal:

     "Can one assume that Walter is thinking about Deadalnix's 
detailed proposal above, and that he will give a formal response, 
once he has given it serious thought, and
discussed it with Andrei ?"

Walter then responds, and gives six counter-arguments to Deadalix 
proposal, and ends with:

    "This proposal looks promising for making a better garbage 
collected language, but people want a language with an optional 
GC."

Deadalix gives counter-arguements.

Walter gives more arguements,and Deadalix replies.

Then Andrei replies, to my post. I will quote in full:

     "As a matter of procedure no, a forum post will not be 
followed by a formal response. The DIP process ensures a formal 
response.

     The post is far from what one would call a proposal, let 
alone a detailed one. It is a sketch of an idea that addresses a 
complex matter without minding a large number
of details. That's totally fine; the whole discussion opener was 
also informal and lacking details. It's just that we can't work 
on someone else's vague idea.

     I encourage anyone interested in pursuing this idea to work 
on a DIP."

Deadalix, becomes angry at this request for a DIP, again I will 
quote in full:


     "To be blunt I played the DIP game in the past, never again.

     This is very time consuming and nobody gives a shit. You two 
just do whatever the heck you want at the end of the day. I'm 
just pointing I predicted the problem you are
running into with your brilliant approach years before you 
realized it is a problem. You can decide to not listen, not 
really my problem.

    I wrote fairly comprehensive specs of the idea in various 
places, including in the ML you created for this very topic. I 
just can't be writing specs again and again for
them to be ignored, that's just not a productive use of my time, 
and at this point I'd even say it's not very respectful to ask 
people to waste more time.

    I'm happy to work with you guy to come up with something, but 
I surely won't spend several days working a spec for nothing. "


Walter, gives a  18 lines of reply why he thinks the Deadalix 
proposal is unworkable.

Walters core objection can be summed up here:

     "For example, adding an `owned` type constructor is a major, 
major language change. Issues of implicit conversion, 
overloading, covariance, partial ordering, type deduction, 
mangling, construction, postblit, TypeInfo, inout, etc., all have 
to be addressed and worked out. Then there's legacy 
compatibility, deprecation issues,
interaction with other languages, interaction with multiple 
storage allocators, etc. "

I will quote the last two lines of Walters reply:

     "Making this work for D involves a great deal of careful 
design work, and even more implementation work. It also includes 
some significant risk that it will prove unworkable.

     I don't believe that a back-and-forth disjointed email chain 
here is going to resolve the major issues with it. Until a far 
more thorough design proposal is made, I'm going to bow out."

Walter can see what would need to be changed, and the risks 
involved, but he does not address, in his reply, the proposed 
benefits raised by Deadalnix, nor the claim it
will solve a number of problems.

As an alternative, Walter could of said, to Deadalnix, give me 
more detail here, and here, and here. But no, he asks Deadalnix 
to submit a formal DIP, for he believes the
proposal to be too large and risky.

Finally, Andrei,  replies to Deadalnix, commenting that his 
previous DIP was of poor quality; on his use of 'crude' language; 
and stating that he is framing the issue as
part of a larger problem.

Commentary.

I have tried very hard to be objective in this review of these 
discussions.

But, it seems that while Walter and Andrei are prepared to put a 
proposal out on the newsgroup, and then discuss it with the 
community, and then LATER, if its any good,
state they will formally document it into a DIP.

For the community, it seems different rules apply. In-depth 
news-groups discussions for new proposals are firstly encouraged 
and then later discouraged, with the ultimate
response that the proposal MUST be in the form of a 
time-consuming DIP, to be considered, even if it will ultimately 
wastes everyone time, and cause resentment in the community.






More information about the Digitalmars-d mailing list