Key Moments

How Open Source Projects Survive Poisonous People (And You Can Too)

Google TalksGoogle Talks
Education6 min read55 min video
Aug 22, 2012|24,290 views|215|7
Save to Pod

Want to know something specific about what's covered?

We've already dissected every moment. Ask and we will deliver (with timestamps).

TL;DR

Open source projects can be derailed by 'poisonous people' who disrupt focus and cause emotional drain, but clear mission statements, defined scope, and community policing can prevent this.

Key Insights

1

The most valuable resource in an open source project is the attention and focus of its community, which 'poisonous people' can disrupt by causing distractions and emotional drain.

2

A project's mission and scope should be clearly defined from the outset to provide direction and limit 'limitless feature creep' or unintended additions.

3

Parkinson's Law (or the 'bike shedding' phenomenon) states that the amount of discussion on a feature is inversely proportional to its complexity, leading to excessive debate over trivial matters.

4

Documentation, including design decisions, bug fixes, and even mistakes, is crucial for long-term project health and knowledge transfer, preventing repeated discussions.

5

Code collaboration practices such as commit emails and using branches for large features help maintain transparency and allow for incremental code reviews, preventing large, unmanageable changes.

6

The 'bus factor' refers to the number of developers whose absence would cripple a project; spreading expertise and avoiding individual ownership of code (e.g., by not putting names at the top of files) helps mitigate this risk.

Understanding the core threat to open source communities

The fundamental resource in any open source project is not hardware or code, but the attention and focus of its community. 'Poisonous people' are those who disrupt this vital resource. They can detract developers from productive work, cause emotional drain through infighting and squabbling, and ultimately slow down or reroute the project's progress. This disruption can be intentional or unintentional, with perfectionism and an overzealous desire to 'get the process just perfect' being common culprits. A key takeaway from the Subversion project is the mantra: 'Don't let the perfect be the enemy of the good.' When faced with such disruptive perfectionism, gaining support from a large percentage of developers can help move the project forward, ignoring the 'noisy minority' who aim for unattainable ideals.

The 'bike shedding' phenomenon: disproportionate discussion on trivialities

A common pitfall in community development is the 'painting the bike shed' effect, which illustrates how the amount of discussion on a feature is inversely proportional to its complexity. This phenomenon, attributed to Parkinson's Law (or the Fourth Law of Parkinson), highlights how committees often spend excessive time debating minor details (like the color of a bike shed) rather than crucial aspects (like building a nuclear power plant). In open source projects, this translates to endless arguments over minor design choices or stylistic preferences, consuming valuable time and energy that could be dedicated to actual development. Open source projects often adopt phrases and practices to combat this, such as calling out 'bike shedding' early and often, and reminding themselves and others to focus on substantive issues rather than trivial debates.

Fortifying your project with prescriptive community practices

To build a resilient open source community, several best practices are essential. A clear mission statement and a well-defined scope are paramount to provide direction and prevent 'limitless feature creep' or unintended additions. For instance, the Subversion project's mission statement was crucial for guiding its development towards its core goal: a version control system superior to CVS. Similarly, the Google Web Toolkit established a clear direction of 'no compromise Ajax development environment in Java' limited to the Java and browser context. Communication, primarily through mailing lists, needs structure: point newcomers to archives, avoid re-opening old discussions unnecessarily, and actively manage 'filibustering' – where one individual dominates a thread, creating the illusion of more dissent than actually exists. Robust documentation, covering design decisions, bug fixes, mistakes, and code changes, is also vital for knowledge sharing and onboarding new contributors.

Encouraging code collaboration and managing dependencies

Effective code collaboration is key to a healthy open source project. Commit emails serve as a primary mechanism for developers to stay informed about each other's work, acting as a decentralized form of code review and fostering transparency. It is critical to avoid large, isolated feature development; instead, developers should work on features incrementally, perhaps on branches, allowing continuous oversight and feedback. This practice directly addresses the 'bus factor' – the number of developers whose absence would cripple the project. By encouraging shared knowledge and preventing individuals from becoming sole owners of critical code sections (e.g., by not placing names at the top of files), projects can reduce their dependence on any single contributor. This approach ensures that code is understood and maintainable by multiple team members, safeguarding the project's long-term viability.

Identifying and addressing 'poisonous' individuals

Recognizing 'poisonous people' is crucial for community health. While not always obvious, indicators include poorly chosen communication handles, excessive use of capital letters, and an inability to gauge the community's mood or urgency. Open hostility, a sense of entitlement, blackmail (threatening to withhold contributions unless demands are met), and trolling are clear red flags. Some individuals are merely 'talkers, not doers,' complaining without offering solutions; for them, the standard response is 'patches welcome.' Others exhibit a lack of humility, believing their experience outweighs others' opinions and often reopening long-settled discussions. Sometimes, 'poisonous' behavior stems from genuine but misplaced enthusiasm, where a newcomer inadvertently drains community attention with constant questions. The key is to maintain a balance: be tolerant of newcomers and potential miscommunications, but be firm in upholding community standards and long-term goals.

Disinfecting the community: strategies for dealing with disruption

When disruptive individuals are identified, assessing the damage is the first step. Questions to consider include how they are affecting the project's attention and focus, and if their behavior is actively hindering forward momentum. A critical 'do not' is to 'feed the energy creature' by engaging in emotional arguments or giving disruptive individuals a 'gripping surface' for their behavior. Instead, ignore trolls, stick to facts, and avoid emotional responses. A 'good cop' approach involves giving newcomers the benefit of the doubt, looking past abrasive communication to find potential valid points (like a bug report), and responding calmly and rationally. In extreme cases, like when a single enthusiastic newcomer consumes a disproportionate amount of committers' time, or when a founder becomes disruptive, forcibly removing them from the community, revoking commit access, or even politely but firmly asking them to leave may be necessary. The health of the community and its long-term goals should always take precedence over individual ego or short-term appeasement.

The universality of community management principles

The principles discussed for open source communities are not exclusive to them. They apply broadly to any team or social group, including workplaces, volunteer organizations, and even social circles. The challenges of managing attention, focus, and disruptive personalities are universal. This realization often leads to collective 'group therapy' sessions where individuals from different projects or organizations share similar experiences with difficult people. Applying these strategies requires consistent documentation, clear communication channels, and a willingness to enforce community norms, regardless of the context.

Establishing consensus and decision-making processes

Consensus-based development, a hallmark of many successful open source projects, emphasizes collective decision-making. While voting mechanisms exist, they should be used sparingly. Frequent voting indicates underlying issues within the community, as it creates winners and losers and can stifle compromise. Ideally, communities should reach resolutions through healthy discussion and compromise. Some projects, like Subversion, have gone years with very few formal votes, often on minor but passionately debated topics like code formatting. The consensus model, even when paid employees are involved, ensures that community members have a say in the project's direction, reinforcing a culture where collective agreement supersedes individual authority or corporate backing.

Open Source Community Survival Guide

Practical takeaways from this episode

Do This

Define a clear mission and scope for your project.
Maintain comprehensive documentation, including design decisions, bug fixes, and even mistakes.
Encourage code reviews through commit emails and use branches for incremental development.
Foster an egalitarian culture where no single developer 'owns' parts of the codebase.
Establish well-defined processes for releases and bug management.
Be welcoming to newcomers and consider assigning someone to monitor ignored patches.
Cultivate a culture that values consensus and compromise.
Address dissent constructively and avoid 'filibustering'.
Pay attention to newcomers, giving them the benefit of the doubt.
Ignore trolls and avoid engaging emotionally; stick to facts.
Focus on the valuable aspects of contributions, even from difficult individuals.
Forcible removal from the community should be a last resort, supported by data.
Repel trolls with politeness and focus on facts.
Keep 'good cop' and 'bad cop' dynamics in moderation to balance tolerance and vigilance.

Avoid This

Don't let perfection be the enemy of good.
Don't let discussions drag on unnecessarily ('bike shedding').
Don't allow individuals to monopolize discussion threads to create a false sense of dissent.
Don't let developers work in isolation on large features for extended periods without visibility.
Don't allow developers to claim ownership of specific code files by putting their names on them.
Don't ignore patches or newcomers.
Don't vote on everything; it indicates a cultural problem.
Don't feed the 'energy creature' by engaging with trolls or providing a 'gripping surface'.
Don't let emotional drain paralyze your project.
Don't underestimate the potential value of newcomers who may initially seem disruptive.
Don't refrain from removing poisonous individuals if necessary to protect the community's health.
Don't let blackmail or hijacking attempts derail long-term project goals.
Don't be afraid to assert community values over individual egos.

Common Questions

The most crucial resource for an open source project is the attention and focus of its community. This resource needs to be protected from 'poisonous people' who can distract developers, cause emotional drain, and slow down or halt project progress.

Mentioned in this video

More from GoogleTalksArchive

View all 79 summaries

Ask anything from this episode.

Save it, chat with it, and connect it to Claude or ChatGPT. Get cited answers from the actual content — and build your own knowledge base of every podcast and video you care about.

Get Started Free