|
1 | | -# Contributing to the Temporal Python SDK |
| 1 | +# Contributing to Temporal SDKs |
2 | 2 |
|
3 | | -Thanks for your interest in contributing! |
| 3 | +Thanks for your interest in contributing to Temporal SDKs. |
4 | 4 |
|
5 | | -All contributors must complete the Temporal Contributor License Agreement (CLA) before changes |
6 | | -can be merged. A link to the CLA will be posted in the PR. |
| 5 | +This guide describes expectations that apply across Temporal SDK repositories. Each |
| 6 | +repository may have additional local conventions, but the guidance below should help |
| 7 | +you open issues and pull requests that maintainers can evaluate efficiently. |
7 | 8 |
|
8 | | -See the [README](README.md) for build and development instructions. |
| 9 | +## Before You Open an Issue |
9 | 10 |
|
10 | | -## Changelog |
| 11 | +Search the existing issues first. If you find an issue that describes the same bug, |
| 12 | +feature request, or design topic, add any relevant details there instead of opening a |
| 13 | +duplicate. Use an upvote on the issue to show that it affects you too. |
11 | 14 |
|
12 | | -User-facing changes are recorded in [`CHANGELOG.md`](CHANGELOG.md), loosely following the |
13 | | -[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. |
| 15 | +Issues are assigned to people when they are actively working on them. Before taking |
| 16 | +on an issue, check whether it is already assigned so you do not duplicate someone |
| 17 | +else's work. |
14 | 18 |
|
15 | | -If your PR includes a user-facing change (new feature, behavior change, deprecation, breaking |
16 | | -change, notable bug fix, or security fix), add a short, high-level entry to the `## [Unreleased]` |
17 | | -section at the top of `CHANGELOG.md` under the appropriate heading: |
18 | | -Added, Changed, Deprecated, Breaking Changes, Fixed, or Security. |
| 19 | +Use GitHub issues for actionable bugs and feature work. For usage questions, help |
| 20 | +debugging an application, or general discussion, join the relevant |
| 21 | +language-specific channel in the |
| 22 | +[Temporal community Slack](https://temporal.io/slack) or use the support channel |
| 23 | +available to you. |
19 | 24 |
|
20 | | -Keep entries high-level and written for users. The full commit log is appended at release time, |
21 | | -so internal-only changes (refactors, tests, CI, docs) don't need an entry. |
| 25 | +## Bug Reports |
| 26 | + |
| 27 | +When reporting a bug, include enough detail for someone else to reproduce or |
| 28 | +understand the problem: |
| 29 | + |
| 30 | +* A short summary of the problem. |
| 31 | +* A minimal reproduction, preferably as code that can be copied into a small |
| 32 | + project or test. |
| 33 | +* What you expected to happen and what actually happened. |
| 34 | +* The SDK version. |
| 35 | +* The language runtime version. |
| 36 | +* The operating system and architecture. |
| 37 | +* Temporal Server or Temporal Cloud details, if the issue depends on service |
| 38 | + behavior. |
| 39 | +* Logs, stack traces, workflow histories, or other diagnostics that show the |
| 40 | + failure. |
| 41 | +* Whether the behavior is a regression, and the last version where it worked if |
| 42 | + known. |
| 43 | + |
| 44 | +## Feature Requests and Design Changes |
| 45 | + |
| 46 | +Open or join a GitHub issue before starting substantial feature work, behavior |
| 47 | +changes, or API design changes. This gives maintainers and other SDK users a chance |
| 48 | +to discuss the approach before you invest in a larger implementation. |
| 49 | + |
| 50 | +The relevant language-specific channel in Temporal community Slack is also a good |
| 51 | +place for early discussion, but important decisions should still be captured in a |
| 52 | +GitHub issue so they are visible and searchable. |
| 53 | + |
| 54 | +Small bug fixes, documentation fixes, and narrowly scoped maintenance changes can go |
| 55 | +straight to a pull request. |
| 56 | + |
| 57 | +## Pull Requests |
| 58 | + |
| 59 | +Good pull requests are focused and easy to review: |
| 60 | + |
| 61 | +* Keep each pull request scoped to one logical change. |
| 62 | +* Include tests for behavior changes. |
| 63 | +* Update public API documentation or doc comments when public behavior changes. |
| 64 | +* Add a high-level changelog entry for user-facing changes according to the |
| 65 | + repository's local changelog convention. |
| 66 | +* Describe what changed, why it changed, and what validation you ran. |
| 67 | + |
| 68 | +Run the relevant local checks when practical. CI must pass before a pull request can |
| 69 | +be merged. |
| 70 | + |
| 71 | +## Things to Avoid |
| 72 | + |
| 73 | +Avoid changes that make review harder without improving the contribution: |
| 74 | + |
| 75 | +* Unrelated refactors mixed into a behavior change. |
| 76 | +* Style-only churn. |
| 77 | +* Large feature pull requests that were not discussed first. |
| 78 | +* License, copyright, or other legal changes without maintainer discussion. |
| 79 | + |
| 80 | +## AI-Generated Contributions |
| 81 | + |
| 82 | +Using AI tools while contributing is acceptable. You are responsible for the |
| 83 | +correctness, quality, and maintainability of everything you submit. |
| 84 | + |
| 85 | +Thoroughly self-review AI-generated code and documentation before opening a pull |
| 86 | +request. Make sure it is correct, tested where appropriate, and consistent with the |
| 87 | +style and patterns of the codebase. |
| 88 | + |
| 89 | +Keep AI-assisted changes concise and scoped. Avoid verbose generated prose, |
| 90 | +unnecessary comments, or broad rewrites that make the change harder to review. |
| 91 | + |
| 92 | +## Contributor License Agreement |
| 93 | + |
| 94 | +All contributors must complete the Temporal Contributor License Agreement (CLA) |
| 95 | +before changes can be merged. A link to the CLA will be posted in the pull request. |
| 96 | + |
| 97 | +## Security Issues |
| 98 | + |
| 99 | +Do not open public GitHub issues for suspected security vulnerabilities. Report them |
| 100 | +to security@temporal.io instead. |
| 101 | + |
| 102 | +## Review and CI |
| 103 | + |
| 104 | +Maintainers review pull requests for correctness, compatibility, test coverage, |
| 105 | +documentation, and long-term maintainability. Review may require changes before a |
| 106 | +pull request can be merged, and it may take maintainers some time to review a |
| 107 | +contribution. |
| 108 | + |
| 109 | +CI is the final validation gate. If CI fails, update the pull request or ask for help |
| 110 | +if the failure appears unrelated to your change. Some CI gates may wait for a |
| 111 | +maintainer to approve or run them. |
| 112 | + |
| 113 | +## Inactive Pull Requests |
| 114 | + |
| 115 | +Maintainers may close inactive pull requests after follow-up if they are no longer |
| 116 | +moving forward. If that happens, you are welcome to reopen the pull request or open a |
| 117 | +new one when you are ready to continue. |
| 118 | + |
| 119 | +## Community Conduct |
| 120 | + |
| 121 | +Keep discussions respectful, constructive, and focused on the work. Clear context, |
| 122 | +specific examples, and patience with review feedback help everyone move faster. |
0 commit comments