3.7 KiB
Contributing to Presidio
🎉 Thanks for taking the time to contribute! 🎉
The following is a set of guidelines for contributing to Presidio.
What do I need to know before I get started?
Project Presidio
Presidio is a community project aimed at helping everyone handle their private data and make the world a safer place. Presidio is both a framework and a system. It's a framework in a sense that you could take code parts from it, extend, customize and plug somewhere. It's also a system you could take as a whole or in parts and deploy locally, on-prem on in the cloud, especially when leveraging Kubernetes. When contributing to presidio, it's important to keep this in mind, as some "framework" contributions might not be suitable for a deployment, or vice-versa.
Build and Release process
The project currently supports Azure Pipelines using YAML pipelines which can be easily imported to any Azure Pipelines instance. For more details follow the Build and Release documentation.
Getting started with the code
To get started, refer to the documentation for setting up a development environment.
General contribution guidelines
- A Github issue suggesting the change should be opened prior to a PR.
- All contributions should be documented, tested and linted. Please verify that all tests and lint checks pass successfully before proposing a change.
- In order for a pull request to be accepted, the CI (containing unit tests, e2e tests and linting) needs to succeed, in addition to approvals from two maintainers.
- PRs should be small and solve/improve one issue at a time. If you have multiple suggestions for improvement, please open multiple PRs.
- Every PR must bump the presidio version by changing the VERSION file to the appropriate semver.
Versioning guidelines
- A typical pull request with a new feature bumps the minor version.
- Bug fix, documentation change and operational code (i.e. devops) change bump the patch version.
- A breaking change bumps the major version. Please consult with the Presidio team prior to opening such PRs.
How can I contribute?
- Testing
- Adding new recognizers for new PII types
- Adding new connectors
- Bug fixing and general improvement
How to test?
- For Go, the official methods for testing are used. see https://golang.org/pkg/testing/
- For Python, Presidio leverages
pytest
andflake8
. See this tutorial on more information on testing the presidio-analyzer module.
Adding new recognizers for new PII types
Adding a new recognizer is a great way to improve Presidio. A new capability to detect a new type of PII entity improves Presidio's coverage and makes private data less accessible.
Best practices for recognizers development are described here. Please follow these guidelines when proposing new recognizers.
Adding new connectors
Presidio's strength lies in its ability to be completely pluggable and customizable. Adding new types of databases, stream-analytics engines and data stores is extremely useful for many users. Use the following developer guide for adding new connectors.
Bug fixing and general improvement
Please review the open issues on Github for known bugs and feature requests. We sometimes add 'good first issue' labels on those we believe are simpler, and 'advanced' labels on those which require more work or multiple changes across the solution.