· 6 min read
The guild and the commons
Programming-language communities place the cost of learning either on entrants or on stewards, and each choice can harden into a status system.

There are two ways a programming-language community can imagine itself. One is a guild: a workshop organized around people who already know the craft, where belonging follows demonstrated competence. The other is a commons: shared infrastructure whose stewards keep building paths in because more capable participants make the project richer.
Zig often feels guild-like. Rust deliberately presents itself as a commons. I used to describe that as harsh versus kind, which was lazy and also wrong about the documents. The difference is practical. When a newcomer is confused, either the learner spends more time reconstructing the model or maintainers spend more time on diagnostics, documentation, mentoring, and patient review.
The distinction does not map perfectly to languages, and I have not measured thousands of forum exchanges. Zig contains generous teachers; Rust contains exhausted experts and sharp boundaries. The models still explain why the two projects can feel different before you compile a line.
The comparison looks like this once the language branding is removed:
| Guild | Commons | |
|---|---|---|
| Newcomer assumption | A potential apprentice; preparation shows commitment. | A potential participant; repeated friction is project feedback. |
| Design authority | Trusted experts sponsor changes before scarce attention is spent. | Public process invites users, teams, and affected stakeholders. |
| What gets protected | Coherence, depth, and maintainer focus. | Access, legitimacy, and shared ownership. |
| How it decays | Scarcity turns into rank; difficulty becomes a loyalty test. | Process turns into status; consensus starts replacing judgment. |
Zig makes the door visible#
I opened Zig's current code of conduct expecting the “skill issue” joke with policy language around it. Instead, it asks for welcoming language, empathy, appreciation, and validation of other people's skills and use cases. It explicitly treats implying a lack of technical ability as unacceptable. My clean little theory lasted about thirty seconds.
The harder edge appears elsewhere in the same document. Official technical spaces are for focused project work; drive-by language proposals are unwelcome, and a proposal needs a core team member willing to champion it. The community page says Zig is decentralized, rejects official versus unofficial labels, and warns newcomers seeking help away from compiler-development rooms. It even says the core team may curate the directory according to opaque, subjective judgment because time is limited. Anyone reading the page can tell which room is for learning and which room is for compiler work.
That boundary fits the Zig Software Foundation mission: grow a diverse international community, provide education, and teach programmers to be competent, ethical, and demanding of one another. Those ideas sit together. Zig's learning page links Ziglings, Exercism mentoring, books, and guides, then admits the project lacks the capacity to document everything and sends stuck learners toward community spaces. That combination explains the guild-like feeling better than a theory about personal hostility.
Rust staffs the staircase#
Rust takes the opposite default. Its code of conduct opens with a welcome regardless of experience and tells participants to be kind, courteous, and attentive to tradeoffs. The compiler development guide goes beyond manners: it tells first-time contributors to ask questions, addresses the fear of wasting experts' time directly, maintains help channels, points to easy or mentored issues, and recommends Clippy because that project has worked to make contribution friendly to newcomers.
I highlighted that paragraph when I read it because it treats expert attention as infrastructure. An answer given in public can become documentation. A confusing diagnostic turns into a beginner-sized issue for someone to fix, and after that the compiler output itself teaches enough of the model for the next user to continue. Rust's 2024 community survey found that official documentation and The Rust Programming Language remained the main learning resources, while respondents also described learning from compiler errors, Clippy, forums, and mentors. A beginner can meet the same explanation in the book, a compiler diagnostic, or a forum answer instead of waiting for one particular expert.
Governance mirrors that choice. Rust says everyone is invited into RFC discussion, calls community deliberation arduous, and still treats it as part of design quality. Teams and a representative Leadership Council turn participation into structure. A user may lose the argument, but their concern can remain in an RFC thread and receive an answer from the relevant team.
The guild can become a caste#
Scarce review time is real. Zig's insistence on a champion protects maintainers from an infinite queue of speculative ideas, and every mature project quietly does some version of it. Trouble starts when the filter becomes a moral judgment. A brusque “read the manual” at least points at a manual, but “skill issue” tells the room that confusion itself disqualifies the person asking.
A newcomer cannot always distinguish a hard prerequisite from a missing explanation. I followed Zig's getting-started guide to its final paragraph and found the project saying plainly that it cannot yet document everything. That honesty is useful, but some learners will still hit a blank and hear that competent people cross it alone. Over time, the only feedback maintainers receive comes from people who already think like maintainers.
Then the community mistakes selection effects for proof. Everyone who stayed managed the climb, so the climb looks necessary. Good engineers who dislike status rituals leave before anyone counts them, while weak documentation survives because the remaining users can reconstruct it from source. Why should a missing paragraph in the manual become a personality test? A maintainer can add that paragraph and keep every technical constraint intact.
The commons can become a parliament#
The commons has a different status game. Technical disagreement can be recoded as a failure of empathy, and community standing starts doing work that evidence should do. I do not know how often that happens inside Rust; a code of conduct and a survey cannot reveal private incentives. The risk exists whenever legitimacy depends heavily on visible participation.
Rust's own governance writing recognizes that the machinery can seize. Its 2015 governance RFC says the RFC process had grown heavyweight, especially for newcomers, and warns about lost coherence, culture clash, and over-application of conduct rules. The current governance page still calls deliberation arduous. Every extra RFC round and moderation decision uses hours that could have gone to implementation or review.
Lowest-common-denominator design arrives when a project treats every prerequisite as exclusion and every rejection as harm. Rust itself remains steep: in the 2024 survey, about 31 percent of non-users cited perceived difficulty, and complexity remained a leading worry about the language's future. A friendly community can help people learn a demanding model while the ownership and aliasing rules stay exactly as strict as before.
The political failure is subtler than friendliness. It appears when a project rewards the performance of care more than the work of teaching, or when consensus becomes a reason nobody owns a decision. A maintainer should be able to explain a constraint patiently and reject the proposal. A vague maybe leaves the proposal open, so the beginner waits and the maintainer keeps revisiting the thread.
A workshop with a public door#
These are tendencies, not team jerseys. Zig's official rules ask for empathy and inclusive language, and its site is full of learning links. Rust's contributor process still asks for useful context, expertise, and serious engagement with technical tradeoffs; consensus does not mean every objection wins. Each project already carries a piece of the other model.
A healthy language community keeps demanding technical standards and builds public paths toward them. Experts can protect coherence and close proposals that arrive unprepared. The project can also treat repeated confusion as feedback about its diagnostics and guides, and give newcomers somewhere to ask without performing confidence first.
I left the Zig and Rust contributor pages open side by side. Zig's page sends newcomers to general discussion before compiler development. Rust's guide puts a help channel beside the build instructions and says questions do not waste experts' time. I put both links into the onboarding note for the next language project I start.