Keep Calm and Ship On 🚢

Your guide to being a model OSSizen

Whether maintainer, user, or BDFL, we're all temporary citizens of one OSS community or another. There's often friction or disagreement within our ranks and calls for rules of conduct, but often less explicit guidance on how to behave in the proper way.

There are some principles that I find make everyone happier:

I think most of all this last one is key. When responding to reviews, you're demonstrating your reasoning to a colleague, not defending territory. Even if from personal attachment you feel criticised, or worry your efforts may go to waste, or your path has become obstructed, treat it as collaborative verification. That is, as logical exposition to be verified for coherence, not as testimony to be taken on belief.

What Makes OSS Different

How you handle disagreement gets noticed. People see whether you're defusing tension or escalating it, arguing fairly or trying to pull rank. That has knock-on effects: if someone criticises my work in a way that feels diminishing, I'm less likely to contribute again; if there's infighting, I'll tread lightly. On the flip side, when projects make a deliberate effort to be kind to newcomers, it's immediately noticeable and encourages further contribution. Even practical factors—like timely reviews or a sense that effort won't be wasted—shape where people choose to spend their time. Most figure this out empirically, through trial and error, or observation. Whether others support your work can directly determine how effectively you achieve your goals, whether it's getting code merged or having your ideas taken seriously.

Express Yourself! No Not Like That

The general theme here is that authority flows from the spec. I believe most good comms comes from how new info is handled, especially negatively polarised news (as in "don't shoot the messenger"). This is why maintainers encourage bug reporting: the users' bad news is their good news, as bugs give an opportunity to become correct, even if only in a small way.

The wrong way to accept bad news is 'performative' or feigned listening exercise. As in, "I hear you, I'm listening" [but using this acknowledgement to effectively ignore the report].

Here are some examples of rephrasings based on emotional impact:

How to Structure

  1. State your position clearly. Write to convey what you know, cite the requirements you're acting on (e.g. issues), make an effort to follow technical etiquette, and back up technical claims with sources or demos. Hide extraneous details in <details> code blocks, avoid overloading others. Be proactive without being presumptuous.
  2. Be comfortable with uncertainty. Don't force things to 'come to a head' prematurely. When you're uncomfortable with ambiguity, it's tempting to use conclusive language, call on ultimatums, or declare routes as dead ends to create a sense of resolution (or "jumping to conclusions"), but this shuts down dialogue and makes people defensive rather than actually resolving anything together. Even when you're confident, leave room for discussion rather than presenting your point as the final word.
  3. End with action, and keep things actionable. State what you'll do next, ask a specific question (but don't ask things 'for effect'!) If not ending on an action, end on a summary of your view if it adds a useful recap (not if it's just repeating itself). Sometimes a concluding summary can compress detail, making an idea intuitive and allowing others to check that they agree on the overall idea, if not having followed all the details, or allowing their minds to react specifically to a caveat they may hold with the general idea.

Speak Softly and Carry A Clear Spec

When making a point, you can clarify your reasoning by softening language to mark it as subjective ("I think this approach handles edge cases better") or neutralising by grounding it in objective criteria ("This approach handles edge cases that the spec requires").

Softening acknowledges something is your view, signalling an openness to discussion. Neutralising lifts the discussion from personal preference to shared requirements—typically less testy and easier to align on.

This shift often exposes when you're in the wrong frame: if you're stating a personal perspective where you should be citing evidence, the reframing drives you to substantiate rather than merely assert. This naturally helps you lead others to the position you've reached in a way that can be scrutinised and independently verified, rather than asking them to take your word on it.

There are times for both softeners and neutralisers. Saying you think/see/notice phrases your statement as an informed opinion, and should naturally lead you to verify any assertions (if you don't, expect others to).

It's sometimes said that language like this shows indecisiveness and makes one look wishy-washy. I'd suggest it instead adds authority because you're not overselling or dogmatic. You're providing a considered view while acknowledging you could be wrong (and not mistaking yours for the word of God).

Time and place

We need to take on tone appropriate to the setting:

That's what being a model OSSizen is all about: keeping things moving, keeping things constructive, and above all keep shipping. See you out there. 🚢