One of the easiest ways to contribute is to participate in discussions on GitHub issues. You can also contribute by submitting pull requests with code changes.
Start a discussion on the repository issue tracker or join us on slack.
Before reporting a new issue, try to find an existing issue if one already exists. If it already exists, upvote (👍) it. Also consider adding a comment with your unique scenarios and requirements related to that issue.
If you can't find one, you can file a new issue by choosing the appropriate template here.
We are always happy to see pull requests from community members both for bug fixes as well as new features.
We have marked issues which are good candidates for first-time contributors, in case you are not already set on working on a specific issue.
- "Good first issue" issues - we think these are a great for newcomers.
- "Help wanted" issues - these issues are up for grabs.
Before you spend time writing code, make sure of the following things:
- You have commented on the related issue to let others know you are working on it
- You have laid out your solution on a high level and received approval from the maintainers, if you are tackling a bigger change
After this you can fork our repository to implement your changes. If you are unfamiliar with forking, be sure to read this guide first.
To get started with the codebase, see How to launch and build the solution.
Before submitting a pull request containing your changes, make sure that it checks the following requirements:
- You add test coverage following existing patterns within the codebase
- Your code matches the existing syntax conventions within the codebase
- You document any changes to the public API surface (Learn more)
- Your pull request is small, focused, and avoids making unrelated changes
If your pull request contains any of the below, it's less likely to be merged.
- Changes that break backward compatibility
- Changes that are only wanted by one person/company
- Changes that add entirely new feature areas without prior agreement
- Changes that are mostly about refactoring existing code or code style
Follow this guide to submit your pull request. Be sure to mark it as draft if it is in an early stage.
Core contributors will review your pull request and provide feedback.
The easiest way to work on the platform is the devcontainer. It has the .NET SDKs, Node.js, and all other tools pre-installed, and runs init.sh when it is created.
To work outside the devcontainer, you will need the .NET SDK version from global.json and Node.js. After cloning the repository, run init.sh (or init.ps1 on Windows) from the repository root to restore .NET packages and install the website's npm dependencies.
src/All.slnx is the root solution. More focused per-area solution files exist if you want to narrow in on a particular part of the platform. They're great when working with VS Code.
The documentation is located in the website directory and can be started with npm run dev (served on port 3002).
We use markdownlint to check markdown formatting and CSpell for spelling. We have GitHub actions to check these for PRs, but if you'd like to check locally, you can:
- Install CSpell:
npm install --global cspell - Install the markdownlint CLI:
npm install --global markdownlint-cli2. - For spellcheck, run
cspell --config ./cspell.json "website/src/**/*.md" --no-progress - For markdown linting, run
markdownlint-cli2 "*.md" "website/src/**/*.md"