Welcome to PyCQA’s Meta Documentation!

So you’re wondering what this “Pie Cee Que Aye” is and you’ve come here for answers? You’re in luck!

This website is here to provide you with:

  • a little bit of the history of the PyCQA
  • an idea of who is part of the PyCQA
  • how to become a part of the PyCQA
  • and other fun things (okay maybe they’re not actually fun)

Below you’ll find the map to this content and anything else we add as we go along.

Cheers! Ian

Contributor Covenant Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others’ private information, such as a physical or email address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at Ian Stapleton Cordasco <graffatcolmingov@gmail.com>, Ian Lee <IanLee1521@gmail.com> or Florian Bruhin <me@the-compiler.org>. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

  1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

  1. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

  1. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

  1. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by Mozilla’s code of conduct enforcement ladder.

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

An Introduction to the PyCQA

“PyCQA” is an abbreviated name for “Python Code Quality Authority”.

The PyCQA is not actually an authority on anything. (See also Creation of the PyCQA.)

What is the PyCQA?

The PyCQA is a loose organization of people who maintain projects in roughly the same domain: automatic style and quality reporting. Almost all of these projects are widely used by the larger Python community (and by each other) to enforce style guidelines and maintain some modicum of consistency within a code base. The organization formed around these people to provide them an easy to remember namespace for their projects.

Where does the PyCQA live?

As you may have noticed, we have a GitHub organization and a GitLab group. The PyCQA likes to respect all individual project decisions about where development primarily takes place. If your project lives on either of these two services, you’re welcome to share our organizational structures.

You might also notice, now that you’ve seen both our GitHub organization and GitLab group that we mirror repositories between the sites. If your project lives within the PyCQA and you’d like a mirror made (on the other service), let us know and we’ll be happy to set that up for you.

How can I add my project to the PyCQA?

If your project is related to code style or quality reporting, your project is welcome. All we ask is that you send an email to the code-quality mailing list with your request to join. In all likelihood one of the organization owners will respond to you and help you set everything up to move your project into the organization.

The History of the PyCQA

The PyCQA has a short, but interesting history.

Creation of the PyCQA

On 2014 September 12, Ian Cordasco sent an email to the code-quality mailing list with the idea to migrate Flake8 from Mercurial to Git.

The response was positive with the caveat that Free Software should be developed on similarly Free Software (GitLab). Ian was uncomfortable transferring the project to his own personal GitLab account so in jest and following the example of other groups (PyCA, PyPA, etc.), he created a GitLab group for the project. He also created a GitHub organization with the same name so he could mirror Flake8 to GitHub and accept contributions there. As the sole maintainer of flake8-docstrings, Ian also migrated that project from Mercurial to Git and onto GitLab (with a mirror on GitHub).

pep8 joins the organization on GitHub

After a while as the only member, Ian invited Ian Lee to join the PyCQA with pep8. Following some conversations, pep8 and its development team (mostly Ian Lee, but also its creator, Johann Rocholl, and former maintainer, Florent Xicluna) moved to the PyCQA in July of 2015.

Pylint and Astroid move to GitHub and the PyCQA

In October of 2015, Florian Bruhin sent an announcement to the code-quality mailing list that Pylint and Astroid would be moving to Git and GitHub from Mercurial and BitBucket. Over the course of the ensuing discussion, it was suggested that they also join the PyCQA and in December of 2015 the migration was complete.

mccabe and pep8-naming move to the PyCQA organization

Around the same time, Ian Cordasco moved more projects that he maintained into the PyCQA namespace. This time he moved both mccabe and pep8-naming which were previously maintained in the Flintwork organization.

pydocstyle (formerly pep257) moves to the PyCQA organization

In early January of 2016, Guido van Rossum asked that pep257 change its name. The usage of “PEP” was apparently creating confusion among users causing bugs to be reported to the PEP repository. Vladimir Keleshev, the creator of pep257, and Amir Rachum, the active maintainer, decided to move the project to the PyCQA. On 29 January 2016, the move and rename was complete and Amir joined the PyCQA with pydocstyle.

Baron and RedBaron join the PyCQA

On 2016 March 28, the author of Baron and RedBaron sent a message to the code-quality mailing list about a new release and the need for more contributors and maintainers. At that point, the organization extended an invitation for Laurent Peuch to join with both Baron and RedBaron. The transfer was completed on 2016 March 31.

Bandit moves to the PyCQA organization

On 2018 February 26, the authors of Bandit sent a request to the code-quality mailing list to accept Bandit from the OpenStack namespace to the PyCQA. The transfer was completed on 2018 May 2.

modernize joins PyCQA

On 2020 August 18, Thomas Grainger, as a maintainer of the project, requests that modernize be moved into the PyCQA organization. With the support of all project maintainers in place, the transfer was completed on 2020 August 23.

isort joins PyCQA

On 2020 August 23, Timothy Crosley, the author of isort sent a request for the project to be moved into the PyCQA organization. The transfer was completed on the same day.

The Management of the PyCQA

  • Creator:
    • Ian Cordasco
  • Organization owners:
    • Amir Rachum
    • Claudiu Popa
    • Florian Bruhin
    • Ian Cordasco
    • Ian Lee
  • Pycodestyle (formerly pep8) Administrator(s):
    • Ian Lee
  • PyLint Administrator(s):
    • Claudiu Popa
    • Florian Bruhin
    • Sylvain Thénault
    • Guillaume Peillex
    • Pierre Sassoulas
  • Pydocstyle (formerly pep257) Administrator(s):
    • Amir Rachum
    • Sambhav Kothari
  • Baron and RedBaron Administrator(s):
    • Laurent Peuch
  • Flake8-import-order Administrators:
    • Alex Stapleton
    • Phil Jones
  • Flake8-bugbear Administrator(s):
    • Łukasz Langa
  • Bandit Administrator(s):
    • Eric Brown
    • Gage Hugo
    • Ian Stapleton Cordasco
    • Luke Hinds

All projects in the PyCQA should have a Code of Conduct that they are willing to enforce.

Project Management

Each project is managed by its own members. There is no over-arching management over all projects in the PyCQA. While many people could merge pull requests and close issues on all repositories, they are trusted to not do so unless they are specifically a member of the team maintaining that project. At least one member of each project’s administration will be an Owner of the organzation. This is to allow them to manage their teams and membership of others in teams.

Team Structure

Projects are encouraged to have as many teams as they deem necessary to run their project. Most projects operate with the following:

  • Team of administrators - this team has “Admin” permissions in GitHub for the project’s repository/repositories.
  • Team of developers (or cores, or whatever you want to call them) - this team has “Write” permissions in GitHub for the project’s repository/repositories.

This set-up allows projects to add more people who can merge pull requests and close issues without being able to change settings on the repository itself, add or remove services, etc.

Join the Community!

There are quite a few ways to get involved with the PyCQA.

Asynchronous Methods

GitHub

You can contribute directly to projects in a variety of ways.

Each project should have documentation for how to participate. Please visit the specific project’s documentation and repository for instructions.

Mailing List

You can join our mailing list (this list does not receive a large amount of messages so it should not cause an information overload if you join).

If you have questions about a project or its maintenance and the project seems inactive on GitHub, please use the mailing list to inquire. Please also check the archives for prior discussions before posting new threads.

Note

The mailing list is partially moderated. This means that if you join the list, your first message may be held until an administrator reviews it and allows your posts to automatically be posted.

A fair amount of spam is sent to the mailing list, and this moderation protects your inbox at the expense of moderators and administrators. If you’d like to help with moderating the list, reach out to the admin address listed on the mailing list page.

Meta Issue Tracker

You can start discussions by opening issues on our meta repository. If there’s some governance question that for some reason seems unsuitable to the Mailing List, feel free to open an issue on the meta repository.

Semi-Synchronous Methods

Discord

You can join us on Discord where every project will receive space of their own for conversations and collaborations.

We are aware that Discord requires non-free software, but the benefits to the user and the organization far outweigh that one ideological barrier.

IRC

Note

Our primary method of semi-synchronous communication is Discord. IRC is still used by some members but is not the primary location and is not thoroughly monitored. Your queries may go unanswered here.

You can chat with a few of us on IRC on the Libera.chat server in the ##python-code-quality channel (See also “IRC”)

IRC is an old and durable protocol that allows people to chat in real time. There are many ways to begin using IRC but we recommend using Libera’s webchat as it is both secure (served over TLS) and should work in any browser. IRCHelp.org has a great tutorial to learn how to use IRC.

If you outgrow Libera’s webchat, there are a number of other options for connecting to IRC. Wikipedia has an overwhelmingly long list of IRC clients.

The following is a list of clients that the current members of the PyCQA use:

Windows
  • Hexchat (Graphical, Also works on macOS and Linux)
macOS
  • Textual (Graphical, WebKit based)
  • weechat (Curses, Terminal program)
Linux
  • weechat (Curses, Terminal program)
  • irssi (Curses, Terminal program)

Indices and tables