Posted by amalinovic 17 hours ago
People who were happy with Rust didn't have same need to criticise Zig in online spaces as Rust is the established player in the C alternatives space. (Though Rust is on the other side when compared to C once you expand the space to "all low level programming languages").
Also for people who don't care about the space at all, Rust has had years of exposure to promote fatigue, while Zig hasn't (yet).
> People who were happy with Rust didn't have same need to criticise Zig in online spaces as Rust is the established player in the C alternatives space. (Though Rust is on the other side when compared to C once you expand the space to "all low level programming languages").
I think that this effect is...more real and intentional than I wish it was or think is healthy.
There's no denying that Rust benefited greatly from heavy "language evangelism" from around 2014-2022 or so (rough subjective range of dates, ending with when I feel like Rust became sufficiently mainstream that "comment section evangalism" is no longer the primary driver of the language's growth). The atmosphere that surrounded the language evangalism during this era -- from my recollection as someone who was aware of Rust but explicitly not interested in it at the time -- felt like one of curiousity and exploring new innovation in the programming language design space, and it didn't come across as pushy or some kind of moral imperative.
Additionally, most of the evangelism was not driven by the Rust project itself, but more of a grassroots thing from:
- Early users
- People who thought the language was interesting without having used it
- The attention that came from prolific early Rust projects like Servo and ripgrep
- The attention that came from the language's technical innovations
(The only person I remember regularly seeing in Rust threads who was actually associated with the project was Steve Klabnik, and I consider him a stellar example of how to represent a project online in a way that's respectful and not pushy or combative.) And eventually I had a programming task where, thanks to those deep, insightful, and respectful comment threads, I recognized that Rust was the right tool for the task I was trying to accomplish, learned the language myself, found it a joy to use, and began using it more regularly.
But once Rust became mainstream, the eternal September kicked in. Now there seem to be quite a lot of people who are more interested in "language wars" than in healthy, technical discussion of programming languages, and it's exhausting. Many threads about C or C++ or Rust or Zig or Fil-C or whatever seems to get overtaken by these obnoxious, repetitive, preachy, ideological comments about why you should or shouldn't be using Rust, often with very ill-informed armchair takes.
I think this is just something that comes from mainstream Internet culture and is not very representative of "the Rust community", and especially not the Rust project -- most of the serious writing and comments coming from people actually involved with Rust have that spirit of respect, openness, and curiousity about programming language design that I remember from the 2010's. A lot of people who work on Rust are deeply interested in the tradeoffs and innovations of new programming languages and fundamentally excited about the possibility of Rust becoming obsolete because something better has come along. But now that Rust adoption is increasing and the broader Internet culture is being forced to consider it, you see a lot of unhealthy reactionary takes from people who act like programming languages are a zero-sum game and they need to pick a side.
Now Zig is where this gets a little bit odd to me. My impression (as an outsider to the Zig community as well) is that Zig's leadership has chosen to view adoption as a zero-sum language war. It's as if they considered:
- How Rust benefited from language evangelism during the 2010's
- How many other "C-replacement" languages over the past 25 years have failed to gain large-scale adoption
- How "language war" discourse is extremely effective for enagement on places like HN
...and decided that the best way to increase Zig adoption is by intentionally leaning into that high-engagement "language war" discourse. Maybe it's not intentional -- and there's certainly a lot of cool ideas and high-quality technical discussion that comes out of the Zig community -- but I've also seen a consistent pattern of snarky or hostile comments from Zig leadership towards Rust people (such as calling Rust users "safety coomers", or jumping into in-depth technical discussions of Rust's downsides like compiler performance with substance-less cheap shots). Whereas I can't remember ever seeing anything but respect and curiosity from people involved in the Rust project towards other communities.
I'm just tired of seeing people draw battle lines around programming languages instead of promoting a spirit of learning from each other and making our tools better.
I've looked at the major rust implements from big corp. It's all Arc, copy/clone, and people getting fired.
What I'm frustrated about is a general pattern in online discourse of treating programming language adoption as a zero-sum game and pitting the communities against each other. This is nothing remotely new -- holy wars over tooling are just about as old as computing itself -- but Rust seems to have become right at the center of it in the last few years, and I think this is likely just a result of it becoming "mainstream" enough for people to care about it outside of a niche circle. I consider that a community issue with Rust, but probably an unavoidable one given the scale of the Internet.
The thing that feels different to me about Zig is that the language's leadership participates in the "holy war", which is different than what I have observed from Rust's leadership. It's one thing if random netizens are trash talking the "opposing team" like a sports fan, but I would expect people who are deeply involved in programming language design and representing their community to know better and behave better than that. It's surprising and disappointing to me; it drags down the overall quality of discourse and sets a bad example for the language communities.
Maybe my own perspective on this is skewed, perhaps I'm looking at Rust's past with rose-tinted glasses. But I think my experiences are comparable. From 2015-2020 I was primarily working with Swift and closely following that language's design and development, and the Rust community (which I was not involved in at all) felt like friendly neighbors. The two communities shared similar goals and had a lot of like-minded people, and because of that there was a lot of overlap and amicability between the communities. Both languages' teams were frequently comparing notes and copying features from one another.
Now I'm primarily working with Rust and closely following that languages' design and development, and it seems to me like the Zig community (which I am not involved with at all) should be on the same friendly terms for the same reasons, but the vibes I see from them are "this town isn't big enough for the two of us", and I'm bothered by that.
> I've looked at the major rust implements from big corp. It's all Arc, copy/clone, and people getting fired.
I have no idea what this is supposed to mean. Are you saying you've seen projects implemented in Rust go poorly? If so, I don't know what to say without any context, besides that I don't think there's a "one size fits all" for programming languages.
Or are you saying big companies' contributions towards the Rust project itself have gone poorly? I don't really know what to say about that either. I have felt that the direction the project has taken over the past few years has represented me and addressed my needs well, so I have confidence in their technical direction and leadership for the time being.
Zig's appeal lies in its deliberate simplicity and explicitness, offering a different path to high-performance, low-level programming compared to Rust's safety-first, more complex approach. This divergence in philosophy and implementation leads to different reception within the programming community.
C language is strongly tied to Unix ecosystem. C language and current compilers give this illusion of "ultimate control" to the programmers (although C has been interpreted quite freely for the sake of optimizations). With GNU C compiler finding a niche (i.e. being a free as in beer C compiler and a userland that's not bounded by the original Unix or BSD licensing / patents) and taking off in many servers the beliefs were kind of validated.
Rust attacks those beliefs in multiple fronts:
First and foremost, Rust comes from an inherent distrust to the programmer's abilities to write secure software. Rust creates strong obstacles against writing "magic" programs that freely interpret memory. Programmers are not treated as gods but fallible mortals who needed to be guided. Many C programmers interpret this as an insult to their abilities to manually check and verify a program. Rust is no less capable than C, it has all sorts of escape hatches that can be used in performance critical parts.
Rust compiler itself and the most of the programs written in Rust are permissively licensed. This is to avoid possible issues with copyleft licenses combined with statically linked binaries. Without having a stable ABI or ability to incorporate third party libraries post-build, GPL and LGPL create hurdles that doesn't exist in the mostly dynamically compiled world of C.
Rust has a more equal regard of the operating systems, including non-POSIX ones like Windows. Despite most people in the world interact with non-POSIX APIs the most, accepting it as another step.
Rust community tries its best to create a safe space for marginalized parts of the society. Go to any Rust conference and you'll see an over-representation of LGBTQ people. This probably rubs majorly white male subset of strongly identifying C programmers up wrong way.
The community also welcomes a bunch of different ways of thinking and questioning the basics of every single decision we made when we were building the systems of today.
Zig, on the other hand doesn't attack any of those "base principles". It fixes the most annoying parts of C programming: fluid integer types, really weak type system, hostile dependency management. It still trusts the programmer 100%. The default behavior is still unsafe.
People who choose Rust are also particularly worried about the security of the programs and they would like to prove and validate the language's existence and goals. They do that by reimplementing very popular and very senior projects in Rust and compare its performance and safety against existing C projects too. Many such projects have enjoyed a long time of no competition and now there is one.
I note that, while different circles may call for "purity" (fans of, e.g., Unix, Lisp, or Haskell), I think honestly pursuing the purity of writing programs to achieve one's goals means rejecting dogmatism and accepting pragmatism. Adherence to beliefs is fine if, and only if, the beliefs are fundamentally justified....
EDIT: I hadn't fully gone through the comment section on this one yet and yikes it's worse about it than normal.
Non-negligible in that it happens in almost every thread about rust. As in it isn't a rare occurrence.
There is no need for a new fund, the existing funds should be directed towards development and there should be greater transparency about how funds are gathered and spent.
This post is devoid of details and action. It should read that the Rust Foundation is going to convert to a 501(c)(3) and ensure that current funds are spent on development. Otherwise, this is a shell game with the existing funds and how they are going to be spent. Understand that sleight of hand bodes poorly and suggest impropriety.
* A programming language simpler than C++...
* That does not change so much accross time (maybe the biggest lie here)...
* With great design changes and adoption (it was before async/await, obviously)...
* Abstracted from big companies (again a lie, as Amazon hires most of the heads of the Rust programming language now)...
* With a great non-political community (actually, this is the biggest lie of all).
To me, it is a mess.
I recall the opposite, that the rust language (before the foundation) position was that being apolitical was a political stance. This is not the exact message I remember https://x.com/rustlang/status/1267519582505512960 and also can't realistically cover the entire community at large, as if that even has a single political stance.
For example, I remember talking that with you at the Rust Fest 2017, in Zurich actually, especially about the *very early version* of Async/Await.
It is ok for the community to move on different directions than the first one, and I don't blame any of you for that.
> It is ok for the community to move on different directions than the first one
I agree, I just disagree with your characterization of "the first one." There were differences between the original Rust and what shipped, but almost none of it has to do with what you've said. In 2012-2013, Rust very explicitly changed a lot across time, and now it certainly does not. Async/await drove a lot of that adoption. Rust was always "political", even before 2012.
"Non-political community" is an oxymoron, like "non-aquatic lake". Politics is the verb that communities do.
I think there is a reasonable argument that the default for a community with technical goals should be to accept social status quo conventions unless they conflict with the communities technical goals. But if the social default is "girls don't code and queers should hide" there is a reasonable counterargument that these conflict with the goal of making the technology (and community) available to everyone.
Queers should hide definitely isn't any social default unless the code is exclusively developed in Gaza. "Do what you like but please stick to technical considerations" isn't "you need to hide".
No it's not.
I'm an LGBT person with a trans partner and I find many codes of conduct to be chastising and purposefully finger pointing to conservative people.
A lot of them are basically, "your religious teachings or cultural upbringing aren't welcome here"
I don't agree with religious texts, but that's what you're wagging in their face with some of the CoCs.
Leave it at "don't be an asshole". It's that simple.
The current political climate, I feel, is a direct reaction to this.
A politically neutral space wouldn't permit religious people to harass trans or LGBT people, but it also wouldn't give anyone latitude to throw stones the other way either.
CoCs are "you're not welcome here at all".
Another thing: you always see language and project logos modified to bear the rainbow, trans, and BLM colors. You never see anything supporting Asians, white people, men, or Christians. If you did this, you would be called out as a racist. Which is so ironic.
Let's just get along and work together. Maybe we'll find more agreements amongst ourselves that way instead of trying to divide everyone into camps.
Some progressives are going to get very pissed off at this comment, but I grew up and live in the South. You can (and often must) work with people you don't agree with. It's not impossible to be friends either. You might wind up changing their mind, and they might wind up making you more tolerant as well.
No matter the person, it's really disappointing that we're still entrenched in the mentalities of tribalism, anti-intellectualism, "if you're not with us, you're against us", "an eye for an eye", "someone hurt me, so I'm going to hurt someone", and so on. And by "person", that includes me.
The Earth politics patch really can't come soon enough. How much do we pay the devs, again?
When saying these things out loud can be social suicide, well, it means a lot to see someone else say it first. So thanks. I hope tolerance can come back into fashion.
I've laid out a neutral response. Of course I have my personal beliefs, as one does, but I speak here without pretense. Believe what you will.
r/programminglanguages has the right idea: put a pride flag in the logo and a lot of these problems just sort themselves out.
the flag logo has proven surprisingly effective at weeding out bigots. Not just in this thread or the previous one, but also in the moderator mail: we've had at least several instances of mouth breathers writing rants along the lines of "How dare you use colors in your logo!" (that's a very nice "translation" of what's actually written in those cases). Similarly, several comments in this thread have been removed and their authors banned, due to comments that boil down to "I'm not a bigot, I just hate LGBTQ+ people". This will not change, based on the simple premise that such people aren't worth having around in any community, and these people don't contribute anything of value anyway.
https://www.reddit.com/r/ProgrammingLanguages/comments/17gcv...And it does work out well, the discussions stay on topic, LGBTQ issues aren't really a community topic despite the flag. Here's how that works out in practice, from today:
https://www.reddit.com/r/ProgrammingLanguages/comments/1onr6...
Someone says "he", they're corrected with "she", and that's the end of it. In more toxic communities where people are encouraged to use whatever pronouns they want, that simple interaction because a whole thing, where eventually one person calls the other delusional, the other calls them a bigot, and then no one is talking about programming languages. It's an eternal struggle, and for many people who build and maintain programming languages, they prefer to kick out the bigot rather than be called delusional, so everyone can get back to talking about programming languages. Still, there are plenty of online spaces, especially language spaces, where LGBTQ people are made to feel excluded. People upset with the flag or pronouns can join one of those communities, and everyone is happy.
(If anyone is wondering what kind of comments, they're usually veiled or not so veiled threats along the lines of this: https://news.ycombinator.com/item?id=45727677. If the mere presence of the flag keeps people like this out, that's fine by me.)
> Someone says "he", they're corrected with "she", and that's the end of it.
This is a good example of conversational flow in an environment where people are not reprimanded for referring to others with pronouns that accord to the speaker's personal worldview. One person says "he", another person says "she", and everyone tolerates this difference of expression whether they agree with it or not.
Essentially it's the most politically neutral stance on pronouns, as implemented in an everyday conversation.
Life's for too short to force people to do this, and ideally we should make it as feasible as possible for as many people as possible to never have to do this.
Not quite your fault, but the framing of "people you don't agree with" juxtaposed with the implicit statement of "people who promote hate" (or similar) doesn't make for a clear discussion. To be clear, those two types are well separated. If someone is of the latter type, really truly they are, then they can be removed without further ado (and I think GP would agree). I think the situations that are less clear cut will make people in good faith fight.
I like some people. Everybody else I work with if they're willing to work with me. Saying that we all have to agree with each other is basically giving up on the political project entirely, and going back to strongman rulers who organize by demanding conformity. Very relevant in these times.
> we should make it as feasible as possible for as many people as possible to never have to do this.
No, we should make it impossible to avoid so people can't sneak into adulthood without being properly socialized.
What does this mean? Are you talking about people who openly support actual murder? Almost everyone is opposed to that, of course.
The best defense against polarization is a strong and cohesive middle ground.
If you pull to far in the other way, all the bonds break. And it's a race for each interest group to seize power, rather than having some intermediating force that serves as a buffer.
Again: look at the political climate. It's a reaction. The pendulum is swinging harder and harder because we've given up on the middle ground.
Most of the people you hate (and you do seem to dislike them at least a little bit) have honestly never had an LGBT friend. Imagine if they did how that might change them.
Instead they hear voices from the LGBT community that want to outlaw them and their way of life. That's pretty hostile. And definitely is going to be met with the same attitude you're giving them.
I'm LGBT and I have many conservative friends. They're more apt to come around to it than you believe. You're shutting down any conversation before it can even happen.
Oftentimes, the voices are outside.
I think you're somewhat optimistic, and "the middle ground" is not a magical place. It's easy to fall into a false sense of security that comes from making (likely valid) criticisms of caricatured groups. Middle ground should not be sought for its own sake, or else it becomes useless (akin to Goodhart's law; roughly "when a measure becomes a target, it ceases to be a good measure"). People should embrace a diversity of values, but the burden is to stay true to a set of values and push for the truth.
Could you point out a code of conduct -- preferably from a large, well known project -- that reads this way in your opinion?
The fact that most well-known Rust crates are becoming huge bloat are becoming a problem to me, which is something that has been critized years again by the community itself.
As an example, I still do not understand why simple HTTP crates require more than 50 to 70 dependencies to execute a simple GET call...
Insisting that you should depend on code which itself has no dependencies is a bit hypocritical if you ask me. If you want a simple HTTP crate that doesn't have dependencies, you should follow your own philosophy of not using other crates and write it yourself.
Looking at ureq [0], for example, its direct non-build/non-dev dependencies are (counting duplicates):
- base64
- flate2 (4 transitive dependencies)
- log
- percent-encoding
- rustls (26 transitive dependencies)
- rustls-pki-types (1 transitive dependency)
- ureq-proto (7 transitive dependencies)
- utf-8
- webpki-roots (2 transitive dependencies)
The vast majority of the raw dependency count comes from Rustls and related crates, and I'd imagine reimplementing a TLS stack would be somewhat out of scope for an HTTP crate. I'm not sure there's much room for substantial reductions in dependency count otherwise.
This is what you get with package managers.
It's just it's not frequent.
There is very few things that need to be in the standard library. I only ever miss chrono or equivalent not being in std.
Then there are things like serialization and logging, which I like the idea of having promoted crates which are essentially just better advertised for newcomers. (Maybe included in the distribution already in some way).
That made me chuckle because both are quite the behemoths, as I have previously said. If they promised this, it was a lie indeed.
I do like Rust, but I steer clear of the community because of this tithe-seeking nonsense.
Edit: come on don't downvote explain your reasoning.