On Thursday, 6 April 2017 at 07:24:28 UTC, Nick B wrote:
I'm going to address this post to Walter and Andrei, as the joint captains of the D ship, so to speak.

[...]

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.

Agreed.

I don't want to make any assumptions, and I do respect Walter for consistently taking on a role that means that people keep criticizing his choices whatever he does, but his approach to dealing with the community is undeniably flawed, and seems to be breeding a lot of frustration and resentment.

My personal example is from a discussion we had in February about 'return scope', where Walter Bright asked deadalnix to explain his case, and explain the problems he saw. At the time, deadalnix (and other users) replied that they didn't want to make their cases, because they had already done so in the past, and they expected Walter to ignore whatever they would tell him.

http://forum.dlang.org/post/[email protected]

I outlined several problems I saw with return scope, and Walter replied to my post, answering each point I made. And while it's commendable that Walter took the time to do it, those answers felt extremely frustrating to me; Walter did *not* address my points, and did not take what I was saying seriously. As an example, one of the problems I pointed out was:

It only addresses cases where a reference might be escaped through a single return value; it doesn't address escaping through 'out' parameters,

The following conversation ensued:

Walter:
Yes it does (the general case is storing a value into any data structure pointed to by an argument).

Me:
I don't understand. Let's say I have an arbitrary class 'Container', and I want a function that stores a pointer to an int in this container, in a way that lets the function's caller know that the int* given to it will last only as long as the container, and I want to do it without return values. The prototype would be akin to

void store(ref <scope-info> Container cont, <scope-info> int* ptr);

And the code it would be used in would look like:

    {
        scope Container c;
        scope int*      ptr = ...;

        store(c, ptr);
    }

What would the syntax be?

Walter:
    c.ptr = ptr;

You can also do:

ref Container store(ref return scope c, return scope int* ptr);

The rest of the conversation basically went like this:
Me: This isn't possible, or if it is, it shouldn't be.
Walter: Yes it is. It compiles.
Me: Okay, but it shouldn't compile, because it make [invalid write error] possible.
Walter: Well, it doesn't compile with @safe.
Me: Yes, it does compile with @safe, and no, it shouldn't, and my point from the beginning was that your model made that kind of function impossible. Why do you think we're even talking about this?

In short, Walter asked for people to give their opinions on the subject; but when I did give my opinion, Walter did not take my points seriously, and basically assumed that the only reason I disagreed with him was that I didn't understand the subject as well as he did. Other people (including Dicebot) have complained about that.

This was a very frustrating experience, and I did not want to participate in the discussions about Dlang any further after that.

Look, again, I feel bad trash-talking Walter. He's putting a lot of effort into this. But he's clearly really, really bad at listening to other people. This has to be addressed at some point.

Reply via email to