Back to all posts
6 min read

Matz Told Me Why

Matz Told Me Why

On September 28 this arrived in my Reddit inbox:

Hello, You have been permanently banned from participating in /r/rails because your comment violates this community’s rules.

Note from the moderators:

Your account has by far the most reports on it without a perma-ban to date. Prior moderators have sought behavior changes and you’ve not applied them. I don’t think this action could come as a surprise to you.

Four days earlier, matz had closed one of my pull requests, and he told me why.

Ruby, in C

In 2024 I was still building SeurOS with LLMs, and I missed writing Ruby. So I tried to bring Ruby to it, starting with Ruby’s iterators in C: header-only GNU C macros, one header per method, so that times and each read in C the way they read in Ruby. I called it macroaggression.

I shared it on /r/rails from my old account, u/seuros. It got three or four upvotes and was gone within minutes. Nobody commented or sent a message. I assumed it was off-topic, since it had nothing to do with Rails, and hid the repository. The version on GitHub now is a fresh extraction, published this week.

Later I shared CrystalMeet, a Rust tool that turned Ruby into Crystal. It was removed too.

Both libraries get their own posts after this one.

Then Reddit suspended u/seuros, a story I told in the Rust Revolution post. Since then I have posted as u/TheAtlasMonkey. I never introduced myself there. I made jokes and got into arguments, and the downvotes stayed away. The removals came back when I started sharing my repositories again.

What matz wrote

On September 24 I opened #4951 on spinel, matz’s Ruby AOT compiler. I extracted a slice of macroaggression as happy_c.h and converted some of the compiler’s loops to read like Ruby, with no functional change. Matz closed it the same day:

Thank you for the idea and for keeping it a pure refactor (we checked: the generated C for the whole test corpus and optcarrot is byte-identical). We have decided not to take it, though. Lowercase function-like macros named times, upto and each, visible across all of src/, can silently capture any future function or variable of those names, and the readability gain over a plain for is small for the people who maintain this code. A half-converted codebase with two loop styles would also be harder to read than either style alone. Closing for these reasons.

That is a no I can work with. They diffed the generated C against the whole test corpus before writing it. The reason names a concrete risk and weighs it against the gain, so I know exactly what I would be arguing against.

It didn’t close the door either. That afternoon he had already merged four of my pull requests before I opened this one, and 27 minutes after closing it he merged another. He has kept merging them since.

The thread they removed

On September 27 I posted “Rails derailed when COVID came.” The argument was that around COVID the community started spending its energy on paperwork, governance fights, codes of conduct and the master to main rename, and that a lot of the people pushing it weren’t contributing code. It had a positive score, 60% upvoted with 58 comments, when the moderators removed it. Nobody told me, and I didn’t notice. People on Discord asked why I had deleted my own thread, until we worked out that the moderators had done it.

That silence was a decision. When a moderator removes a post, Reddit’s removal dialog offers to send the author a reason. Leaving none is an option the moderator has to pick.

The comments went where you would expect. I was told that starting a new project on master is infantile at best. I answered one commenter, whose handle ends in “ape”, with 🖕🏻 “this is for you for a fellow Ape”, since I post as a monkey. In the same thread I called the rename push “mental illness”, and when someone objected, I said it again.

I wrote those words and the thread is public, so I am quoting them myself. If either comment broke a rule, the moderators could have removed it and cited the rule. They removed the whole thread instead.

You would expect a sub that bans a middle finger to be as quiet as a church. The same day my thread went up, the front page got “Probably the Worst Case of Psychosis I’ve Ever Seen”, mocking David’s keynote, and “DHH is a certified dumbass”, which opens with “What a unhinged clown.” Both are still up as I write this. I am not defending David. The question is which insults stay up.

When I explained my position to one commenter, the reply dismissed it as a wall of AI text and declined to read it. After that I stopped writing constructive replies in that arena.

The ban came the next day. Of everything I wrote in that thread, the message linked the middle finger. The note also credits prior moderators with seeking behavior changes.

A few months earlier they did message me, to say they were receiving a lot of reports about my account. Moderators of subs where I never post get reports about me too. My accounts have been a mass-reporting target since the u/seuros days, so the count mostly measures how organized the people reporting me are.

Greg

Last November my friend Greg Molnar was banned for 28 days from /r/ruby, which shares moderators with /r/rails. The thread was about a Hanami release. Six hours before Greg, I had commented “Wow, finally Hanami devs reading Rails code source,” and got upvoted. Greg made the same sarcastic point and got downvoted:

The amount of innovation is insane! With this release, you can now define restful routes with a single line! I wonder when will Rails ship that? Maybe in 2007.

I went to Discord to tell him that wording matters and that people there get triggered by anything, and found his message waiting: he had just been banned for it.

I deleted my comment, expecting to be next. It took until September.

Complexity merchants

Part of the thread wanted my default branches renamed. I already wrote about the week the community spent on main versus master in The Republic of Slop. The people asking for it are complexity merchants: they sell work that costs the maintainer and ships nothing.

I could have gamed the votes with alt accounts. I didn’t.

It makes me wonder how many people have been banned or muted on /r/rails without the rest of us ever knowing.

Matz told me why he said no, and he kept merging my later work. The /r/rails moderators have removed my posts since 2024 without explaining a single removal. Only the first kind of no gives me something to build on.

🔗Interstellar Communications

No transmissions detected yet.Be the first to establish contact!

• Link to this post from your site• Share your thoughts via webmention• Join the IndieWeb conversation

Related Posts

CrystalMeet

CrystalMeet turned Ruby into Crystal with a pile of regular expressions. It half worked, and the other half lives in Ruby's runtime, where no regex can reach. /r/rails deleted it in 2024. Its scenarios are landing in spinel now.

rubycrystalrust