How to contribute to Prefect?

Prefect’s Task Library is a growing collection of pre-built tasks you can plug right into your Prefect Flows. The task library’s greatest benefit is showcasing the many different tasks that our users are the experts in, well beyond what the core developers could imagine or have the expertise for.

Getting started

Adding to the task library is a great introduction to new open-source contributors of Prefect, and we have a GitHub label - “task library” - with some existing issues that already have ideas. Several of those also have the “good first issue” label, so it’s a perfect entry point!

Contributing to Prefect’s docs is just as important as adding new code! We welcome your help, whether fixing a simple typo or writing a new tutorial. For new users, this can be an excellent way to get involved.

Contribution checklist

Commit formatting

When possible, try to craft useful commits. Each commit should be logically distinct and self-contained, which makes reviewing code easier and understanding why changes were made easier.

Changelog

It’s important to update Prefect’s changelog with any adjustments to the project. Each release has a few sections:

  • Features: headline additions to the system
  • Enhancements: improvements to existing functionality, or minor additions
  • Server: improvements to Prefect Server
  • Task Library: additions to Prefect’s task library
  • Fixes: adjustments that fix bugs or other conditions
  • Deprecations: any deprecated functionality
  • Breaking Changes: any changes that break Prefect’s backwards-compatibility

To avoid merge conflicts, Prefect tracks changelog entries as separate files in the changes/ directory. To add a new entry:

  1. Create a new file in the changes/ directory. The file name doesn’t matter as long as it is unique (we recommend using the issue or PR number e.g. issue1234.yaml or pr1234.yaml ).
  2. Choose one (or more if a PR encompasses multiple changes) of the following headers:
  • feature
  • enhancement
  • server
  • task
  • fix
  • deprecation
  • breaking
  1. Fill in one (or more) bullet points under the heading, describing the change. Markdown syntax may be used. Each entry should consist of a brief description and a link to the relevant GitHub issue(s) or PR(s).
  2. If you would like to be credited as helping with this release, add a contributor section with your name and github username.

Here’s an example of a PR that adds an enhancement

enhancement:
  - "Add new `TimedOut` state for task execution timeouts - [#255](https://github.com/PrefectHQ/prefect/issues/255)"

contributor:
  - "[Chris White](https://github.com/cicdw)"

Tests

Make sure that any new functionality is well tested! See the tests guide for more.

Opening a PR

A helpful PR explains WHAT changed and WHY the change is important. Please take time to make your PR descriptions as helpful as possible – both for code review today and information in the future.

Additional resources

Happy engineering!