Contributing

Contributing Guide #

Thank you for your efforts to improve the fapolicy-analyzer project. This guide will provide information about various aspects of the development workflow, like submitting issues, developing a feature, submitting a pull request, etc.

Developers #

Python bindings #

We write python bindings using PyO3 and setuptools_rust.

We use pipenv for creating a sand-boxed development environment. To install pipenv into your home directory:

pip3 install --user pipenv

To build and install the bindings, and to start the virtual development environment, run the following from the top level directory of this repository:

make shell

Note: There may be some additional build-time requirements. See the development wiki page for more details.

Before Submitting a Pull Request #

  • Clone the repository
  • Create a branch from master
  • Run make shell in the repository root
  • Change necessary code for bug fix, a new feature
  • Check linting and format it
make lint
make format
  • Make sure all unit-tests pass and that there is greater than 90% converage.
make test

Changelog updates #

We use towncrier to generate a CHANGELOG for each release.

To include your change in the release notes please create a news article in the news directory.

Valid articles should be saved as <PR>.<CATEGORY>.md where <PR> is the pull request number and <CATEGORY> is one of:

  • fixed - for bug fixes
  • added - added a new feature
  • changed - changed an existing feature
  • removed - removed capability
  • packaging - an RPM or dependency changes

PRs may be excluded from the documentation requirement if they fall into one of the following categories:

  • ci - Continuous Integration changes do not need reported to users
  • documentation - Documentation improvements do not usually need reported to users
  • release - Release PRs do not need a news article

To exclude the news check on a PR label the PR with the category or tag PR title with a prefix + :, eg. ci: Updated the build.

Getting Help #

Feel free to ask a question or start a discussion in the Discussion section of this project.

More Resources #

As mentioned above, there is a dedicated Development section on the wiki.

See the Wiki for more general resources.

The fapolicyd project.

Reporting an issue #

Before submitting an issue:

  • A clear title
  • Provide as detailed a description as possible and ideally the steps to duplicate the issue.