blob: 7bfce3c8b0f94ed51cb79ea507609dbbde70014a [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 Schlawack35147f02015-09-06 09:00:15 +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
Hynek Schlawack35147f02015-09-06 09:00:15 +020032- The pull request should focus on one particular improvement to pyOpenSSL.
33 Create 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.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010035 Follow OpenSSL naming for callables whenever possible is preferred.
Hynek Schlawack35147f02015-09-06 09:00:15 +020036- New tests should use `py.test-style assertions`_ instead of the old `self.assertXYZ`-style.
Jean-Paul Calderone0679a692014-03-16 10:17:09 -040037- 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 +010038- Pull requests are not allowed to break existing tests.
Hynek Schlawack35147f02015-09-06 09:00:15 +020039 We usually don't comment on pull requests that are breaking the CI because we consider them work in progress.
40 Please note that not having 100% code coverage for the code you wrote/touched also causes our CI to fail.
Laurens Van Houtven36a26652014-03-15 21:52:25 +010041- Pull requests that introduce features or fix bugs should note those changes in the ``ChangeLog`` text file in the root of the repository.
42 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 +010043
Laurens Van Houtven36a26652014-03-15 21:52:25 +010044Finally, pull requests must be reviewed before merging.
45This process mirrors the `cryptography code review process`_.
46Everyone can perform reviews; this is a very valuable way to contribute, and is highly encouraged.
Laurens Van Houtven290aba12014-03-14 15:20:18 +010047
Hynek Schlawack8f4eeb52015-09-06 15:12:40 +020048Pull requests are merged by `members of PyCA`_.
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020049They 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 +010050
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020051The final responsibility for the reviewing of merged code lies with the person merging it.
52Since 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 +010053
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020054
55Finding Help
56------------
57
58If you need any help with the contribution process, you'll find us hanging out at ``#cryptography-dev`` on Freenode_ IRC.
59You can also ask questions on our `mailing list`_.
60
61Wherever we interact, we strive to follow the `Python Community Code of Conduct`_.
62
63
Hynek Schlawack35147f02015-09-06 09:00:15 +020064.. _GitHub issue tracker: https://github.com/pyca/pyopenssl/issues
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020065.. _GPG: http://en.wikipedia.org/wiki/GNU_Privacy_Guard
66.. _Keybase: https://keybase.io/hynek
67.. _pyca/pyopenssl: https://github.com/pyca/pyopenssl
68.. _PEP 8: https://www.python.org/dev/peps/pep-0008/
Hynek Schlawack35147f02015-09-06 09:00:15 +020069.. _py.test-style assertions: https://pytest.org/latest/assert.html
Laurens Van Houtven5a422982014-03-15 21:42:31 +010070.. _cryptography code review process: https://cryptography.io/en/latest/development/reviewing-patches/
Hynek Schlawack8fb864a2015-06-07 19:09:49 +020071.. _freenode: https://freenode.net
Hynek Schlawack35147f02015-09-06 09:00:15 +020072.. _mailing list: https://mail.python.org/mailman/listinfo/cryptography-dev
73.. _Python Community Code of Conduct: https://www.python.org/psf/codeofconduct/
Hynek Schlawack8f4eeb52015-09-06 15:12:40 +020074.. _members of PyCA: https://github.com/orgs/pyca/people