blob: d47c825e84d9586dc5ca4b2f549cf59d272b0c3a [file] [log] [blame]
Laurens Van Houtven5a422982014-03-15 21:42:31 +01001Contributing
2============
Laurens Van Houtven290aba12014-03-14 15:20:18 +01003
Laurens Van Houtven36a26652014-03-15 21:52:25 +01004First of all, thank you for your interest in contributing to pyOpenSSL!
Hynek Schlawack8fb864a2015-06-07 19:09:49 +02005This project has no company backing its development therefore we're dependent on help by the community.
6
Laurens Van Houtven290aba12014-03-14 15:20:18 +01007
Laurens Van Houtven5a422982014-03-15 21:42:31 +01008Filing bug reports
9------------------
Laurens Van Houtven290aba12014-03-14 15:20:18 +010010
Laurens Van Houtven36a26652014-03-15 21:52:25 +010011Bug reports are very welcome.
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020012Please file them on the GitHub issue tracker.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010013Good bug reports come with extensive descriptions of the error and how to reproduce it.
Jean-Paul Calderone0679a692014-03-16 10:17:09 -040014Reporters are strongly encouraged to include an `short, self contained, correct example <http://www.sscce.org/>`_.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010015
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020016
17Security
18--------
19
20If you feel that you found a security-relevant bug that you would prefer to discuss in private, please send us a GPG_-encrypted e-mail.
21
22The maintainer can be reached at hs@ox.cx and his GPG key ID is ``0xAE2536227F69F181`` (Fingerprint: ``C2A0 4F86 ACE2 8ADC F817 DBB7 AE25 3622 7F69 F181``).
23Feel free to cross-check this information with Keybase_.
24
25
Laurens Van Houtven5a422982014-03-15 21:42:31 +010026Patches
27-------
Laurens Van Houtven290aba12014-03-14 15:20:18 +010028
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020029All patches to pyOpenSSL should be submitted in the form of pull requests to the main pyOpenSSL repository, `pyca/pyopenssl`_.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010030These pull requests should satisfy the following properties:
Laurens Van Houtven290aba12014-03-14 15:20:18 +010031
Jean-Paul Calderone433d4bd2014-03-16 10:46:16 -040032- The branch referenced should be a `feature branch`_ focusing on one particular improvement to pyOpenSSL.
Jean-Paul Calderone0679a692014-03-16 10:17:09 -040033 Create different branches and different pull requests for unrelated features or bugfixes.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010034- Code should follow `PEP 8`_, especially in the "do what code around you does" sense.
Jean-Paul Calderone0679a692014-03-16 10:17:09 -040035 One notable way pyOpenSSL code differs, for example, is that there should be three empty lines between module-level elements,and two empty lines between class-level elements.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010036 Methods and functions are named in ``snake_case``.
37 Follow OpenSSL naming for callables whenever possible is preferred.
Jean-Paul Calderone0679a692014-03-16 10:17:09 -040038- Pull requests that introduce code must test all new behavior they introduce as well as for previously untested or poorly tested behavior that they touch.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010039- Pull requests are not allowed to break existing tests.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010040- Pull requests that introduce features or fix bugs should note those changes in the ``ChangeLog`` text file in the root of the repository.
41 They should also document the changes, both in docstrings and in the documentation in the ``doc/`` directory.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010042
Laurens Van Houtven36a26652014-03-15 21:52:25 +010043Finally, pull requests must be reviewed before merging.
44This process mirrors the `cryptography code review process`_.
45Everyone can perform reviews; this is a very valuable way to contribute, and is highly encouraged.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010046
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020047Pull requests are merged by members of PyCA.
48They should, of course, keep all the requirements detailed in this document as well as the ``pyca/cryptography`` merge requirements in mind.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010049
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020050The final responsibility for the reviewing of merged code lies with the person merging it.
51Since pyOpenSSL is a sensitive project from a security perspective, reviewers are strongly encouraged to take this review and merge process very seriously.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010052
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020053
54Finding Help
55------------
56
57If you need any help with the contribution process, you'll find us hanging out at ``#cryptography-dev`` on Freenode_ IRC.
58You can also ask questions on our `mailing list`_.
59
60Wherever we interact, we strive to follow the `Python Community Code of Conduct`_.
61
62
63.. _GPG: http://en.wikipedia.org/wiki/GNU_Privacy_Guard
64.. _Keybase: https://keybase.io/hynek
65.. _pyca/pyopenssl: https://github.com/pyca/pyopenssl
66.. _PEP 8: https://www.python.org/dev/peps/pep-0008/
Laurens Van Houtven5a422982014-03-15 21:42:31 +010067.. _cryptography code review process: https://cryptography.io/en/latest/development/reviewing-patches/
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020068.. _feature branch: https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow
69.. _freenode: https://freenode.net
70.. _`mailing list`: https://mail.python.org/mailman/listinfo/cryptography-dev
71.. _`Python Community Code of Conduct`: https://www.python.org/psf/codeofconduct/