Pull Requests¶
Before you start¶
- Trivial fixes (typos, small bug fixes, one-liner corrections) — go ahead and open a PR directly. These are the most likely to be accepted quickly.
- Anything non-trivial (new features, API changes, refactors, large additions) — open an issue or GitHub Discussion first and get agreement from a maintainer before writing code. This is important. We have had to decline well-intentioned PRs that conflicted with ongoing work or didn't align with the project's direction, and that is a bad experience for everyone. A quick conversation upfront saves you from investing time on something that may not be merged.
- Search existing PRs and issues to avoid duplicate effort.
Forking and cloning¶
Most contributors will work from a fork. There are two ways to get started:
Option A: GitHub CLI (recommended)¶
The gh CLI handles fork creation, cloning, and remote setup in one step:
gh repo fork reactiveui/<repo-name> --clone
cd <repo-name>
This creates your fork on GitHub, clones it locally, and sets up origin (your fork) and upstream (reactiveui) remotes automatically.
Option B: Web UI + command line¶
- Click Fork on the repo's GitHub page
- Clone your fork:
git clone --recursive https://github.com/<your-username>/<repo-name>.git cd <repo-name> git remote add upstream https://github.com/reactiveui/<repo-name>.git
Option C: GitHub.dev or Codespaces¶
For documentation or small code changes, press . on any repo page to open it in github.dev, or use GitHub Codespaces for a full cloud dev environment with build support.
Info
Use a full recursive clone. Shallow clones can fail because build and versioning depend on git history. If you already have a shallow clone, run git fetch --unshallow.
Keeping your fork up to date¶
git fetch upstream
git rebase upstream/main
Or use the Sync fork button on your fork's GitHub page — see GitHub's syncing docs.
Making changes¶
-
Create a branch from
main:git checkout -b my-fix-branch main -
Make your changes:
- Follow the code style guide
- Include tests for new behaviour or bug fixes
- Ensure the build and all tests pass locally (
dotnet build && dotnet testfromsrc/)
-
Commit using conventional commits:
fix: correct nullable handling in WhenAnyValue -
Push to your fork and open a PR:
git push origin my-fix-branchThen open a PR against
reactiveui/<repo-name>:main— GitHub will prompt you when you visit your fork.
What happens next¶
- CI runs automatically — build, tests, and code analysis must all pass.
- A maintainer will review your PR. We may suggest changes — push additional commits to your branch.
- Once approved, a maintainer will squash-merge your PR.
API surface changes¶
If your change modifies the public API, approval test files will need updating. See building & testing for details. Include the updated *.approved.txt files in your PR.