Andrew Kelley: An Open Letter to Everyone I’ve Butted Heads With
Thank you for creating Zig and leading it to where it is ![]()
Andrew, you speak from my heart!
I like it that, here in the forum there are a lot of really clever people, many with strong opinions (like me), and of course with different and sometimes diametral opinions, discussing passionately about our common passion: programming - while respecting each other.
Being spread all over the world, I’m pretty sure if we’d meet in real life, we would have much fun discussing and trying this and that while having a beer or a cup of tea or coffee together.
In just written conversation, sometimes what we write can be easily misunderstood and come over rude while it’s not actually meant that way.
Working on a widely used open source project myself, in my spare time and only partly paid, I know how hard it is sometimes that you cannot fulfill all wishes, even when you know that they are absolutely reasonable.
I really appreciate the sentiments expressed in this blog post, and just wanted to add how much we appreciate Andrew (and the rest of the core team, and contributors) for devoting so much time and energy to making a tool that is such a delight to use— even if we don’t all agree on every decision. I love that Zig has a clear vision, and that Andrew sticks to that vision, while still being gracious and charitable with people who have alternative opinions.
Funny I thought about all this this weekend following another “v lang” post on HN and also following the bcachefs drama.
We, as a species, need to be able to communicate better over this new medium. Not necessarily all be hypocrites, but learn a new form of politeness in order to convey a message without eliciting useless negative emotion. It requires attention and work.
Anyway, I am glad zig exists and I thank all those who contributes to it!
This is actually really important since there are so many different ways cultures communicate which are misunderstood by other cultures. Even things which are pretty much incompatible with each other.
The best example, which stuck in my head from school, when we had this as a topic in English class, was a difference in body language between Germans and Britons: When a disagreement comes up during a discussion Germans generally sit upright or even lean a little bit forward as a sign of paying attention and respect to the discussion and the others as a whole. Britons on the other hand generally interpret it as a sign of aggression and because of it start to lean backwards to diffuse the situation. This is again generally interpreted differently by Germans as a sign of indifference and disrespect, which is deemed as insulting.
Another example is one my dad (for further context, I am from Bavaria) experienced a few decades ago. At the time he worked as an electrician and got sent by his company to Japan to lead the installation of the electric installation of a cruise ship. The guy who was supposed to install the bulb sockets became ill and the other one who could have done the job deemed it below his dignity since he is licensed to install stuff up to 20k volts. So my dad decided to do it himself to prevent delay. This caused a problem of authority, since the others now were questioning, if he even is supposed to manage them, since leaders aren’t supposed to do that stuff themselves.
So, yeah, communication in general is not easy. Communication in an international context is even harder because of differences like the ones described above (and the Internet is inherently international). And now put on top of that the fact that by far most communication in the Internet is pure text which makes it exponentially harder since a big part of human communication is non-verbal but entirely missing in text form (technically that’s what emojis are supposed to help with, but they are lacking). And as it turns out, our brains really try hard to fill in that gap by making stuff up, which can create problems even without different communication styles from the international context intermingling.
And now you know why one needs to major diplomacy to become a diplomat.
At least for my part I try to read and write stuff more in a “technical report” kind of style and not read between lines or put stuff between lines since from my experience this prevents the most amount of problems, even if things can become dry or annoying to read (which some people consider off-putting).
As a zig newbie, I have to say I enjoy zig as whole very much (the language, the stdlib, the community), so kudos to Andrew for making all the right decisions!
On a sidenote about the tabs vs spaces issues mentioned in the blog post:
I wrote my first, crappy zig app this weekend and it reformats zig source code to change the amount of identation - which I find funny - ahem lol
Take care,
Martin
Fantastic take on criticism and empathy with the critic! I really appreciate the direction you’re taking Zig in and can’t wait to see how this develops
Very nice to hear the sentiment shared in the blog by Andrew. Zig is a fantastic language. There’re way more people care about the language than the few to try to sabotage it. In fact I have overwhelming good interaction here. Don’t pay too much attention to the few distracters.
During the whole December 2024, I had to take a medical leave from my job (not programming related). When I was at home and recovering, I started doing more programming with a hope that even if I eventually can never go back to work again (my job is very safety critical), I still can have something meaningful to learn and do in the future.
Then I bumped into Zig. And I watched a lot of Andrew’s videos. Then I started writing some simple programs in Zig. Then I have a feeling that I eventually started learning computer.
Andrew’s videos and a bunch of Zig tutorials and this forum were my Christmas and New Year companions, just like my family.
In mid January, I got a phone call from the doctor that I can go back to work. I am glad that I don’t have to end up with starting a new career or new business with a pre mature programming language. But I also glad that I know more about programming and computer because of Zig, so I can continue to create better things in my spare time in the future.
This guy and this project literally changed my life and encouraged me to keep doing something meaningful no matter how hard the life is.
cuts off Andrew, turns around, flips him off, this is for closing my feature request.
Is there a Zig vision statement that you can point people to? There very likely may be one, and I’m guessing I just haven’t found it. The “next release” notes are a great guide to what the vision is for the next release, but a project vision statement could potentially reduce a lot of frustration, which is ultimately what leads to head butting. When I say vision statement, I’m asking is Zig meant to be primarily a systems programming language, primarily an algorithm development language, primarily a way to make super-optimized music applications, a way to create great event-driven frameworks, etc. etc.
Typically there is an overarching goal as an umbrella to a tree of (prioritized) subgoals. I am missing a clear picture for this. For instance, my own area of interest is floating point computing. My guess is that correct FP order of operations is a priority, but definitely not at the top. I have found that Zig is actually faster than other languages, but despite trying hard, I have been unable to get “validated” order-of-operation results. If floating point is very low on the list of things to work on, people like me want to know that. If great audio applications are very high on the list, people want to know that.
There are all these competing needs from potential future and existing users. With a clearer picture of a hierarchy of importance, there is less frustration, and therefore less head butting. A lot of people can cut a lot of slack if they just have a better understanding of where things are headed, even if over a multi-year timeframe. The language is clearly great in so many ways, but people look at the great parts, and wonder where their own needs will potentially fit into the vision in the future.
Thank you for creating super fast floating point that is almost always “close enough”. That’s great, and I love that, I just want to know if that is the best I could hope to expect. Again, it’s not all about me. There are tens of thousands of people with their own domains of interest, and I’m sure they all want some guidance to know what to expect as the years go by rather than to be kept guessing. Maybe that’s not possible, but maybe I’m just not informed enough about Zig’s overall vision.
Thanks again
@andrewrk, thank you so much for your letter! I think you are absolutely right about people being upset sometimes due to how important certain issues are for them in their daily life. I appreciate you saying that, and I want to add my thoughts.
If you have reacted negatively at times to criticism, you have also managed to create one of the most friendly and open programming communities, by your example I believe. Your letter is an example of that. This is not easy to do.
And although it should be obvious, I want to acknowledge that you care about the details and usability of the language as much or more than anyone else. Your attention to getting the details right and determination to make it as powerful and simple as it can be, given its goals, has made it the best language available as a C replacement. It is a pleasure to use and it gets better all the time.
When you become discouraged please keep in mind that you really are succeeding, and there are many people out there who appreciate the difficulties you and your team are dealing with.
I’ve been away from Zig for a couple years building a database in Rust, and now I’m back because I just can’t stand the complexity any longer. Switching back to Zig (where I started) is probably crazy given the amount of work to switch, but I’m retired so I get to decide to do things like that. I’m in the middle of porting now, so I’ll have to see how it goes. So far so good.