Skip to content

Add 10 contributor onboarding playbooks#28737

Open
devang-ml wants to merge 8 commits into
mainfrom
dpatel/playbooks
Open

Add 10 contributor onboarding playbooks#28737
devang-ml wants to merge 8 commits into
mainfrom
dpatel/playbooks

Conversation

@devang-ml
Copy link
Copy Markdown

Summary

This PR adds a complete 10-playbook onboarding path for new ONNX Runtime contributors, moving from codebase orientation through advanced contribution workflows.

What is included

  • Adds and indexes ten contributor playbooks under docs/playbooks.
  • Establishes a suggested learning order in the plan document.
  • Provides practical, repo-grounded workflows for:
    • architecture orientation
    • local build/test/debug loops
    • first PR flow
    • session lifecycle tracing
    • kernel contribution
    • contrib operator contribution
    • graph optimization/fusion work
    • execution provider implementation
    • memory/allocator/data movement debugging
    • Python and C API binding extension

Files changed

  • docs/Contributor_Playbooks_Plan.md
  • docs/playbooks/01-repo-map-and-architecture-overview.md
  • docs/playbooks/02-build-test-and-debug-locally.md
  • docs/playbooks/03-first-pr-and-environment-setup.md
  • docs/playbooks/04-session-lifecycle-from-load-to-run.md
  • docs/playbooks/05-adding-or-changing-a-kernel.md
  • docs/playbooks/06-adding-a-contrib-operator.md
  • docs/playbooks/07-graph-optimizations-and-fusion-passes.md
  • docs/playbooks/08-execution-provider-implementation.md
  • docs/playbooks/09-memory-management-allocators-and-data-movement.md
  • docs/playbooks/10-python-and-c-api-binding-extension.md

Commit sequence

  • 615a91b Add initial contributor playbooks
  • 62dbdd2 Add session lifecycle playbook
  • dbd1764 Add kernel contribution playbook
  • d558e40 Add contrib operator playbook
  • 727a35c Add graph optimization playbook
  • c42c3ae Add execution provider playbook
  • a783e14 Add memory and data movement playbook
  • 7f72e42 Add Python and C API binding playbook

Validation

  • Documentation-only change.
  • Internal links and ordering were reviewed during authoring.

@devang-ml devang-ml marked this pull request as ready for review June 2, 2026 19:59
Windows example:

```powershell
cd build\Windows\RelWithDebInfo
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on Windows, there's another <build config> directory when using the default Visual Studio generator

Suggested change
cd build\Windows\RelWithDebInfo
cd build\Windows\RelWithDebInfo\RelWithDebInfo


## Practical Debug Workflow

1. Build in RelWithDebInfo while iterating.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debug has the best debugging experience. RelWithDebInfo is useful if performance is important.


## Prerequisites

- GitHub account and a fork of the ONNX Runtime repo
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a fork is not strictly necessary for MS folks

## Prerequisites

- GitHub account and a fork of the ONNX Runtime repo
- C++ toolchain for your platform
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also need CMake. it can be installed in the Python environment.

git checkout -b <short-feature-branch-name>
```

## Step 2: Create and activate a Python virtual environment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

possibly worth mentioning Python virtual environment usage in the build/test/debug playbook. typically, you don't want to run the build script in the system python environment as it could install Python dependencies.


## Outcome

By the end of this playbook, you will be able to add or modify a graph optimization pass, reason about where it runs in the optimizer pipeline, and validate correctness with targeted transformer tests.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reason about where it runs in the optimizer pipeline

should we describe the different optimization levels? or refer to the docs?
https://onnxruntime.ai/docs/performance/model-optimizations/graph-optimizations.html


By the end of this playbook, you will be able to start an execution provider implementation plan, choose between in-tree and plugin paths, and complete a minimal first-op bring-up with focused validation.

This playbook uses [docs/ExecutionProvider_Playbook.md](../ExecutionProvider_Playbook.md) as the primary deep-dive source and adapts it into the contributor learning sequence.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this file supposed to be added this PR?


## Outcome

By the end of this playbook, you will be able to start an execution provider implementation plan, choose between in-tree and plugin paths, and complete a minimal first-op bring-up with focused validation.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

choose between in-tree and plugin paths

the choice for a new EP should be an out-of-tree plugin EP.


## Outcome

By the end of this playbook, you will be able to start an execution provider implementation plan, choose between in-tree and plugin paths, and complete a minimal first-op bring-up with focused validation.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the scope of this playbook (adding a new EP) seems very large in comparison to the others.

@@ -0,0 +1,140 @@
# Playbook 10: Python and C API Binding Extension
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about other languages? I think in terms of priority, the C++ API updates associated with a new C API are higher than the Python binding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants