### Navigation

- index
- modules |
- previous |
- repoze.what 1.0.9 documentation »

# Participate in the development of `repoze.what`!

Overview

Here you will learn how you may contribute to `repoze.what`, either extending it or fixing issues.

## Sending patches

Please feel free to send patches to fix bugs or implement features, but keep in mind that it will take some time to get applied if it doesn’t follow our basic coding conventions. If you can, please include the respective tests too.

Patches should be sent to the Repoze mailing list.

## Writing plugins

An important way to contribute to `repoze.what` is by creating `plugins`.

There are no special guidelines to create unofficial plugins, but you are highly encouraged to create plugins under the `repoze.what.plugins` namespace and contact us once you have at least one usable release (so that we can mention it in the manual).

### Guidelines for official plugins

Official plugins must meet certain requirements:

- It must use the Repoze license.
- It should follow the coding conventions of the project.
- Its documentation should be merged into the official documentation.

If you want to turn your `repoze.what` unofficial plugin into an official one and you are willing to make it meet the requirements above, please propose it after you have at least one usable release (e.g., a beta, a release candidate; not only pre-alphas) – The rate of stillborn Free Software projects is very high, so we prefer to turn a unofficial plugin into an official one if it has ever seen the light.

## Coding conventions

The basic coding conventions for `repoze.what` are not special at all – they are basically the same you will find in other Python projects:

- The character encoding should be UTF-8.
- Lines should not contain more than 80 characters.
- The new line character should be the one used in Unix systems (`\n`).
- Stick to the widely used Style Guide for Python Code and Docstring Conventions.

However, we have the following additional coding conventions which should be applied in the first beta release of a package at the latest (this is, they are not strictly necessary in alpha releases):

- The unit test suite for the package should cover 100% of the code. People entrust us with nothing less than the authorization control of their application, so we should take this additional security step to deserve their trust. Sure, it won’t make the package 100% bug-free (that’s impossible), but at least we’ll avoid regression bugs effectively and we’ll be sure that a bug found will be an unwritten test. It shouldn’t be hard for you if you practice the Test-Driven Development methodology.
- All the public components of the package should be properly documented along with examples, so that people won’t have to dive into our code to learn how to achieve what they want.

### Navigation

- index
- modules |
- previous |
- repoze.what 1.0.9 documentation »