Please see the disclaimer.

Introduction

There are some people who, when I have to interact with them on the Internet, I dread it.

Usually, it’s because of one or both of these things:

  • The person hates me.
  • The person is a member of an “evangelism strike force” (ESF).

The Rust Evangelism Strike Force was the first such strike force I met. It’s the reason I won’t touch Rust.

The second evangelism strike force I met was the Zig Evangelism Strike Force.

I’ve come to define an evangelism strike force by its members, and its members always do the same thing: keep trying to convert you even when you tell them to back off.

Cosmopolitan

Now, one particular person had shown signs of being such an evangelist for her project. The person is jart, and the project is Cosmopolitan.

So it was with great trepidation that I found out that she had replied to a comment I made on lobste.rs in which I had mentioned that I was going to spend my weekend designing a build system.

Yes, a build system. Yes, I know there are too many. I still want to write a build system. Don’t @ me.

Well, jart said that she was working on a build system too and linked to this comment on GitHub.

As you can see, she deleted all of her comments, so I will do my best to reconstruct them fairly. However, you can take my reconstructions with a grain of salt.

I said:

To be honest, I’m not sure how that is a build system.

You have an interesting project in cosmopolitan, but after I looked into it some months ago, I came to the conclusion that it’s better to compile differently per platform. Just my opinion, though; keep up the interesting work because I could be wrong.

Then she said this:

What could we have done that would have changed your mind?

I know that one because I quoted it later.

She also said that she was decades behind all of the other toolchains she is competing against, so I shouldn’t judge Cosmopolitan too hard.

Then I said:

I don’t think you’re going to change my mind. I wouldn’t want you to spend time doing so.

I know that decades of work is hard to catch up on. I didn’t judge cosmopolitan based on that at all. In fact, it’s impressive what you’ve done.

I just personally think that it is better to spend the effort on making cross-platform code less on making cross-platform executables and more on making cross-platform source code.

The reason I think this is because in my opinion, it’s easier to make solid foundations because doing so makes it easier to accept and adapt to differences between platforms. And for me, solid foundations are the way new stuff will, and should, win against stuff with decades of work because better foundations will automatically make better software.

Again, I could be wrong, so you do you.

Notice that I said, “I wouldn’t want you to spend time [evangelizing to me].” I made her aware that I did not want to talk about Cosmopolitan.

Then she said something about wanting to make solid foundations and to do that, she was peeling back the layers on software before she added:

It’s also fabulous not having ifdef soup :-)

By this point, I was tired of the whole thing, but I was really trying to be nice, so I said:

It is good that you peel back the layers, but where we disagree is what layers to put back on. You don’t want to put any on, prefering to make a foundation on none, and I think one well-designed layer would be a great foundation.

We have a fundamental disagreement there.

It’s also fabulous not having ifdef soup :-)

Cosmopolitan still has it. It’s always going to be somewhere.

Also, there are some platforms that require you to go through the libc because their kernel ABI’s do break, on purpose.

Anyway, I guess what I am trying to say is good work, but please, do not try to convert me.

And Cosmopolitan does still have ifdef soup. I checked before writing that reply.

Also, note just how much the quote from her sounds like evangelism.

This time, I was more explicit by telling her, “please, do not try to convert me.”

Her next reply was a sudden shift. She quoted me asking her to not convert me and said she wasn’t trying to and claimed I was rude by saying so.

I replied:

What could we have done that would have changed your mind?

To me, it sounds like you want to convert me.

And I have been very respectful, even with that. If you don’t think so, well, I don’t know what to tell you.

She didn’t reply and eventually deleted all of her comments. It is because she deleted her comments that I have attempted to recreate this conversation.

And because she kept pushing me, trying to convert me to Cosmopolitan after I asked her not to, in my opinion, there is now a Cosmopolitan Evangelism Strike Force.

Culture

To make it clear, I don’t blame jart for what she’s doing because it’s only natural to do so when you found or made something you love. In fact, I am a member of a church that is famous for being a little too evangelistic at times, so I, myself, could easily do the same thing. In fact, I wonder if I’ve already done it too much with my church.

I really hope I don’t become a one-man ESF with my own software projects. In fact, I have on my computer a draft post that I will never publish laying out the rules for me when it comes to interacting with other people about my projects, and those rules are designed to keep me from becoming a one-man ESF.

I won’t list all of the rules, but the number one rule is this:

I am in the business of solving problems.

This is important because if I have evangelized anything to the point that people ask me to stop, I have created a problem for them, which is the exact opposite of what I want because instead of creating problems, I should be solving them.

I’ve changed my approach with my church as well. Instead of trying to convert people, I just try to make their lives a little less miserable. The reason: I believe that the devil wants to make us all miserable, so making people less miserable is still a win against him.

Now, it may not be obvious why I am not going to list all of the rules I have for myself. The reason is this: if I list the rules, then people will use them against others.

That is not what I want. I do want a specific culture, a culture defined by the rule above, but I do not want the culture to include bashing other people over the head by yet more rules.

I am okay with listing the first rule because it’s less a rule and more a guideline; there’s no real way to claim that someone is breaking the rule. I also do want to make explicit the culture that I want so that people who like my software know what kind of culture to strive for.

Conclusion

There were four purposes to this post:

  • To preserve, as best I can, a conversation I had on the Internet.
  • To help people understand why I am not a fan of Cosmopolitan as software.
  • To help people understand why I am not a fan of Cosmopolitan, Rust, or Zig as cultures.
  • To declare the kind of culture that I want surrounding my software projects.

I hope that, in some way, I fulfilled at least one of those purposes.