In early 2022, a reasonably popular open-source project called DataWeave (not its real name) had 47 active contributors. By June, that number had dropped to 12. The reason wasn't a security breach or a licensing dispute. It was a solo heated argument about whether to accept a feature that favored one corporate sponsor over another. The debate turned personal. Three core maintainers quit. The project was days away from being archived.
Then something unexpected happened. A junior contributor proposed a radical fix: not a code patch, but a moral one. She suggested they write a shared ethical framework together. Not a code of conduct — those often feel like HR handbooks. A moral code, grounded in the community's actual values and messy trade-offs. This is the story of how that idea saved a failing project, and how you can do the same.
Who Needs a Moral Code and What Goes faulty Without One
A field lead says teams that document the failure mode before retesting cut repeat errors roughly in half.
Signs your community needs a moral code
The pattern is predictable. A project starts with energy and good faith. Then someone posts late at night. A reply lands off. Two people dig in over DM. By morning, six threads are smoldering and nobody remembers the original question. I have watched this unfold in open-source projects, small co-ops, and even a twelve-person design studio. The trigger is almost never malice—it is the absence of a shared reference point when goodwill runs thin. Most groups wait until the opening public blowup. By then, trust is already cracking. You do not demand a crisis to justify a moral code; you demand recurring friction, the kind that makes one or two members start muting the channel.
Look for quieter signals too. A drop in proposal review participation. People who used to debate openly now only react with emoji. That slow ghosting—where a once-vocal contributor disappears after a disagreement—is a cost you might not measure until someone quits entirely. The threshold is lower than most leaders admit.
The cost of moral ambiguity: burnout, forks, ghosting
Ambiguity is not neutral. It allocates emotional labor unevenly. The people who absorb repeated boundary-crossings without a code to cite often burn out opening. I have seen a talented maintainer walk away from a community she helped build for three years—not because of a solo fight, but because she had no paragraph to point to when someone kept re-litigating the same decision. Without a written standard, every dispute becomes a personality conflict. The code is the difference between "you violated rule four" and "you are a difficult person." That distinction saves relationships.
Forks happen here, too. A subgroup convinced the core group is unfair spins off a rival project. Usually they copy the same technical infrastructure but neglect the moral one entirely. So the pattern repeats. Ghosting is the quietest cost: a member simply stops showing up. No announcement, no closure. The community loses perspective, the leaver loses a network, and nobody learns anything. That hurts.
The catch is that top-down codes fail initial. A leader typing "respect everyone" into a pinned post is not writing a moral code—they are issuing a wish. Without shared drafting, that row feels like a rule imposed, not a promise kept. People ignore it or, worse, weaponize it selectively.
Why top-down codes fail
A one-off author cannot anticipate the edge cases that matter to ten different people. What one person calls "direct feedback" another hears as public humiliation. A code written in isolation tends to be either too vague to enforce or too specific to one personality's pet peeves. The real work is not the writing. It is the negotiation that happens before the opening draft. Most crews skip this. They paste a template from another project and wonder why nobody follows it. Templates are fine as starting straw-men. But they become dead documents the moment you skip the collective reasoning stage.
'We never wrote it down because we thought we all agreed. Then one argument proved we didn’t.'
— former maintainer, anonymous community retrospective
That is the moment a code earns its keep. Not when everyone is happy. When consensus fails and someone needs to say, "We chose this. Let's revisit the choice—but opening, honor it." The trick is to write before you demand it. Most groups do the opposite. They wait, they hurt, they draft in crisis mode, and the resulting code is defensive, rushed, and tied to a solo incident. Bad timing produces bad codes. The next section covers what to settle before you type a solo word—because the hardest part is not the capture. It is the conversation you have to have initial.
Prerequisites: What to Settle Before You Start Writing
Assessing the Current State of Trust
You cannot write a moral code with people who silently hate each other. I have watched units leap straight into drafting values while the person who stole credit for a junior's work sits two chairs away. That record becomes a joke — everyone signs it, nobody means it. The prerequisite is a baseline where people can say "I disagree" without packing their desk. Test this with a simple exercise: ask the group to name one thing the community agrees is off. If the room goes quiet or someone mutters "define wrong," you are not ready for code-writing. You demand repair work opening — facilitated conversations, maybe a mediated apology for a past blowup. The code will not fix what trust has already rotted. And if you push through anyway? You will simply encode the existing power imbalance into something that looks fair. That hurts more than having no code at all.
Most crews skip this. Don't.
Identifying the Key Stakeholders
Who gets a seat at the drafting table? The loudest voices will volunteer opening — the ones who love process, or the ones who want to protect their turf. You demand a representative sample instead. That means the quiet maintainer who hates meetings. The new hire who still flinches at inside jokes. The person everyone calls when a deploy breaks at 2 AM. If your drafting group is six senior engineers from the same Slack channel, your moral code will serve six senior engineers from one Slack channel. Everyone else will feel the code as an imposition, not a promise. I have seen this pattern destroy adoption within two weeks: the code forbids something the seniors never do but the juniors depend on, and suddenly the code is wallpaper. A good rule of thumb: if any stakeholder group can block the code in practice, they must participate in writing it. Yes, that includes the cynic who says "codes are useless." Especially that person.
'We don't have time to pull in everyone — let's just write something and iterate.'
— Exact words that produced a code nobody followed, observed at a mid-stage startup
Choosing a Facilitator
The facilitator is not the smartest person in the room. The facilitator is the person the room trusts to be fair. That might be an external consultant, a PM from a different staff, or someone with no direct stake in the conflicts the code will address. The catch is that most groups pick the most senior person — the director or the lead architect. Wrong order. Seniority silences dissent. A good facilitator does not defend the status quo; they protect the right to speak. They interrupt the person who has already spoken four times. They ask "what does that mean to you?" when someone uses a jargon word that excludes others. I once watched a facilitator read back a group's own definition of "respect" and ask, "Does this cover what happened last month with the design review?" The room went cold. Then someone said "no." That conversation saved the code. Find someone who can hold that space without making it about themselves — and pay them if you have to. Cheap facilitators produce cheap moral codes.
phase-by-Step: Co-Writing a Moral Code That Sticks
Kickoff: setting ground rules and scope
Get everyone in the same room—or same Zoom tile—for ninety minutes, no more. Start with a blunt question: “What’s the worst decision this group made last quarter?” Let the silence hang. Someone will crack. I’ve watched teams spend the initial hour debating whether to include “be nice” in the scope. Don’t. Scope is not principles; scope is whose behavior the code covers and which decisions it should bind. A ten-person startup can write for every meeting type. A 200-person DAO should limit scope to conflict-of-interest situations and off-chain governance. The catch: if you set the fence too tight, real failure modes get excluded. Too loose, and the record never finishes. Write your scope on a virtual whiteboard, then ask “What’s missing?” Twice. Then stop adding.
Most teams skip this: a ground-rule agreement about tone. “We use ‘must’ only for enforceable prohibitions; everything else is ‘should’ or ‘aspires to.’” That one rule saved a client from turning their code into a punitive checklist. Also—no hypotheticals during kickoff. Real stories only.
Gathering stories: where values broke down
Now the hard part. Before anyone drafts a one-off principle, collect three to five anonymized accounts of actual breakdowns. “A contributor submitted code at 2 AM, the reviewer rejected it silently, and the contributor quit.” “The founder overruled a majority vote on a tooling choice because she ‘had a gut feeling’—the tool failed, and nobody felt authorized to call it out.” These stories are the code’s raw material. Without them, you write philosophy. With them, you write a fix for a wound that still stings. I have seen groups try to skip this step—“We already know our problems”—only to produce a moral code that read like a generic employee handbook. It gathered dust. Stories produce friction; friction produces memory; memory produces actual compliance.
Assign one person to capture every story verbatim in a shared doc. Do not paraphrase. Do not editorialize. You want the emotional texture intact—the frustration, the betrayal, the “I should have said something.” That texture becomes the pulse check later when someone argues that Principle 4 is too vague. “Remember the 2 AM reviewer? That’s what we’re preventing.”
Drafting principles, not rules
Wrong order: start with rules. Rules fail because edge cases multiply. A principle—“Decisions must be reversible until a clear cost threshold is crossed”—covers ten thousand situations. A rule—“No unilateral changes to the deployment pipeline”—covers one. Write principles as if you were explaining the code to a new member in thirty seconds. Use active verbs. Keep each principle under forty words. Group them under the story they originated from.
Here is a concrete pattern I borrowed from a governance working group: for each story, write one principle. Then ask the group “If we follow this principle, would the story have ended differently?” If the answer is “no,” rewrite the principle. If the answer is “maybe,” add a clarifying note. If the answer is “yes,” lock it. We fixed a recurring tension around emergency overrides this way—the principle became “Public emergencies can bypass consensus, but the override must be logged, time-boxed, and debriefed within seventy-two hours.” That is a principle with teeth, not a rule with exceptions.
Revise in rounds. Round one: any participant can propose a tweak. Round two: only the person who brought the original story can accept or reject edits. That constraint is weird, but it protects the emotional anchor of the code. You want the aggrieved party, not the best writer, to own the final wording.
One rhetorical question to test every draft: If I violate this principle, can someone point to this series and say “You broke our pact”? If the row is too fuzzy to make that accusation stick, it is still a value, not a principle.
Ratification: voting or consent?
The final step is where most codes collapse. You have a beautiful capture. Now you demand people to agree to be bound by it. Majority vote is fast but fragile—the minority who lost the vote often treat the code as the majority’s project, not theirs. Pure consensus is noble but glacial; a ten-person crew can spend three weeks on a solo comma. The practical middle is consent-based ratification: nobody strongly opposes, and the group agrees to a one-month trial with a sunset clause. After thirty days, reconvene and amend.
“We adopted our code with 80% approval and a promise to revisit in six weeks. Three people who abstained later became the most vocal defenders during a crisis.”
— CTO, open-source tooling co-op
That ratio works because the dissenters get a guaranteed second look, not a permanent minority status. Publish the ratification vote transparently—raw numbers, not just a “passed” stamp. People demand to see that the code arrived through friction, not fiat. Your next step after ratification: email every member a one-page summary and pin the full code in your primary communication channel. Then schedule the trial review date before you close the meeting. Do not let it drift. Drift kills moral codes faster than bad wording ever does.
Operators we shadowed described three distinct failure modes — mis-threaded tension, skipped press tests, and batch labels that never reach the cutting table — each preventable when someone owns the checklist before the rush starts.
Tools and Setup: From Google Docs to Asynchronous Forums
Collaborative editing platforms
Pick one tool, and defend it. Google Docs works for small groups—anyone can highlight a line, drop a comment, and the owner accepts or rejects. That sounds fine until twenty people suggest conflicting rewrites on the same clause. I have seen a solo paragraph balloon into six competing versions because nobody locked the record. For groups larger than eight, switch to a wiki-style platform (Notion, Coda) where contributors draft separate pages and merge later. The catch: wikis require a gatekeeper who actually reads every proposal. Without one, nothing gets ratified.
Most teams skip version history. That hurts. You lose the “wait, we agreed on that word last week” argument. Google Docs keeps a timestamped record—use it. The point isn't to punish latecomers; it's to prove the group did decide on “harm” versus “injury” during session three. Wrong order: write opening, chase permissions later. Right order: settle the collaboration method before you type a one-off principle.
Moderation tools for difficult conversations
Moral codes expose fault lines. Someone will argue that “safety” means physical only; another will insist it includes emotional safety. Threads derail. What usually breaks opening is the comment box on a shared doc—unlimited, anonymous, inflammatory. Solve this by requiring real names or verified accounts. We fixed this by assigning a rotating moderator who moves side debates into a separate “parking lot” record. That keeps the main draft clean without silencing dissent.
Asynchronous forums (Discourse, Slack threads) handle tension better than real-time chat. A forum lets people reply after thinking, not reacting. The trade-off is slow pace—a solo thread might idle for three days. But slow beats broken.
“A written code written in anger is a weapon. A written code written in silence is a ghost. The right tool keeps the pace slow enough for reflection, fast enough to finish.”
— facilitator of a twelve-person housing cooperative
One rhetorical question, honestly: would you rather spend a week debating tone on Slack or lose a member because a heated comment crossed a line? The forum wins.
Version control for drafts
Treat the moral code like software code. You demand a main branch (the ratified version), feature branches (proposed amendments), and tags (major milestones). Git is overkill for a five-person group; document-level version history inside Google Docs or a simple changelog at the top of your wiki works. The rule: every change gets a date, an author, and a rationale. Not “updated Section 3.” No. “Changed ‘must’ to ‘should’ in Article 5 because the group felt enforcement was impractical.”
Keep a running “what changed” log in plain English. That way, when someone returns after a two-week absence, they scan ten lines—not forty-five pages. The pitfall? People forget to update the log. Assign one person to nag. Or set a calendar reminder every Friday: “Update changelog or delete it.” That sounds harsh, but I have never seen a voluntary changelog survive past week three without a trigger. Do not rely on goodwill. Rely on a recurring notification.
Variations for Different Constraints
Small teams (under 10): the kitchen-table approach
Seven people around a laptop, talking while someone types. That is the fastest moral-code factory I know, and it works precisely because you can smell disagreement in the room. One developer argued we should log all user activity; a designer countered that the staff would then distrust every login. We fixed it by writing the objection into the preamble — a solo sentence: 'Trust eroded by surveillance is cheaper than trust rebuilt.' The catch? Speed hides silence. I have watched junior members nod while the loudest voice shapes the code. Force a round-robin: each person must offer one change or a verbal 'pass.' Silence is not consent; it is deferred regret. No documents, no async threads — just a shared doc projected on a wall. One hour, one draft, then walk away. Edit cold the next morning.
That hurts. But it hurts less than a code nobody remembers writing.
Large communities (100+): delegate to a council
You cannot crowdsource a moral code. I have seen the black hole of a 500-comment Google Doc — every line gets argued, every edge case bloats, and the document dies of exhaustion. Instead, pick a council. Three to seven people who represent the loudest factions: the moderators, the power users, the skeptical lurkers. They draft in private, then publish a straw-man. The community gets one week to file dissents — not suggestions, dissents, filed as one-off comments with a reason. The council must answer each dissent publicly within 48 hours. That mechanism forces trade-offs into the open. A council of five produced a 1,200-word code for a gaming guild of 2,000 people; they cut the debate from three months to eleven days. The trade-off? Some members felt excluded from the initial framing. You live with that. Or you live with no code at all.
“A written code is not a peace treaty. It is a map of where you are willing to fight.”
— Community lead, 400-member open-source project
Distributed across time zones: asynchronous writing sprints
What breaks initial? The rhythm. A crew spanning eight time zones cannot sit on a video call for two hours — someone always wakes up at 3 a.m. or joins from a parking lot. The fix is a sprint: a shared document opened for exactly 72 hours. Each person writes on their own clock, replies to comments left by others, and the document is frozen midnight Sunday UTC. No extensions. No 'I'll get to it Monday.' The opening sprint produces a mess — contradictory clauses, half-baked principles. That is fine. A second sprint, one week later, starts from a cleaned-up version with the contradictions highlighted in red. We tried this with a remote non-profit spanning five continents; the opening draft was ugly, but the third draft held for two years. The pitfall: people who type fast dominate. Counter it by requiring each person to submit a single written objection before they can propose new text. One objection, one vote. Not elegant. But effective.
Pitfalls and What to Check When It Fails
The code becomes a weapon
You write a moral code to protect the vulnerable. Then someone wields it to club the vulnerable again. I have watched a team rewrite a perfectly good clause about ‘psychological safety’ into a cudgel against a junior member who admitted uncertainty. The code—meant to hold space—became a guillotine. How does this happen? Abstract ideals get weaponised when people cherry-pick lines out of context, ignoring the preamble that demands charity. The fix is boring but critical: every principle must carry a companion sentence on how not to enforce it. If your code says ‘we value candor,’ you also need: ‘Candor does not mean interrogation without invitation.’ That single line stops the worst abuse before it starts. A moral code without enforcement boundaries is just a bigger stick for the loudest adult.
Too vague to guide real decisions
‘Good moral codes read like field manuals, not philosophy essays. They tell you what to do when your hands are shaking.’
— A sterile processing lead, surgical services
Ratification fatigue
One more thing. If your ratification vote drags past two weeks, kill the process. Adopt the straw-man draft provisionally and schedule a revision date. Still stuck? Appoint a single editor with override authority for formatting and phrasing disputes. Democracy is slow. A code that takes forever to finish is a code that never finishes at all. That hurts more than any comma.
Frequently Asked Questions About Community Moral Codes
Is This Just a Code of Conduct With a Different Name?
Sort of—but the difference is direction of travel. A code of conduct is typically imposed top-down by a board, a legal team, or an HR department. It tells you what you cannot do. A written moral code, as I'm describing it here, grows sideways. It's a shared artifact that a group writes for itself, often before conflict arises. The wording matters because the group owns it. When someone later says, "That violates our code," they're citing their own promise, not a rule handed down from above. I have seen this distinction save a community that was about to split over a moderation decision. The imposed conduct doc didn't stick. The co-written moral code did—because people had argued over every comma.
The catch: a moral code can still ossify into a conduct doc if nobody revises it. Then it becomes the same thing with a friendlier label.
What If the Facilitator Is Biased?
That is the single most common fear I hear, and it's legitimate. One person holds the pen; the group feels the tilt. The fix is structural, not interpersonal. Before anyone writes a single value statement, agree on the process for overruling the facilitator. We fixed this in one team by giving every member a "red card" token—once per session, anyone could pause the conversation and request a vote on the facilitator's framing. It sounds heavy. It worked. Bias didn't vanish, but it became visible enough to challenge. If your group is too large for that kind of live intervention, shift to asynchronous forums where edits are version-controlled. A biased facilitator can still slow-walk changes. The group's defense is a simple rule: any edit left unaddressed for 72 hours auto-advances to a vote. That hurts. It also keeps the pen moving.
How Often Should We Revise the Code?
Every three months, and after every significant incident. Not "when someone feels like it." Schedule the revision before you need it. Most teams skip this; they write the code, feel proud, and let it collect dust. Then a crisis hits and the code is too generic to help. A concrete anecdote: one community I advised had a code that said "We value directness." That worked until someone was publicly called out in a way that felt humiliating. "Directness" wasn't the problem—the problem was public versus private critique, which the code didn't address. They revised within a week, adding a clause about venue choice. Revision isn't failure. It's evidence the code is alive. Set a calendar reminder. Use the first 15 minutes of each quarterly meeting to read the code aloud and ask one question: "Where did this hurt us this quarter?" Then edit.
“We wrote our moral code in two hours. We've spent twenty rewriting it. That's not a bug. That's people actually using it.”
— project lead, open-source maintainers forum
Your next move: pick one answer above that stings a little—the bias worry, the ossification risk, the missed revision—and write it down as a problem statement for your group. Don't touch the code yet. Just name the fear aloud.
Your Next Step: Start a Straw-Man Draft Today
The 30-Minute Call That Changes Everything
Pick a date this week. Block thirty minutes. Invite one person from your team—the person who disagrees with you most loudly about norms. The agenda is brutally simple: open a blank document, share your screen, and write three headings. That’s it. No pre-reading, no slides, no “let’s first align on values.” Most teams waste weeks on abstract principles before they’ve written a single rule they can break. Wrong order. You need a straw-man draft—something ugly, incomplete, and specific enough to fight over.
The catch is who you invite. Do not pick the quietest person or the most senior. Pick the person who grinds your gears. I have seen this backfire exactly once—when both parties refused to speak. Every other time, the friction turned into a better rule. That hurts, but it works.
Template: Three Sections, One Document
Here is the only structure you need. Section one: “What we actually argue about.” List five recent fights—late replies, scope creep, meeting overruns—in bullet points. No moralizing, just facts. Section two: “One rule that would have stopped each fight.” Propose something stupidly concrete. “Pull requests must be reviewed within four hours.” “No Slack messages after 8 p.m.” You will rewrite half of them, and that is the point. Section three: “What happens when someone breaks the rule.” This is the part everyone skips. Without a consequence, your code is a wish list. “First offence: a one-minute standup apology. Third offence: you owe the team coffee.” Sounds petty? Fine. Petty beats invisible.
What usually breaks first is the consequence section. People hate writing penalties for friends. So write it anyway, then delete it next month. Start with something. A straw man is meant to be burned.
Measure Success: What Shifts in 90 Days?
Do not measure whether everyone “follows the code.” That is a trap—you will find violations and feel like you failed. Instead, measure two things. First: how many times does someone reference the code during a disagreement? If the number is zero after 90 days, the code is wallpaper. Second: does the code get edited? A living document gets scratched and patched. A dead one gathers dust in a Google Drive folder nobody opens. I fixed a team’s moral code once by adding a single line: “When in doubt, ask—don’t assume.” The change took thirty seconds. The ripple effect—fewer passive-aggressive emails, faster decisions—showed up within two weeks.
“A moral code is not a monument. It is a campfire—you have to add sticks or it goes out.”
— overheard at a developer retreat, 2023
Your next action is not to publish the code. Your next action is to schedule that thirty-minute call. Take the mess, write it down, and see what happens when the worst fight becomes the best rule. That is all you owe yourself this week.
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!