THE THREAT: - scarcest resources are ATTENTION and FOCUS. Protect them! Poisonous people can - distract - emotionally drain community - can cause needless infighting - avoid PARALYSIS. -- OCD people can derail forward progess - perfectionists - people obsessed with process -- even nice guys can do this unintentionally! ("perfect as the enemy of the good") [ANECODTES about julianfoad] FORTIFYING AGAINST THE THREAT - build strong community based on - politeness - respect - trust - humility - Best practices for this: - mailing list etiquette - don't rehash old discussions, read archives first - don't reply to EVERY message in a thread, reply to summary. [ANECDOTE about filibustering on svn list] - document project history (don't be condemned to repeat it!) - of design decisions - of bug fixes / changelog - of mistakes! - have a well-defined release process - bug backports - testing/releasing tarballs - institute healthy code-collaboration policies - send commit emails, encourage email reviews - do big changes on branches, for easier review -> power plants slow progress!! - be liberal about giving people branches to work on - don't allow names on files [ANECDOTE about date guy] - increase bus-factor on components - have well-defined process for accepting/reviewing patches - have a well-defined system for admitting new committers - goal: culture becomes self-selecting / self-propogating [ANECDOTE about Duncan's absence] - have a voting system as last-ditch for resolving disputes (if community is healthy, you should almost *never* need it) DETECTING POISONOUS PEOPLE "warning signs", a.k.a. 'bozo bit' * communication annoyances - silly nickname - multiple nicknames in different communication mediums - overuse of CAPITAL LETTERS, and excessive punctuation!!!!!!!!! * general lack of clue - inability to pick up on the "mood" or common goals of the community. - incessant RTFM questions * hostility - insulting status quo, rather than questioning it - angrily demanding help, rather than requesting - attempts to blackmail - attempts to deliberately rile people - paranoia: accusations of conspiracy * conceit - refuses to argue with other opinions - makes sweeping claims about project's future success - re-opens topics that are long settled, without re-reading archives * lack of cooperation - willing to complain, but not help fix - unwilling to discuss design - too insecure to take criticism DEALING WITH INFECTION * Assess Damage - Ask yourself the TWO CRITICAL QUESTIONS: - Is this person draining attention and focus? If so, is the person really likely to benefit the project? - Is this person paralyzing the project? Is the dispute likely to finish soon? - Use statistical analysis to persuade others that someone is poisonous [ANECDOTE about filez: eager, but attention sink] * DON'TS: - Don't feed the energy creature! (old usenet adage) - Don't give assholes "purchase"! - Don't engage them! - Don't get emotional. * DO's: - Always pay careful attention to a newcomer, even if annoying at first - Look for the fact under the emotion - Extract a real bug report, if possible [ANECDOTE about esr 'shame on you'] - Know when to give up and ignore person [ANECDOTE about tomlord trying to derail] - Know when to forcibly boot person from community [ANECODTE about filez] - Repel trolls with niceness!! [ANECDOTE about irc guy who fails to rile us] MORE ANECODOTES/EXAMPLES * uncooperative person: malloc vs. pools guy * 'perfect as enemy of good': gcc in search of perfect SCM * community with no humility, politeness, or respect: Avalon * community dominated by a tyrant: GDB, until recently