You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -17,275 +17,23 @@ limitations under the License.
17
17
18
18
# Contributing to Dynamo
19
19
20
-
Thank you for your interest in contributing to Dynamo! Whether you're fixing a typo, reporting a bug, improving documentation, or building a new feature—every contribution matters and helps make Dynamo better for everyone.
20
+
Thank you for your interest in contributing to Dynamo!
21
21
22
-
This guide will help you get started. If you have questions, join us on [Discord](https://discord.gg/nvidia-dynamo) or open a [GitHub Discussion](https://github.com/ai-dynamo/dynamo/discussions).
22
+
For the full contribution guide — including how to get started, build from source, submit PRs, and what to expect during review — see:
1.**Set up** your development environment using the [Building from Source](README.md#building-from-source) guide
37
-
2.**Find an issue** — Browse [open issues](https://github.com/ai-dynamo/dynamo/issues) or look for:
37
+
Dynamo requires all contributions to be signed off with the [Developer Certificate of Origin (DCO)](https://developercertificate.org/). This certifies that you have the right to submit your contribution under the project's [Apache 2.0 license](https://github.com/ai-dynamo/dynamo/blob/main/LICENSE).
38
38
39
-
| Issue Type | Description |
40
-
|------------|-------------|
41
-
|[Good first issues](https://github.com/ai-dynamo/dynamo/labels/good-first-issue)| Beginner-friendly |
42
-
|[Help wanted](https://github.com/ai-dynamo/dynamo/labels/help-wanted)| Community contributions welcome |
43
-
44
-
3.**Start small** — Documentation fixes, bug fixes, and test improvements are great first contributions
45
-
4.**Ask questions** — Join [Discord](https://discord.gg/nvidia-dynamo) or open a [Discussion](https://github.com/ai-dynamo/dynamo/discussions) if you get stuck
46
-
47
-
**Community Impact:** 70+ external contributors have merged PRs, with 130+ community contributions since launch and ~8 new contributors joining each month. Your contribution matters—[see our contributors](https://github.com/ai-dynamo/dynamo/graphs/contributors).
48
-
49
-
## Code of Conduct
50
-
51
-
We are committed to providing a welcoming and inclusive environment. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
52
-
53
-
---
54
-
55
-
## Ways to Contribute
56
-
57
-
### Report a Bug
58
-
59
-
Found something broken? [Open a bug report](https://github.com/ai-dynamo/dynamo/issues/new?template=bug_report.yml) with:
60
-
- Steps to reproduce
61
-
- Expected vs. actual behavior
62
-
- Environment details (OS, GPU, Python version, Dynamo version)
63
-
64
-
### Improve Documentation
65
-
66
-
Documentation improvements are always welcome. This includes:
67
-
- Fixing typos or unclear explanations
68
-
- Adding examples or tutorials
69
-
- Improving API documentation
70
-
71
-
Small doc fixes can be submitted directly as PRs without an issue.
72
-
73
-
### Propose a Feature
74
-
75
-
Have an idea for a new feature? [Open a feature request](https://github.com/ai-dynamo/dynamo/issues/new?template=feature_request.yml) to discuss it with Dynamo maintainers before implementation.
76
-
77
-
### Contribute Code
78
-
79
-
Ready to write code? See the [Contribution Workflow](#contribution-workflow) section below for the process.
80
-
81
-
---
82
-
83
-
## What Happens to Your Issue
84
-
85
-
### Priority Levels
86
-
87
-
When triaged, issues are assigned a priority based on impact:
88
-
89
-
| Priority | Meaning |
90
-
|----------|---------|
91
-
|**Urgent**| Critical blocker—system failure, security vulnerability, data loss |
92
-
|**P0**| High impact—major functionality broken, blocking multiple users |
93
-
|**P1**| Medium impact—workarounds exist, or popular feature request |
|`approved-for-pr`| Ready for implementation—submit a PR |
103
-
|`in-progress`| Someone is working on this |
104
-
|`blocked`| Waiting on external dependency |
105
-
106
-
### Response Expectations
107
-
108
-
We aim to:
109
-
-**Respond** to new issues within a few business days
110
-
-**Triage** high-priority issues (P0/P1) within a week
111
-
112
-
Issues with no activity for 30 days may be auto-closed (can be reopened).
113
-
114
-
### Good First Issues
115
-
116
-
Issues labeled `good-first-issue` are sized for new contributors. We provide extra guidance on these—look for clear acceptance criteria and a suggested approach in the issue description.
117
-
118
-
---
119
-
120
-
## Quick Start for Contributors
121
-
122
-
1.[Fork the repository](https://github.com/ai-dynamo/dynamo/fork) on GitHub
123
-
2. Clone your fork and set up your development environment following the [Building from Source](README.md#building-from-source) guide
124
-
3. Set up pre-commit hooks: `pip install pre-commit && pre-commit install`
125
-
126
-
---
127
-
128
-
## Project Architecture
129
-
130
-
<!-- We were given the feedback that having information on architecture, languages used, etc. would be helpful for external contributors -->
131
-
132
-
Understanding Dynamo's architecture helps you find where to make changes. For the complete picture, see the [Architecture Documentation](docs/design-docs/architecture.md) and [Support Matrix](docs/reference/support-matrix.md).
|**SLA Profiler**| Benchmarking and SLA-driven configuration |`components/src/dynamo/profiler/`|
146
-
147
-
### Communication Planes
148
-
149
-
| Plane | Purpose | Documentation |
150
-
|-------|---------|---------------|
151
-
|**Discovery Plane**| Service registration and discovery across components |[docs/design-docs/distributed-runtime.md](docs/design-docs/distributed-runtime.md)|
152
-
|**Request Plane**| High-performance request routing between components |[docs/design-docs/request-plane.md](docs/design-docs/request-plane.md)|
- Your change is **<100 lines of code** AND addresses a simple, focused concern (typos, simple bug fixes, formatting)
182
-
-**OR** your PR addresses an **existing approved GitHub Issue** (link with "Fixes #123")
183
-
184
-
**Create a GitHub Issue first for:**
185
-
- Changes ≥100 lines of code
186
-
- New features, architecture changes, or multi-component changes
187
-
- Any change that requires design discussion
188
-
189
-
### Issue-First Workflow
190
-
191
-
For larger contributions, follow these steps:
192
-
193
-
1.**Create a GitHub Issue** – [Open a Contribution Request](https://github.com/ai-dynamo/dynamo/issues/new?template=contribution_request.yml) using the template.
194
-
195
-
2.**Describe the Problem** – Explain what you're solving, including context, error messages, or use cases.
196
-
197
-
3.**Propose a Solution** – Include:
198
-
-**Estimated PR size**: XS / S / M / L / XL / XXL
199
-
-**Files affected**: Approximate number and components
200
-
-**Type of change**: Bug fix, new feature, refactoring, or performance improvement
201
-
202
-
4.**Get Approval** – Wait for Dynamo maintainers to review and apply the `approved-for-pr` label.
203
-
204
-
5.**Submit a Pull Request** – [Open a PR](https://github.com/ai-dynamo/dynamo/compare) that references the issue using GitHub keywords (e.g., "Fixes #123").
205
-
206
-
6.**Address Code Rabbit Review** – Respond to automated Code Rabbit suggestions, including nitpicks.
207
-
208
-
7.**Trigger CI Tests** – For external contributors, a Dynamo maintainer must comment `/ok to test <commit-id>` to run the full CI suite, where `<commit-id>` is the short SHA of your latest commit. Fix any failing tests before requesting human review.
209
-
210
-
8.**Request Review** – Add the person who approved your issue as a reviewer. Check [CODEOWNERS](CODEOWNERS) for required approvers based on files modified.
211
-
212
-
> **Note on AI-Generated Code**: While we encourage using AI tools, you must fully understand every change in your PR. Inability to explain submitted code will result in rejection.
213
-
214
-
---
215
-
216
-
## Code Style & Quality
217
-
218
-
### Pre-commit Hooks
219
-
220
-
All PRs are checked against [pre-commit hooks](.pre-commit-config.yaml). Run locally:
Use [act](https://nektosact.com/) to run workflows locally:
246
-
247
-
```bash
248
-
act -j pre-merge-rust
249
-
```
250
-
251
-
Or use the [GitHub Local Actions](https://marketplace.visualstudio.com/items?itemName=SanjulaGanepola.github-local-actions) VS Code extension.
252
-
253
-
---
254
-
255
-
## DCO & Licensing
256
-
257
-
### Developer Certificate of Origin
258
-
259
-
Dynamo requires all contributions to be signed off with the [Developer Certificate of Origin (DCO)](https://developercertificate.org/). This certifies that you have the right to submit your contribution under the project's [Apache 2.0 license](LICENSE).
260
-
261
-
Each commit must include a sign-off line:
262
-
263
-
```text
264
-
Signed-off-by: Jane Smith <jane.smith@email.com>
265
-
```
266
-
267
-
Add this automatically with the `-s` flag:
268
-
269
-
```bash
270
-
git commit -s -m "fix: your descriptive message"
271
-
```
272
-
273
-
**Requirements:**
274
-
- Use your real name (no pseudonyms or anonymous contributions)
275
-
- Your `user.name` and `user.email` must be configured in git
276
-
277
-
⚠️ **DCO Check Failed?** See our [DCO Troubleshooting Guide](DCO.md) for step-by-step instructions to fix it.
278
-
279
-
### License
280
-
281
-
By contributing, you agree that your contributions will be licensed under the [Apache 2.0 License](LICENSE).
By contributing, you agree that your contributions will be licensed under the [Apache 2.0 License](https://github.com/ai-dynamo/dynamo/blob/main/LICENSE).
0 commit comments