Contributing

The pull requests, bug reports, feature suggestions or even demo use cases contributed by the pyircbot community are all highly appreciated and a valuable asset to the project.

This document outlines best practices and conditions for contributing changes pyircbot.

Sending a Pull Request

The pyircbot project does have a couple rules for pull requests:

Where
While pyircbot’s main git repository is hosted on a private server, PRs are welcome on the github mirror of the project.
Linting
Pyircbot’s codebase is linted with flake8. The configuration arguments for flake8 are: --max-line-length 120 --ignore E402,E712,E731,E211 --select E,F. TODO add a flake8 config file to the repo so these args are codified.
Python versions
Pyircbot supports the two latest versions of python 3. At present, this is Python 3.6 and 3.7. All changes must be compatible with these versions. Using compatibility modules or checking the version at runtime is discouraged; the code should be written in a fashion that is interoperable.
Dependencies

The core of pyircbot - that is, the bot runtime itself and the basic modules needed to operate it - PingResponder and Services - have no dependencies outside python’s standard library of modules. All changes must not change this condition. The use of 3rd party dependencies in pyircbot modules is allowed, provided the versions used do not conflict with modules already in use.

All 3rd party dependencies must be installable via Pip with no extra setup required (e.g. OS-level packages), with some exceptions:

  • Requiring git for pip links directly to repositories is permitted.
  • Requiring a C/C++ compiler available on the system as well as python headers which are typically required for libraries with C/C++ or other native language extensions is permitted. However, requiring additional headers or shared libraries is prohibited, unless:
  • Many operating systems provide a python3-pip or similar package that depends on many other packages that violate the above rules, such as openssl headers or sqlite shared libraries. Pyircbot’s preferred platform is Ubuntu Bionic, and any dependencies of such a package are permitted.
  • These rules apply to code dependencies only, and do not apply to external services such as MySQL.

Modules that require setup or dependencies beyond these rules will not be accepted into the core module set. The recommended approach to use such a module is via the usermodules config directive.

No set of rules will handle all cases, and discussion or defending a change that violates these rules is encouraged.

Tests
Please consider the test suite when submitting changes affecting the core runtime and existing modules. Reduction of coverage is acceptable, but breaking or removing tests is not. Changes submitted with updated or new tests will be fast-tracked.

Contributors to Pyircbot

Any change submitted to pyircbot is highly appreciated.

Our contributors, in no particular order: