Andrew Kelley (Zig creator) replied to this on lobste.rs

https://lobste.rs/s/js25k9/is_zig_s_new_writer_unsafe#c_ftgc...

This subthread is peak FOSS world experience - 59 comments discussing who said what, why it was or wasn't nice etc.

What a terrible way to take constructive feedback.

Writing not one but two blog posts takes time and effort, moreso when it includes investigation and examples... the posts are not just low effort "this is crap" rants (and they even blame themselves, even though it's clear from the posts that there are documentation/discoverability issues).

What if the poster doesn't feel knowledgeable enough to contribute code? (as shown by his first post title, "I'm too dumb for...")

If that's not collaborating I don't know what it is...

That's not the read I got from Andrew's comment, or the situation. If the poster doesn't feel knowledgeable/able enough to collaborate in the community discussions (like the issue links, which don't require contributing code) then doing individual blog posts instead is only going to give even worse results for everyone.

Author here. I see it both ways.

Blog posts are collaboration (1). I did get the sense that Andrew doesn't see it that way. (And for this post in particular, and writegate in general, I have been discussing it on the discord channel. I know that isn't an official channel).

My reasons for not engaging more directly doesn't have anything to do with my confidence / knowledge. They are personal. The linked issues, which I was aware of, are only tangentially related. And even if they specifically addressed my concerns, I don't see how writing about it is anything but useful.

But I also got the sense that more direct collaboration is welcome and could be appreciated.

(1) - I'm the author of The Little MongoDB Book, The Little Redis Book, The Little Go Book, etc... I've always felt that the appeal of my writing is that I'm an average programmer. I run into the same problems, and struggle to understand the same things that many programmers do. When I write, I'm able to write from that perspective.

No matter how inclusive a community you have, there'll always be some opinions and perspectives which get drowned out. It can be intimidating to say "I don't understand", or "it's too complicated" or, god forbid, "I think this is a bad design"; especially when the experts are saying the opposite. I'm old enough that I see looking the fool as both a learning and mentoring experience. If saying "io.Reader is too complicated" saves someone else the embarrassment of saying it, or the shame of feeling it, or gives them a reference to express their own thoughts, I'm a happy blogger.

I don't even like Zig but I read your blog for the low level technical aspects. I agree completely that blog posts are collaborative. I read all kinds of blogs that talk about how computers work. I can't say if it brings value to the Zig people, but it certainly brings value to me regardless!

Author is posting honest and respectful critique of Zig features on their blog. That is a valid way of collaborating in the community discussion. The project github isn't the only place where discussion is allowed to take place.

The claim isn't you should shut down your blog and only talk on GitHub to be engaged with the community. Zig has tons of communities https://github.com/ziglang/zig/wiki/Community and, of course, blogs also play a part in the overall community too. Picking a single engagement option is probably always a poor choice, but that option being your personal blog alone would be one of the poorest. That's where the feeling of lack of collaborating with the community is coming from, not that they specifically don't engage in GitHub alone.

Make blog posts, it's great!, but if you don't think you're the expert then they'll go a lot farther for everyone if you put 5% of the work of doing so into engaging with the community about it for additional insights first. That's a fair note to make, though I agree the ending could be less passive aggressive about those who don't want to engage with the community.

FWIW as someone with only a pinky toe in the Zig community, it's quite engaging and interesting to see a blog post like this. It makes me want to learn more, and reminds me that there's a wide tent here (that might even include me!), not just a tight-knit "inside" group.

I think it's a reasonable response aside from the last sentence aside.

Is it reasonable in its entirety?

[deleted]

Might be cultural differences but, to me...

> Kinda wish the author would attempt to collaborate rather than write stuff like this [...] but, whatever, it’s their blog so they can do what they want.

...feels like passive aggression. In particular the "stuff like this" (like what?) and "but, whatever" felt very unnecessary and the whole "I wish he'd collaborate on my terms" is IMO uncalled for.

Yeah, I could see it being better without that portion of the final sentence. At the same time, I think opening "What a terrible way to take constructive feedback" is at least equally as grating a way to engage about it - but at the end of the day we're all humans, not saints, and it seems clear to me both comments are well intentioned and decently put as a whole. Same as me, I'm sure if I look back at these comments in 3 days there will be parts I would have changed, but overall I'd probably thing they were decent instead of terrible.

I'm glad you made the note about that part though, I agree with it and we can always do better.

[deleted]

Meh, I have the impression the blog author really hates Zig's new Writer (fair, I disagree, but fair), but his criticism in this example is in my eyes slightly questionable -- it is a bug in the implementation and not a conceptual issue. He then uses quite some loaded phrasing like "I must be too dumb to understand this" and "I can't be really too dumb can I?" which I think ruin the discussion (as do the titles. He failed to convince me, for instance, that the new Writer was inherently unsafe by design). It feels like a "Look I told you!!! You run into bugs like this!!!" which is not helpful for a feature/refactor that was already advertised as complex and not fully implemented or verified.

Disclaimer: I'm a zig fanboy and do all my hobby stuff in it

[dead]

I've read it completely differently.

The response IMO is constructive and invites the blog post author for further discussion.

I think it's likely that both the blog poster and the maintainer are being perceived as more negative in tone than the intent / reality. They both included disclaimers "I must be doing something wrong. And if I am, I'm sorry." and "whatever, it’s their blog so they can do what they want." They're also both giving critical feedback "But, if I'm not, this is a problem right?" "Kinda wish the author would attempt to collaborate rather than write stuff like this" but in both cases the criticism is extremely mildly worded compared to most toxic online discourse. This seems... great? Isn't it good we're able to disagree so politely? It's not toxic to have a disagreement or to give critical feedback. We don't need to all pretend to agree with each other all the time or be happy with each other in order to have a civil discourse.

"but whatever" are two of the most dismissive words when put together. "I see what you've written, but whatever."

It depends on context. When someone raises a potential objection and then says "but whatever" they are being dismissive towards their own objection. This is also called "letting it go" or "moving on".

And posting direct links to the places where discussion actually happens along with providing tldr context is as constructive as you can get. But whatever :)

[dead]

[deleted]

Except, if you click on the Openmymind.net link on HN to show all its submission, it has been Zig focus critics on different things, and may be rants.

Collaborating would be contacting the Zig team through one of the many channels available and asking questions, offering suggestions etc. Posting critical blog posts without doing this first is counter-productive, and can even be seen as self promotion. After all, we're now discussing the blog posts, and not the actual issues. Would this have happened if the author had just sent an email to the mailing list or asked on Github?

Nah, this is absurd. This guy or anybody else can write whatever they want, whenever they want, on their own blog. They are under zero obligation to create bug reports, file issues, check in on a chat channel, or contribute in any other way to an open source software project that does not employ them. Writing blog posts is a perfectly reasonable and normal community behavior.

The members of the Zig project are free to reach out to the author!

When you create a project in public people will write about it, tweet about it, complain about it, etc (if you’re lucky!).

It seems we have a different definition of collaboration. I assumed that it meant communication between the parties. Publishing blog posts has many purposes, but dirrect communication isn't one of them.

"They are under zero obligation to create bug reports, file issues, check in on a chat channel, or contribute in any other way to an open source software project that does not employ them." Correct, and absolutely fine, but not collaboration.

"Writing blog posts is a perfectly reasonable and normal community behavior." Correct, and absolutely fine, but not collaboration either.

"The members of the Zig project are free to reach out to the author!" Yes, but it's much easier, more efficient and direct for the author to have reached out to the Zig team.

"When you create a project in public people will write about it, tweet about it, complain about it, etc (if you’re lucky!)." Yes, but, once again, this isn't collaboration.

Intermernet said, "Posting critical blog posts [...] is counter-productive."

You said, "anybody [...] can write whatever they want". "They are under zero obligation ...". "Members of the Zig project are free to reach out ..."

Do you not realize that you have not at all addressed the point about what is the most productive way to criticize?

All you have done is go off about people's rights, freedoms, and lack of obligations. But nobody actually said "People shouldn't be able to post critical blog posts" or "People are obligated to participate by filing issues or contributing code to open source". So what was the point in saying this? Do you think people believe anything contrary to what you said?

The parent quite literally made a normative statement and I disagreed with it:

  > Collaborating would be contacting the Zig team through one of the many channels available and asking questions, offering suggestions etc.
If nothing else, this is attempting to define what counts as valid collaboration, and it's a definition I reject, so I disagreed with it. Good-faith experience reports are valid, useful, pro-social collaboration. Doing so is a perfectly productive way to criticize.

  > So what was the point in saying this? Do you think people believe anything contrary to what you said?
Apparently they do. The parent even made a veiled accusation that the author writing a good-faith blog post on their own blog about their own experiences "can even be seen as self promotion". Since when is sharing your good-faith critique about the design of a tool you've used something underhanded or nefarious?

Setting the bounds of valid community collaboration to "people can post on their own blog as long as I like it otherwise they're being mean" is not a set of values I subscribe to, so I felt it was worth it to articulate that.

"Good-faith experience reports are valid, useful, pro-social collaboration." Good-faith reports would be made directly to the Zig team.

Why is this counter-productive and self promotion? Does that mean we should all stop writing programming related blog posts? And move all the discussions into GitHub issues only?

You can keep writing blogs, but if you want to collaborate you should use the actual mechanisms set up by the project to do so. It's fine if you want to blog about this stuff, and it's often a means for developers to get their name out there and promote their opinions and ideas. There is nothing wrong with doing this, but if you actually have an issue with a project it's much faster, simpler, and, dare I say it, polite, to use the actual channels created for exactly this purpose.

When the inside channels set up by the project gaslight people into thinking there is no problem at all I think it is more appropriate to use blogs, where you have complete freedom to say what you want.

Also, blogs have been used since forever to give constructive feedback to other projects, even other programming languages. So I don't understand why it is suddenly not okey for the Zig project.

Blogs aren't constructive feedback because they aren't easily discoverable. If you see someone has something stuck in their teeth do you yell it to the world and hope they fix the problem, or do you first politely and discretely inform the person. Resorting to blogs as the first course of feedback isn't about helping a project, or collaborating, it's about advertising to the world.

Sorry to have to say this, but you don't have the authority to define what is and what is not constructive feedback. Polite, well written blogs like this are accepted by all people as constructive feedback.

You literally just told me I don't have the authority to define something, then you went on to define it as being accepted by "all people". Isn't that a bit of a double standard?

Blogs aren’t yelling to the world. They’re just a place you put your thoughts for other people to read or not read. Think of it like open source internal monologue.

If youre too young to have context for blogging then it’s not your fault. The intent of “blogs” is generally indeed advertising now a days.

Yes, I understand, I'm saying that they don't, except in second order effect, count as collaboration. That's it. That's the whole point.

This reads to me like an attempt at polishing a pig.

Just hide all issues people using your project stumble upon in internal mailing lists and project a polished facade.

This reads like an issue anyone can stumble upon with the answer being ”you’re holding it wrong”.

I want to find that from a quick search rather than wading through endless internal discussions.

The "endless internal discussions" are more likely to give you an actual answer with considered feedback from all interested parties. The quick search, although gratifying, is more often than not just an opinion.

Andrew wrote ONE SENTENCE and that's enough for you to diagnose him? That's enough for you to identify a pattern of behavior? Really?

He's "polishing a pig"? He's hiding "all issues" with Zig in internal mailing lists to "project a polished facade"? ALL?! You got all that from one sentence saying he wishes the author took a different approach?

Alright, fine. Here's my analysis of your character and lifelong patterns of behavior based on your first two sentences:

You just want to tear down everybody who is trying to do good work if they make any mistake at all. You look for any imperfection in others because criticizing people is the only approximation of joy in your existence. You are the guy that leaves Google reviews of local restaurants where you just critique the attractiveness of the women who work there. You see yourself as totally justified and blameless for your anti-social behavior no matter the circumstances, and you actually relish the idea of someone being hurt by you because that's all the impact you could hope for.

If that's not accurate to who you are, well, ¯\_(ツ)_/¯ that's just how it reads to me.

I am not talking about Andrew? I am sorry if that was not as clear as it needed to be.

Not sure where the tirade came from?

I am talking about the person responding here trying to decry OP for not hiding away his issues in internal communication channels.

The internal communication channels are where the people who can fix the problem are looking. They aren't looking at random blogs until it's too late to actually have a meaningful and calm discussion with the person raising the issue.

If the author had raised the issue on the actual channels that the Zig project requests people use, and then the Zig team had been dismissive or rude, then, yeah, for sure go writing blog posts. I'm not sure why this is such a hard thing to grasp. If you have an issue, raise it with the people who can fix the issue first. Don't immediately go screaming from the roof-tops. That behaviour is entitled, immature, insincere and unproductive.

> Don't immediately go screaming from the roof-tops. That behaviour is entitled, immature, insincere and unproductive.

Nobody is screaming here except for you.

You seem to be reading a lot into my replies that isn't there. I'm not sure why you're so offended. At no point have either of us actually addressed the grievances of the blog post's author. That's one of the many reasons they weren't the best option. It's like you feel I'm attacking your right to complain about things. I'm not. Complain away, it's healthy, but there are better ways to communicate with the people who can actually address the problem.

[dead]

> Kinda wish the author would attempt to collaborate rather than write stuff like this and I’m too dumb for Zig’s new IO interface but, whatever, it’s their blog so they can do what they want.

Damn, Andrew Kelley really come across as a dickhead when taking any bit of criticism about his language, often painting them as bad actors trying to sabotage the language.

This isn't the first time he repeats this behavior.

EDIT: https://news.ycombinator.com/context?id=45119964 https://news.ycombinator.com/context?id=43579569

> any bit of criticism about his language

I'm not even sure that it's criticism. I read it as a genuine open question.

At least in my experience, asking questions like this through GitHub issues or a mailing list are met with negativity. I don't want to post through a channel where I'll get a snide, terse response from a maintainer. I'd much rather post to my blog audience, who I find to be generally knowledgeable and friendly enough to already be following me. And if I found an answer, I'd post about it and explain what I learned in the process, linking from the existing post.

In a lot of ways, I think Andrew's response is exactly the sort of flavor of reply that I would have expected no matter what channel the question had been posed through, and that's exactly why I wouldn't have gone through those channels if I was the author. His reply didn't answer the question aside from implying it's maybe an issue, nor did it invite feedback.

Yeah, and his behavior in this LLVM discourse thread made me not want to ever try Zig: https://discourse.llvm.org/t/rfc-libc-taking-a-dependency-on...

That all seemed pretty adult and tame. Maybe slightly stand-offish at worst. And I tended to agree with Andrew in that thread. A project like Zig is an absolutely massive undertaking. I can cut Andrew some slack. Not everyone is perfect all the time, and his behavior there was nowhere close to BS I have seen in other open source projects. Ahem, Linus.

Did you read until the end of the thread? I was thinking the same at first but only because it took awhile for the conversation to play out.

From my plain reading he didn't take time to understand the proposal before providing feedback. That's fine as far as being busy or miscommunication goes, it happens, but after it was pointed out he never apologized or offered more constructive feedback. Which again is fine, but I'd expect a technical leader to not isolate the maintainers of their most critical dependency. Clearly he gave them a terrible first impression.

I'm guessing you never tried Linux either

Just because a popular project leader is a jerk does not mean the way to success is to be a jerk too.

Sure, but the evidence suggests that a complete inability to deal with jerks is going to be very limiting.

Maybe for some people. But most people are not jerks and you can absolutely limit yourself to dealing with them only.

Unless you want to participate in your HOA or local government, then I can't see how to limit myself to dealing with only non-jerks.

[deleted]

That was not my takeaway from his comment at all.

Quite. I don't think it's unreasonable to expect someone to check the issue tracker before blogging and I don't think Andrew's response was at all problematic.

I'd say the only issue what the "too dumb, but whatever" comment.

That should have been removed and it would have been totally reasonable.

Edit: Oh actually, the author has another blog post titled "I'm too dumb for Zig ...". With that context, it makes sense and I agree it's a reasonable response. I'm sure other readers like me didn't know that context though.

Idk, Andrew's comment seems fair enough to me.

Andrew may be expressing frustration or dismay or annoyance in that statement, but he is not definitively "painting them as bad actors trying to sabotage the language". You are HEAVILY reading into his statement.

He only said he wishes the author would have taken a different approach. So what? Why does everyone have to jump in and start psychologizing or essentializing Andrew based on one paragraph?

Why does one paragraph have to say so much about who he is as a person? Even if it did piss him off for a few hours, so what? He's not allowed to wish someone took a different approach?

I tend to think Andrew Kelley is a great guy, not just technically but as a person. And I think that because I've listened to him talk for dozens of hours. I can guarantee you that that one sentence he wrote is not the beginning of a character assassination campaign against the author of this blog.

He made Zig because he wanted to put something good into the world and improve the state of software. How about we include that in our analysis of Andrew's character? I'll leave it to the reader to consider whether the multi-year full time dedication to Zig should be weighed more heavily than a personal feeling he had for two minutes that he expressed respectfully without attacking anyone's character.

From his "Open Letter to Everyone I've Butted Heads With":

> My friend - it's not personal. I care about you. I actually do value your opinion. I'm interested in your thoughts and feelings. I want to make you happy. I'm sad that I can't serve you better with my open source project. I want to. I wish I could.

> I'm hustling. I'm playing the game. I'm doing what it takes to make this thing mainstream and a viable, practical choice for individuals and companies. If you talk shit about Zig in public, I'm going to fight back. But I respect you. I see you. I understand you. I don't hate you. I would literally buy you a drink.

https://andrewkelley.me/post/open-letter-everyone-butted-hea...

Nothing wrong/strange in those posts.

In any case I've seen how communities treat the authors of important projects that touch their livelihood or habits to be unsurprised an author may lose it at times.

I know what you mean, but name-calling has got to be one of the worst ways to call for some decorum. It just leads to flame wars. (Be the change you want to see, and all that.)

EDIT I totally missed the context

Read the comment I replied to.

edit: np :)

My bad :)

[deleted]

Yea I think my post came off as insulting which I didn't mean at all (I particulary don't consider "dickhead" as insult but more a synonym for bad character)

I have nothing against him at all or his language (in fact I hope it further replaces C dominant position in embedded systems and low level programming), I just wish he toned down his passive attitude against criticism acting in good faith.

Interesting. I liked the candid honesty.

[deleted]

yup, he's also got a consistent history of aggressively disparaging and misinformed comments about go, fwiw