My Thoughts on the Bun Rust Rewrite - Andrew Kelley

It’s nice that he was honest about being a shitty person, but that does not excuse him from being a shitty person.

You can have a high risk high reward business without demanding gruelling work hours, without being shitty to the people who you depend on to get that reward.

Someone who cares about the well-being of their employees would never do what Jarred does, period!

And that is something you can’t separate from buns relationship with zig and its communities because it directly impacts the people in those communities as that’s where bun hires from.

Regardless of if you think it is a personal attack or not, it is relevant to the point Andrew was making of their damaging behaviour.

I can tell you from accounts by ex-bun employees, Andrew still paints him in a better light than he deserves imo.

19 Likes

I think that is not honest unbiased take, I also know Rust not only Zig, I never get segfault in safe version, where I have got segfault in Zig. Zig needs to follow propher code guide style that objectively harder to scale in large team for long term. Arena allocator helps simplifying lifetime management but it never hand back allocation when dynamic data structure grow, eg :

| old 50 mb can not be reused | older grow 100 mb can not be reused | newest grow the active block 200 mb |

That waste 150 mb, each time it grows, older memory blocks are not freed + can not be reused without resetting the whole arena where can not be done because only want to free some memory but keep other some memory, thus it can easily result to high memory usage

2 Likes

This might be a bit off-topic. Arena does simplify memory management for me, but I don’t really use an arena in my programs as a global replacement for GPA.
I see an arena instance itself as a representation of a lifecycle. In your example, if there’s absolute proof that the old 150Mb will never be used again, then I think I’d create a separate arena instance for it to distinguish it from the new memory. I also would never use an arena across threads (even though it was recently modified to be thread-safe) . (strictly speaking, I might create an arena in one thread and free it in another, but I would never alloc and access memory across multiple threads at the same time).
But to me, it’s still progress in memory management, because allocations and deallocations of objects that share a lifecycle are no longer fragmented, which improves allocation performance and memory locality.

2 Likes

Yes. This is what I meaned. You are absolutely right. Even if I am wrong at this time as what Krist has corrected me in his reply, it did give me an impression that they got special treatment earlier, but broke up later. This is not good.

I wish they could be more clear and avoid these things in the future. I always wish them well and better.

You’re asserting that the bun working arrangements and expectations were morally wrong, which is an opinion you’re certainly entitled to. The problem is that you demand other people accept these premises and characterizations, which you’re not entitled to.

1 Like

This isn’t about morals, it’s about empathy, which many people certainly base their morals on.

I use empathy here as caring about, and wanting to minimise, others suffering.

Buns working arrangements do not align with that, this is a fact.

11 Likes

I said about arena allocator because the GPA is one of the source of complicated lifetime management, where arena allocator is one of the solution that makes it easier, but it has its own gotcha. I just revisited the arena allocator code, I realized it is not general arena implementation, more of hybrid arena because I see code that try to resize block if possible, and reuse older block if the size is enough. That means, it solves some of the downside of arena allocator, but there is still the cons, this one : if the new grow needs bigger size that all the older block, it will create new bigger block thus the older ones still just sit there doing nothing (if the resize attempt fails), and still can not free old variable to make free space for incoming data without freeing the whole group. For example :

Alloc a contigous dynamic array that the size of the data is unknown, so it will grow

Loop {
Push data to the container (eventually it grows after max initial alloc is reached, the new size required is bigger than older one (can not reuse older one), if resize fails it allocate new block bigger than older block then copy the data to older block, the older block sit there doing nothing, more regrow = more blocks are wasted doing nothing but occupy memory
}

Using separate arena does not solve where the one that grow is a dynamic data structure, eg dynamic array, no way 1 dynamic array live in 2 arena right?

2 Likes

Yes, a highly subjective definition of “empathy” is being used as a proxy for morals. We agree on that point.

1 Like

If work-life balance to you means a lot of time spent not working, it’s probably not a good fit right now.

Maybe it’s just the culture I live in, but the tone-deafness of that statement depicts a lack of empathy towards ones employees to me. Not to mention that Jared’s 90 hour work weeks would be a legal liability for any employer where I am.

8 Likes

You convinced me, you are right. I agree that there is an abstraction leak here, so the use case of a constantly growing ArrayList isn’t really suitable for arena.

Fixating on the subjectiveness of a word after I clarified my meaning instead of addressing my actual point is not a good argument.

I am also curious what definition of empathy you have that these working conditions wouldn’t still be lacking.


there are quite a few studies[1][2][3][4] on how a (around) 40 hour work week, which is (was) the norm for a full-time job in the US, is harmful to employees.

Jarred is asking for double that


  1. The Effect of Long Working Hours and Overtime on Occupational Health: A Meta-Analysis of Evidence from 1998 to 2018 - PMC ↩︎

  2. Long working hours increasing deaths from heart disease and stroke: WHO, ILO ↩︎

  3. https://bmjopen.bmj.com/content/12/4/e051131 ↩︎

  4. https://www.sciencedirect.com/science/article/pii/S0160412021002208 ↩︎

2 Likes

In my culture you’re allowed to work as many hours as you please and freely associate with people who share a similar drive and ambition. You’re also free not to associate with people who have such expectations.

I think many people share my belief that there is nothing morally wrong with such arrangements so long as expectations/risks/rewards are established upfront and agreements adhered to.

5 Likes

In the Jetbrains interview you talk very eloquently and thoughtful about programming and other concepts, in the blog post you publically tear down a person in a way that many people would describe as immature.

Badmouthing other people is typically not seen as an acceptable behaviour. That’s just a basic social agreement, we teach our children not to do it. Even if you would be factually correct, we used to expect it as a professional courtesy in public discourse not to talk shit about other people.

You could have made your points about Bun and its code quality without mentioning Jarred at all. Yet you chose to open the blogpost by criticising him as a programmer, a manager and a person instead of criticising Bun as a codebase. The underlying discussion should be about the merits of Zig vs. Rust, manual memory management, etc. , not about Jarred Sumner.

And so the blogpost does look misguided in the sense that it shifts the factual discussion about Zig|Bun|Rust to a subjective attack against a person.

e: You write “Jarred was already writing slop well before he had access to LLMs.” And sure, that’s a joke that’s fine for a private conversation. But when you’re the ‘Zig guy’ and share stuff like this publicly, and people listen to what you have to say, you basically just look like a bully with a platform. You’re making fun of another developer, in an “am-I-rite?”-rofl-tech-bro style.

That’s just not a good look at all, and that’s why you get backlash for this one.

All that said, I don’t envy you. You never asked to be seen as ‘St. Andrew’, and it must be hard to be in the public spotlight with everything you say. But you’re the BDFL of Zig, you have a voice now, and if you accuse another person of being a sloppy programmer, stinky manager and unempathetic Thiel follower it will be seen as immature, bad style, unprofessional and besides the point by many people.

11 Likes

You assume people have the luxury to choose better employment, this is far from the reality of most people.

You also assume that this information is presented up front, again, not the reality, many employers obscure this as much as they can because they know it is bad.

17 Likes

In my culture you’re allowed to work as many hours as you please and freely associate with people who share a similar drive and ambition

In the EU, employers are legally obligated to ensure that employees don’t work more than 48 hours a week averaged over a certain number of months. This is to prevent abuse, as employers are by their very nature in a position of power over employees.

6 Likes

I’m going to preface this by saying this is Andrew’s personal blog and I, in no way shape or form, am trying to tell him “you can’t say that” or “you can’t post that”. At no point did he say anything similar to “I am saying this as the voice of Zig and ZSF and my opinion is what Zig’s opinion is”. He’s within his full right to post this. I also want to say that not a lot of what I’m going to say is unique. I read through a few of the messages in this thread but I didn’t read through everything.

I agree with basically everything the blog post says. I was not fond of the Bun migration, I am not a fan of AI until anyone can provide any sort of information on how this is possibly a positive for humanity and nature, I am not a fan of VC-owned things, and I’m not a fan of Anthropic. I didn’t like the way Jarred handled the migration both technically speaking and social media wise. I think that a lot of people here would agree with this.

I deeply care about Zig. I’ve been using it as a daily driver for all of my personal things since 0.14 and I only use a different language when I must. I love Zig, the language, and Zig, the community. I want to see nothing but the best for the language and absolutely nothing but the best for the maintainers. I want them to continue doing what they are doing - developing a language because they want to make a good language and not because they have some shareholder deadlines and requirements to meet.

Still, despite the fact I agree with the blog post, despite the fact I think Andrew is well within his right to post it, I find it unwise. Zig is more than “the language Bun uses” when it used to, and “the language Bun migrated from” when it didn’t. For quite a few months people here have been saying how overstated the value of Bun for Zig was, and I’d say it was probably a negative. It annoyed me beyond belief when I saw opinions similar to “this is REALLY bad for Zig” come up after the bun migration branch came up. So what I don’t understand is why drag Zig back into this? It’s been months since the migration drama, and while I know the blog post came out recently, no one really cares as much about it as they did about the migration itself.

The answer to why drag it back is that as a personal blog, Andrew can just talk about personal stuff, which is absolutely fine. But it’s the personal blog of the creator and benevolent leader of a language. People associate Zig with Andrew, for all intents and purposes to the public, Andrew’s opinion is Zig’s opinion. It comes off as salty, it comes off very personal, which goes against what Zig has been showing it is - a language which doesn’t care about your opinion, but a language being developed in order to be a good language.

The opinions of the public matter in the sense of that, while very few are actually going to become maintainers, people will think to themselves that they do not want to use a language because of drama around it. It’s something completely taken out of the story of Rust - I am of the belief that if it wasn’t for drama, Rust would be significantly more mainstream right now, even if you excluded the fact it’s the LLM’s language of choice. Zig has never marketed itself as a language for everyone, a language everyone will like and enjoy. It’s opinionated, we all know that. But I fear that this will impact the future in the way that this will make for one less future Zig maintainer, one less future Zig sponsor, one less future project using Zig because of not enough developers who are comfortable with it.

The peanut gallery will look at this and think “Zig is a language that is salty, that people are moving away from. Why should I be using it?”. And you could say that not having those people in your community is intended, but I just disagree that this will outweigh the negatives I mentioned earlier. In the very optimistic case where people suddenly become clairvoyant and understand that Andrew didn’t intend for this to be a Jarred, the human, flame piece, I can only see this being neutral for the very thing he, myself and everyone here (I hope) is passionate. Blog posts shouldn’t be written purely to be positive EV, I get that, but as the maintainer of a language that is so tightly associated with you, your voice holds weight even when you speak personally. People will remember this, they won’t remember my post that you are reading right now.

As for the comment: (apologies for not quoting directly, it won’t let me on mobile)

Why did people like the JetBrains interview but not this?

The JetBrains interview was about Zig. About what Zig does well, about what Zig’s contributor guidelines are. About what the good sides of Zig are, about what the great things of the ZSF are, and how to remedy all the negatives that may arise inside both Zig and ZSF. This post is not the same as the interview.

I want to end this long ass post with, Andrew, kristoff, whoever from Zig core is reading this, understand that I in no way am trying to tell you what you should think or say. I am typing this out out of pure concern for Zig and the community, and not disagreement with the actual contents of the post itself nor the fact Andrew chose to post it on his personal blog. I have seen the feature request messages and demands from Jarred, but I prefer not to get into that, but I fully understand why the post said what it said and I agree with it, but to me this feels like avoidable drama for a language that is so scrutinised for everything. This will get brought up in discussions about Zig that have nothing to do with it, and I believe that this will have impact to the language that will be negative.

10 Likes

I guess I’ll say that I agree with the premise and feel sad about the conclusion. It’s sad because if true and if action is taken to avoid it we’ll move towards corporate sanitisation of the communication from a bunch of actual humans who really do have their heads in the right place on so many issues.

In some sense I think this is worth it, and this kind of band aid should be pulled off in the future again. Zig isn’t a monolithic corporate entity run by drones, or a radical move-fast-and-break-things run by techbro capitol seekers, it’s run by real humans who have real feelings trying to make a sustainable language in an economically sustainable way. That fact is as much of why I enjoy working with it than the technical prowess shown in it’s design. If a post like this every once in a while brings us back down to earth to remind us of that then I’d rather that than everyone involved be too afraid to speak their mind and give us an actual way to make a human to human judgement of character.

So yeah, there may be negativity that trickles out, discussions of the language may now often include some aspect of this “drama”, but the alternative of self-censorship and never hearing how the leader of a project like this actually thinks on a human level is just plain worse in my books.

3 Likes

I personally find the post rather benign, there is clearly a massive disconnect between ZSF’s goals and whatever the hell Bun/Oven is doing. I think making it clear, even through what comes of as “burning a bridge”, is absolutely valid I would expect nothing less from someone that truly cares about what they are building. If I was to take a more extreme stance I would say Bun (the software) causes/caused active harm to the image of Zig and how it was perceived, anything short of a complete and absolute condemnation of the project, the engineering behind it, and by extension Jarred, would be insufficient as a means of following ZSF’s mission statement. From my understanding the people in SF exist in a bubble where the idea that software is getting actively worse everyday (due to them and their practices mind you!), is completely absent. If you go on twitter/X right now you will see that Andrew really kicked the hornets nest here, which is funny considering he went rather soft of Jarred and his tech overlords.

4 Likes

It’s now no bun vs zig, it now Andrew’s anti-AI attitude vs some AI “cultists”. After the JetBrains interview, Andrew you “need” to be careful of what you say public, any wrong you say, you will be attacked hard by them. :rofl:

With regards to tone, Linus Torvalds is / was known to be abrasive, levying insults, etc. It sees criticism, but seemingly not indicative of the quality of his project nor affecting his standing too much. As I understand he just “owns” this aspect of himself.

Similarly: Jarred misrepresented Zig as the source of his own faults, then vibe coded his way to a language that enforces rules he didn’t have the discipline to follow originally, and this post addresses that in a colorful way. I would say just own it and stop engaging with this drama?

That said, if this backlash affects Andrew personally it might be recommendable to not conduct oneself this way. No shame in that, for me it wouldn’t be worth it to get dog piled.

3 Likes