diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b701c29..2874ea2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,2 @@ * @django/coc-committee +CODE_OF_CONDUCT.md @django/coc-committee @django/dsf-board diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..0b62981 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,146 @@ +# Django Code of Conduct + +## Our Pledge + +We pledge to make our community welcoming, safe, and equitable for all. + +We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant. + +## Encouraged Behaviors + +While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language. + +With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including: + +1. Respecting the **purpose of our community**, our activities, and our ways of gathering. +2. Engaging **kindly and honestly** with others. +3. Respecting **different viewpoints** and experiences. +4. **Taking responsibility** for our actions and contributions. +5. Gracefully giving and accepting **constructive feedback**. +6. Committing to **repairing harm** when it occurs. +7. Behaving in other ways that promote and sustain the **well-being of our community**. + +**Impact matters more than intent.** Even when harm is unintentional, we are all responsible for the impact of our words and actions. If someone tells you that your behavior has caused harm, listen with empathy and take responsibility for making things right. + +**Respect consent and boundaries.** Consent is an ongoing process, not a one-time agreement. Respect others' stated boundaries, and be mindful that silence or lack of objection does not equal consent. If someone says "no," asks you to stop, or sets a boundary, respect it immediately and without debate. + +**Community members are expected to comply immediately with requests to stop harmful behavior.** This includes requests from other community members, moderators, or the Code of Conduct Working Group. Refusal to comply may result in escalated enforcement actions. + +## Restricted Behaviors + +We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct. + +1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop. This includes persistent unwanted questioning (sea-lioning), coordinated harassment or brigading, tone policing, and other patterns of behavior designed to exhaust, intimidate, or silence community members. +2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people. +3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits. +4. **Microaggressions.** Subtle, often unintentional behaviors or comments that communicate hostile, derogatory, or negative attitudes toward marginalized groups. While individual instances may seem minor, their cumulative effect causes real harm. +5. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community. +6. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission. This includes doxxing (publicly sharing private information), unwelcome recording or photography, and logging online activity for harassment purposes. +7. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group. +8. **Discouraging involvement.** Acting in ways that discourage others' involvement, such as trying to exploit technicalities, repeatedly arguing against already made decisions, or questioning others' abilities or intents. +9. Behaving in other ways that **threaten the well-being** of our community. + +### Other Restrictions + +1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions. +2. **Failing to credit sources.** Not properly crediting the sources of content you contribute. +3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community. +4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors. +5. **Violating community guidelines.** Failing to follow community guidelines for any space covered by the [Online Community Working Group](https://github.com/django/dsf-working-groups/blob/main/active/online-community.md) or a sponsored event's own Code of Conduct. +6. **Retaliation.** Taking adverse action against someone for reporting a violation of this Code of Conduct or participating in an investigation. +7. **Bad-faith reporting.** Repeatedly reporting the same or similar incidents after they have been deemed not to be violations, or otherwise submitting reports intended to harass or burden the working group or reported parties. + +## Reporting an Issue + +Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm. + +When an incident does occur, it is important to report it promptly. Please see our [Reporting Guide](https://github.com/django/code-of-conduct/blob/main/reporting-guide.md) for detailed information on how to report a possible violation and what to expect during the process. + +The Code of Conduct Working Group takes reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports, which may include reviewing relevant messages, logs, and recordings, or interviewing witnesses and other participants. All evidence is handled with care and respect for privacy, and access is limited to those directly involved in the investigation. The Code of Conduct Working Group will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution. + +## Addressing and Repairing Harm + +When a Code of Conduct violation occurs, the Code of Conduct Working Group uses an enforcement ladder to determine appropriate responses based on the severity and context of the violation. The goal is to repair harm while maintaining community safety and trust. + +We recognize that violations can have disproportionate impact. Behaviors that may seem minor to some community members can have a significantly greater impact on those from marginalized or underrepresented groups who face these patterns repeatedly. We take this into account when addressing incidents. + +The enforcement ladder includes the following levels: + +1. **Warning** - A private, written warning from the Code of Conduct Working Group. +2. **Temporary Suspension (Short-term)** - A temporary suspension from Django community spaces for a defined period (typically 30-90 days). +3. **Temporary Suspension (Extended)** - An extended temporary suspension for a longer defined period (typically 90 days or more) with specific conditions for return. +4. **Permanent Ban** - Permanent removal from all Django community spaces, tools, and communication channels. + +This enforcement ladder is intended as a guideline. It does not limit the ability of the Code of Conduct Working Group to use their discretion and judgment, in keeping with the best interests of our community. + +For complete details about our enforcement process, please see our [Enforcement Guide](https://github.com/django/code-of-conduct/blob/main/enforcement-ladder.md). + +## Scope + +### Django Events + +This Code of Conduct applies to all events sponsored, hosted, or endorsed by the Django Software Foundation, including DjangoCon conferences, Django meetups, and sprints. + +The Code of Conduct applies to the following people at events: + +- Event staff and organizers +- Django Software Foundation board members +- Speakers and presenters +- Tutorial or workshop leaders +- Sprint leaders and mentors +- Sponsors and exhibitors +- Volunteers +- All attendees + +It applies in all official event spaces, including: + +- Conference rooms and presentation venues +- Sprint and workshop spaces +- Sponsor and exhibitor areas +- Social events and meal areas +- Hallways, walkways, and common areas that connect event spaces + +It also applies to interactions on official event accounts and platforms, including event hashtags, social media, and communication channels. + +Event organizers should refer to our [Event Organizer Support Guide](events.md) for requirements and guidance on implementing this Code of Conduct at in-person events, including designating CoC contacts, handling on-site reports, and publishing event-specific policy extensions. + +### Django Online Spaces + +This Code of Conduct applies to all Django online spaces covered by the [Online Community Working Group](https://github.com/django/dsf-working-groups/blob/main/active/online-community.md), including: + +- Django mailing lists +- Django GitHub repositories, issue trackers, and pull requests +- Official Django social media accounts +- Any other online space administered by the Django Software Foundation + +It applies to all community members in these spaces, including administrators, maintainers, contributors, and participants. + +The Code of Conduct Working Group will work with the Online Community Working Group and moderators to address reported violations and determine appropriate responses. + +### Representing Django + +This Code of Conduct also applies when individuals are officially representing Django in public spaces. Examples include using an official Django email address, posting via official Django social media accounts, or acting as an appointed representative at online or offline events. + +### Community Impact + +This Code of Conduct also applies to actions taken outside of these spaces when they have a negative impact on community health or safety. + +## Responsible Use of AI-Generated Content + +It's essential to use generative AI technologies thoughtfully and in alignment with our shared values of integrity, respect, and authenticity. + +When using generative AI to contribute to the community: + +- **Take ownership of your contributions.** You are responsible for the content you share. +- **Review and revise AI-generated responses before posting.** Ensure they reflect your own understanding and voice. +- **Apply your expertise** to validate that the information is accurate, relevant, and helpful. + +These practices support a community built on trust, collaboration, and mutual respect. Misuse of AI-generated content is a violation of our Code of Conduct. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant, version 3.0](https://www.contributor-covenant.org/version/3/0/). Our documents and policies are adapted from and inspired by a number of [additional sources](https://github.com/django/code-of-conduct/blob/main/sources.md). + +## License + +This Code of Conduct is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/affiliated-programs.md b/affiliated-programs.md index c51bc1f..5128787 100644 --- a/affiliated-programs.md +++ b/affiliated-programs.md @@ -9,12 +9,13 @@ This document outlines the requirements for becoming an affiliated program or co Django-related projects and spaces may ask to designate the Django Code of Conduct Working Group as an escalation point in their own Code of Conduct process. To do so, they must: 1. Adopt their own complementary Code of Conduct -2. Reach out to [conduct@djangoproject.com](mailto:conduct@djangoproject.com) and request to be added to the Django Code of Conduct's scope -3. If approved, outline in their reporting procedures that reports may be escalated to the Django Code of Conduct Working Group in the following circumstances: +2. Designate at least one named Code of Conduct point of contact and provide their individual email address (not a shared group address) to the Django Code of Conduct Working Group to keep on file +3. Reach out to [conduct@djangoproject.com](mailto:conduct@djangoproject.com) and request to be added to the Django Code of Conduct's scope +4. If approved, outline in their reporting procedures that reports may be escalated to the Django Code of Conduct Working Group in the following circumstances: - The report concerns a member of the project's Code of Conduct Committee - The project's Code of Conduct Committee has failed to respond to a report - As a point of appeal within 30 days of the original decision -4. Publish transparency reports at least annually (quarterly preferred) following the guidelines outlined in this document +5. Publish transparency reports at least annually (quarterly preferred) following the guidelines outlined in this document Upon approval of a request, the Django Code of Conduct Working Group will add the project or community to the list of affiliated projects and spaces in the [Code of Conduct's scope section](CODE_OF_CONDUCT.md#scope). diff --git a/code-of-conduct.md b/code-of-conduct.md deleted file mode 100644 index 323c1bb..0000000 --- a/code-of-conduct.md +++ /dev/null @@ -1,82 +0,0 @@ -# Django Code of Conduct - -Like the technical community as a whole, the Django team and community -is made up of a mixture of professionals and volunteers from all over -the world, working on every aspect of the mission - including -mentorship, teaching, and connecting people. - -Diversity is one of our huge strengths, but it can also lead to -communication issues and unhappiness. To that end, we have a few ground -rules that we ask people to adhere to. This code applies equally to -founders, mentors and those seeking help and guidance. - -This isn't an exhaustive list of things that you can't do. Rather, take -it in the spirit in which it's intended - a guide to make it easier to -enrich all of us and the technical communities in which we participate. - -This code of conduct applies to all spaces managed by the Django project -or Django Software Foundation. This includes the issue tracker, DSF -events, and any other forums created by the project team which the -community uses for communication. In addition, violations of this code -outside these spaces may affect a person's ability to participate -within them. - -If you believe someone is violating the code of conduct, we ask that you -report it by emailing . For more details -please see our [Reporting -Guidelines](https://www.djangoproject.com/conduct/reporting/) - -- **Be friendly and patient.** -- **Be welcoming.** We strive to be a community that welcomes and - supports people of all backgrounds and identities. This includes, but - is not limited to members of any race, ethnicity, culture, national - origin, colour, immigration status, social and economic class, - educational level, sex, sexual orientation, gender identity and - expression, age, size, family status, political belief, religion, and - mental and physical ability. -- **Be considerate.** Your work will be used by other people, and you in - turn will depend on the work of others. Any decision you take will - affect users and colleagues, and you should take those consequences - into account when making decisions. Remember that we're a world-wide - community, so you might not be communicating in someone else's - primary language. -- **Be respectful.** Not all of us will agree all the time, but - disagreement is no excuse for poor behavior and poor manners. We might - all experience some frustration now and then, but we cannot allow that - frustration to turn into a personal attack. It's important to remember - that a community where people feel uncomfortable or threatened is not - a productive one. Members of the Django community should be respectful - when dealing with other members as well as with people outside the - Django community. -- **Be careful in the words that you choose.** We are a community of - professionals, and we conduct ourselves professionally. Be kind to - others. Do not insult or put down other participants. Harassment and - other exclusionary behavior aren't acceptable. This includes, but is - not limited to: - - Violent threats or language directed against another person. - - Discriminatory jokes and language. - - Posting sexually explicit or violent material. - - Posting (or threatening to post) other people's personally - identifying information ("doxing"). - - Personal insults, especially those using racist or sexist terms. - - Unwelcome sexual attention. - - Advocating for, or encouraging, any of the above behavior. - - Repeated harassment of others. In general, if someone asks you to - stop, then stop. -- **When we disagree, try to understand why.** Disagreements, both - social and technical, happen all the time and Django is no exception. - It is important that we resolve disagreements and differing views - constructively. Remember that we're different. The strength of Django - comes from its varied community, people from a wide range of - backgrounds. Different people have different perspectives on issues. - Being unable to understand why someone holds a viewpoint doesn't mean - that they're wrong. Don't forget that it is human to err and blaming - each other doesn't get us anywhere. Instead, focus on helping to - resolve issues and learning from mistakes. - -Original text courtesy of the [Speak Up! project](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html). - -## Questions? - -If you have questions, please see [the FAQ](https://www.djangoproject.com/conduct/faq/). If that doesn't answer your questions, -feel free to [contact us](mailto:conduct@djangoproject.com). diff --git a/events.md b/events.md index 94d5f22..81e83fc 100644 --- a/events.md +++ b/events.md @@ -11,6 +11,28 @@ Establishing and enforcing Code of Conduct at events is not easy. Here is how Django Code of Conduct Working Group can help event organizers to ensure safe environments at events. +## In-Person Event Requirements + +All in-person events operating under the Django Code of Conduct must meet the following baseline requirements in addition to the general Code of Conduct. Event organizers are encouraged to publish an event-specific Code of Conduct page that extends this baseline with any additional policies relevant to their venue, location, and format. + +### Personal Space and Physical Conduct + +All attendees are expected to respect the personal space of others. Physical contact — including handshakes, hugs, or any other touch — requires consent. When in doubt, do not initiate physical contact. Events should communicate this expectation in their attendee-facing materials. + +Uninvited or repeated physical contact, following someone from space to space, or blocking someone's ability to leave a conversation are violations of this Code of Conduct. + +### Appropriate Items + +Organizers are responsible for communicating any restrictions on items brought into event spaces, in accordance with applicable local laws, venue policies, and cultural norms. Additional restrictions may be appropriate based on the nature and context of the event. If you need guidance on establishing item policies for your event, contact the Django CoC Working Group. + +### Photography and Recording + +Attendees may not photograph or record other individuals without their explicit consent. Events should establish and communicate a clear opt-in or opt-out system (e.g. lanyard color, badge sticker) so that attendees can signal their preferences without having to state them repeatedly. This system should be explained during opening announcements. + +### Event-Specific Policies + +Organizers are responsible for publishing any event-specific policies (venue rules, local legal requirements, accessibility measures, health and safety protocols) as an extension of this Code of Conduct. These extensions must not reduce the baseline protections above — they may only add to them. If you need help drafting an event-specific policy, contact the Django CoC Working Group. + ## Before the event - We advise that you share the list of attendees with us such that we are able to @@ -39,12 +61,33 @@ environments at events. and community expectations when developing these policies. If you need guidance on implementing location-specific safety measures, please reach out to us. +### Designating Code of Conduct Contacts + +Every event must publicly designate at least one named Code of Conduct contact before the event begins. Attendees should be able to identify these people by name (and ideally photo) on the event website, in printed materials, and at the event itself. Each designated contact must publish a direct, individual email address — not a shared group address — so that reporters can choose who to approach based on their comfort level. + +The number and structure of contacts should be appropriate to the event's size and context: + +- **Conferences (e.g. DjangoCon):** A dedicated Code of Conduct committee of at least two people, independent of the organizing team where possible, with clear contact information published in advance. +- **Workshops and sprints:** At minimum, the lead organizer or a designated coach must be identified as the CoC contact. If the event is co-located with a larger event, the larger event's CoC team serves as the escalation path. + +Contacts should be briefed on the enforcement process and have a clear channel to reach the Django CoC Working Group during the event. + ## During the event - If you encounter a Code of Conduct violation at your event that needs to be addressed immediately, you can reach out to us and we will try to help you through the process of resolving it. +### On-Site Reporting + +Your designated CoC contacts should be easy for attendees to find and approach. We recommend: + +- Announcing CoC contacts and how to reach them at the start of each day. +- Providing a private, in-person reporting option (a designated quiet location or a scheduled office-hours slot) in addition to any written or email channel. +- Having contacts wear a visible identifier (lanyard, badge color, etc.) so attendees can find them without having to ask. + +When a report is made on-site, the contact should: listen without judgment, take brief notes, reassure the reporter of confidentiality, and decide whether immediate action is needed (asking someone to leave a space, pausing an activity) versus whether the matter can be handled after the fact. Contacts should not investigate or adjudicate alone — they should loop in the rest of the CoC team and, for anything serious, contact the Django CoC Working Group. + ## After the event Events in the Django community are strongly encouraged to keep reports diff --git a/faq.md b/faq.md index 0d4050f..6d4352a 100644 --- a/faq.md +++ b/faq.md @@ -18,7 +18,6 @@ However, we do expect that people will abide by the spirit and words of the CoC In practice, this means the Django forum, bug tracking and code review tools, and "official" Django events such as DjangoCons. In addition, violations of this code outside these spaces may affect a person's ability to participate within them. - ## What about events funded by the Django Software Foundation? diff --git a/sources.md b/sources.md index e937050..6917e81 100644 --- a/sources.md +++ b/sources.md @@ -26,6 +26,12 @@ Early versions drew from [PyCon 2013 Procedure for Handling Harassment Incidents In 2026, we substantially revised our enforcement materials to incorporate best practices from: +### Contributor Covenant 3 + +[Contributor Covenant Enforcement Resources](https://www.contributor-covenant.org/resources) provided a wealth of materials on enforcement processes, transparency, and community communication. + +**License:** [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) + ### Python Software Foundation - [PSF Code of Conduct](https://policies.python.org/python.org/code-of-conduct/) @@ -42,6 +48,18 @@ These materials provided structured frameworks for evaluating reports (jurisdict **License:** [MIT License](https://github.com/openjs-foundation/cross-project-council/blob/main/LICENSE) +### Mozilla + +[Mozilla's Code of Conduct Enforcement Ladder](https://github.com/mozilla/inclusion) provided inspiration for our enforcement approach, particularly the graduated response framework. + +**License:** [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/) + +### Microsoft + +[Microsoft's Responsible AI Principles](https://opensource.microsoft.com/codeofconduct/) informed our approach to responsible use of AI-generated content. + +**License:** [MIT License](https://github.com/microsoft/opensource.microsoft.com/blob/main/LICENSE) + ## Additional Influences Over the years, we have also learned from: diff --git a/working-group-manual.md b/working-group-manual.md index d4c4696..5a44c14 100644 --- a/working-group-manual.md +++ b/working-group-manual.md @@ -78,7 +78,7 @@ The Code of Conduct applies in official event spaces, including: - Event video hosting platforms and live streams - Official event communication channels (Slack, Discord, etc.) -Django-sponsored events (such as DjangoCon conferences) are required to have their own Code of Conduct and Code of Conduct team. Event organizers will enforce the code throughout the event. Issues at sponsored events can be escalated to the Django Code of Conduct Working Group by: +Django-sponsored events (such as DjangoCon conferences) are required to have their own Code of Conduct and Code of Conduct team, and must designate at least one named Code of Conduct point of contact as outlined in [events.md](events.md). Event organizers will enforce the code throughout the event. Issues at sponsored events can be escalated to the Django Code of Conduct Working Group by: - The event's Code of Conduct team - The reporter: The person/group who submits the complaint @@ -96,6 +96,7 @@ This Code of Conduct applies to the following online spaces managed by the Djang - GitHub repositories, issue trackers, and pull requests under Django organizations - Official Django social media accounts - Any other online space administered by the Django project or Django Software Foundation +- Any other space where their Code of Conduct specifically states that the Django Code of Conduct applies (e.g., [Djangonaut Space](https://github.com/djangonaut-space/program/blob/main/CODE_OF_CONDUCT.md#what-if-your-report-concerns-a-possible-violation-by-an-organizer)) This Code of Conduct applies to the following people in Django online spaces: @@ -112,7 +113,7 @@ Each online space is encouraged to provide: ### Affiliated Projects and Communities -Django-related projects and spaces may ask to designate the Django Code of Conduct Working Group as an escalation point in their own Code of Conduct process. To become an affiliated program, projects must adopt their own complementary Code of Conduct, request inclusion via [conduct@djangoproject.com](mailto:conduct@djangoproject.com), outline escalation procedures in their reporting process, and publish regular transparency reports. +Django-related projects and spaces may ask to designate the Django Code of Conduct Working Group as an escalation point in their own Code of Conduct process. To become an affiliated program, projects must adopt their own complementary Code of Conduct, designate a named Code of Conduct point of contact and provide their individual email address to the working group to keep on file, request inclusion via [conduct@djangoproject.com](mailto:conduct@djangoproject.com), outline escalation procedures in their reporting process, and publish regular transparency reports. For complete requirements, escalation criteria, and transparency reporting guidelines, see [affiliated-programs.md](affiliated-programs.md). @@ -410,11 +411,12 @@ Records are retained in accordance with the Django Software Foundation's data re ### Data Storage and Access -Records are currently stored in three locations: +Records are currently stored in four locations: 1. **Status Tracking Spreadsheet:** Contains anonymized case data (Case Code Names, Person Code Names, Status). 2. **Person Identity Key:** A separate, highly restricted spreadsheet mapping "Real Names" to "Person Code Names" and tracking report counts and highest recorded consequence. 3. **Report Documentation:** Individual Google Docs for each case. +4. **Affiliated Programs Register:** A spreadsheet in the shared Google Drive listing all affiliated programs and communities along with the name and individual email address of each program's designated Code of Conduct point of contact. This register must be kept up to date as programs join, update their contact, or lose affiliated status. All documents are shared only between members of the working group. The working group insists on not sharing the records outside the members due to confidentiality of information. Violating this will result in removal of the member from the working group.