We welcome and appreciate contributions from the community. There are many ways to become involved with DSC: including filing issues, joining in design conversations, and writing and improving documentation. Please read the rest of this document to ensure a smooth contribution process.
- Make sure you have a GitHub account.
- Learning GitHub:
- GitHub Help: [Good Resources for Learning Git and GitHub][https://help.github.com/articles/good-resources-for-learning-git-and-github/]
- GitHub Flow Guide: step-by-step instructions of GitHub Flow
- Check if the issue you are going to file already exists in our GitHub issues.
- If you can't find your issue already, open a new issue, making sure to follow the directions as best you can.
Whether you’re fixing bugs, developing new functionality, or improving tests, contributions are managed through a GitHub-centered workflow. After setting up your GitHub account, follow these instructions:
- Fork the repo you plan to work on.
In GitHub, click Fork on the project page to create your copy under your account.
- Clone your fork locally
git clone https://github.com/<your-github-username>/DSC.git
cd DSC- Add the upstream remote and sync main
git remote add upstream https://github.com/PowerShell/DSC.git
git fetch upstream
git checkout main
git pull --ff-only upstream main- Create a new branch to hold your work.
git checkout -b new-branch-name- Work on your new code. Write tests
.\build.ps1 -UseCratesIO -Test- Commit your changes with a clear message
git add -A
git commit -m "<concise summary of the change>"- Push your branch and open a Pull Request
git push -u origin feature/<short-description>In GitHub, open a PR from your branch to the upstream main branch. Link related issues and include a brief summary and rationale.
- Keep your branch up to date
git fetch upstream
git rebase upstream/main
# resolve conflicts if any, then continue the rebase
git push --force-with-leaseNote
-UseCratesIO ensures the build uses crates.io rather than internal replaced sources.
You can contribute to documentation either in the docs folder of this repository
or in the PowerShell-Docs-DSC repository.
Note
Documentation contributed to the docs folder in this repository is periodically synced to the PowerShell-Docs-DSC repository.
- When writing Markdown documentation, use semantic linefeeds. In most cases, it means "one clause/idea per line".
- Otherwise, these issues should be treated like any other issue in this repository.
Documentation is spellchecked. We use the textlint command-line tool, which can be run in interactive mode to correct typos.
To run the spellchecker, follow these steps:
- install Node.js (v10 or up)
- install textlint by
npm install -g textlint textlint-rule-terminology - run
textlint --rule terminology <changedFileName>, adding--fixwill accept all the recommendations.
If you need to add a term or disable checking part of a file see the configuration sections of the rule.
Documentation is link-checked. We make use of the
markdown-link-check command-line tool,
which can be run to see if any links are dead.
To run the link-checker, follow these steps:
- install Node.js (v10 or up)
- install
markdown-link-checkbynpm install -g markdown-link-check@3.8.5 - run
find . \*.md -exec markdown-link-check {} \;
Reports of abuse will be reviewed by the PS-Committee and if it has been determined that violations of the Code of Conduct has occurred, then a temporary ban may be imposed. The duration of the temporary ban will depend on the impact and/or severity of the infraction. This can vary from 1 day, a few days, a week, and up to 30 days. Repeat offenses may result in a permanent ban from the PowerShell org.