Django Weblog: The Block and T... Note

Django Weblog: The Block and Tackle of Django's Code of Conduct Working Group

Django's Code of Conduct Working Group adopted Contributor Covenant 3.0 in early 2026. The group is small, diverse, volunteer-based, and term-limited by annual renewals. The DSF board president sits on the working group, and the board is only involved in spending, drastic punishments, or CoC text changes. A separate Online Community Working Group handles daily moderation and escalations. Decisions are made by consensus, then a two-thirds majority, or finally the board.Before changing the CoC text, a process was established requiring specific issue templates for proposals. Anyone can propose changes, which are discussed monthly with community input. The working group can merge supporting documentation changes independently, but CoC text changes require board approval. This is mechanically enforced by a CODEOWNERS file. All non-administrative pull requests require a 30-day public comment period. Merged changes are announced publicly with summaries and rationales.The rewrite of the Code of Conduct into Contributor Covenant 3.0 was broken down into fifteen discrete, assignable sub-issues. This project involved rewriting various documents and syncing them to the djangoproject.com website. The entire rewrite, from initial document import to final adoption, took approximately three months, with most of that time allocated for community feedback. A GitHub Action automatically regenerates a changelog detailing decisions and their reasoning.Reports of violations are handled separately, with all reports sent to a dedicated email inbox. The working group aims for prompt acknowledgments and responses, with decisions requiring agreement from at least two members. Enforcement actions include warnings, suspensions, and permanent bans, with severity determining the exact outcome. Case records use randomly generated code names for both incidents and individuals to protect privacy. A separate, access-restricted spreadsheet maps these code names to real identities.A Google Apps Script generates these code names from adjective and noun lists, integrated directly into the tracking spreadsheet. Record-keeping is managed across three spreadsheets: the Report Tracker for working records, the Person Identity Key for mapping code names to real identities, and the Public Tracker which aggregates anonymous annual statistics for public release. The process acknowledges borrowing heavily from existing policies of other organizations, and Django's own materials are licensed openly to facilitate reuse. This governance model functions as ongoing infrastructure, continuously incorporating new affiliated communities.