1- Contributing to PowerShell
2- ========================
1+ # Contributing to PowerShell
32
43We welcome and appreciate contributions from the community.
54There are many ways to become involved with PowerShell:
@@ -9,25 +8,21 @@ writing and improving documentation,
98and contributing to the code.
109Please read the rest of this document to ensure a smooth contribution process.
1110
12- New to Git?
13- -----------
11+ ## Intro to Git and GitHub
1412
1513* Make sure you have a [ GitHub account] ( https://github.com/signup/free ) .
1614* Learning Git:
17- * GitHub Help: [ Good Resources for Learning Git and GitHub] [ good-git-resources ] .
18- * [ Git Basics] ( ../docs/git/basics.md ) :
19- install and getting started.
15+ * GitHub Help: [ Good Resources for Learning Git and GitHub] [ good-git-resources ]
16+ * [ Git Basics] ( ../docs/git/basics.md ) : install and getting started
2017* [ GitHub Flow Guide] ( https://guides.github.com/introduction/flow/ ) :
21- step-by-step instructions of GitHub flow.
18+ step-by-step instructions of GitHub Flow
2219
23- Quick Start Checklist
24- ---------------------
20+ ## Quick Start Checklist
2521
2622* Review the [ Contribution License Agreement] [ CLA ] requirement.
2723* Get familiar with the [ PowerShell repository] ( ../docs/git ) .
2824
29- Contributing to Issues
30- ----------------------
25+ ## Contributing to Issues
3126
3227* Review [ Issue Management] [ issue-management ] .
3328* Check if the issue you are going to file already exists in our [ GitHub issues] [ open-issue ] .
@@ -37,8 +32,7 @@ Contributing to Issues
3732* If the issue is marked as [ ` Up-for-Grabs ` ] [ up-for-grabs ] ,
3833 the PowerShell Maintainers are looking for help with the issue.
3934
40- Contributing to Documentation
41- -----------------------------
35+ ## Contributing to Documentation
4236
4337### Contributing to documentation related to PowerShell
4438
@@ -58,25 +52,29 @@ which can be run in interactive mode to correct typos or add words to the ignore
5852(` .spelling ` at the repository root).
5953
6054To run the spellchecker, follow the steps as follows:
61- * install [ Node.js] ( https://nodejs.org/en/ ) (v6.4.0 or up)
62- * install [ markdown-spellcheck] ( https://github.com/lukeapage/node-markdown-spellcheck ) by
63- ` npm install -g markdown-spellcheck ` (v0.11.0 or up)
64- * run ` mdspell "**/*.md" --ignore-numbers --ignore-acronyms `
65- * if the ` .spelling ` file is updated, commit and push it
6655
67- Contributing to Code
68- --------------------
56+ * install [ Node.js] ( https://nodejs.org/en/ ) (v6.4.0 or up)
57+ * install [ markdown-spellcheck] ( https://github.com/lukeapage/node-markdown-spellcheck ) by
58+ ` npm install -g markdown-spellcheck ` (v0.11.0 or up)
59+ * run ` mdspell "**/*.md" --ignore-numbers --ignore-acronyms `
60+ * if the ` .spelling ` file is updated, commit and push it
61+
62+ ## Contributing to Code
6963
7064### Building and testing
65+
7166#### Building PowerShell
67+
7268Please see [ Building PowerShell] ( ../README.md#building-the-repository ) .
69+
7370#### Testing PowerShell
71+
7472Please see PowerShell [ Testing Guidelines - Running Tests Outside of CI] [ running-tests-outside-of-ci ] on how to test you build locally.
7573
7674### Finding or creating an issue
7775
78761 . Follow the instructions in [ Contributing to Issues] [ contribute-issues ] to find or open an issue.
79- 2 . Mention in the issue that you are working on the issue and ask ` @powershell/powershell ` for an assignment.
77+ 1 . Mention in the issue that you are working on the issue and ask ` @powershell/powershell ` for an assignment.
8078
8179### Forks and Pull Requests
8280
@@ -87,11 +85,11 @@ To contribute these changes back into the original repository,
8785a user simply creates a pull request in order to "request" that the changes be taken "upstream".
8886
8987Additional references:
88+
9089* GitHub's guide on [ forking] ( https://guides.github.com/activities/forking/ )
9190* GitHub's guide on [ Contributing to Open Source] ( https://guides.github.com/activities/contributing-to-open-source/#pull-request )
9291* GitHub's guide on [ Understanding the GitHub Flow] ( https://guides.github.com/introduction/flow/ )
9392
94-
9593### Lifecycle of a pull request
9694
9795#### Before submitting
@@ -103,68 +101,66 @@ Additional references:
103101 Each commit should be a ** single complete** change.
104102 This discipline is important when reviewing the changes as well as when using ` git bisect ` and ` git revert ` .
105103
106-
107104#### Pull request submission
108105
109106** Always create a pull request to the ` master ` branch of this repository** .
110107
111108![ Github-PR-dev.png] ( Images/Github-PR-dev.png )
112109
113110* If you're contributing in a way that changes the user or developer experience, you are expected to document those changes.
114- See [ Contributing to documentation related to PowerShell] ( #contributing-to-documentation-related-to-powershell ) .
115-
111+ See [ Contributing to documentation related to PowerShell] ( #contributing-to-documentation-related-to-powershell ) .
116112* Add a meaningful title of the PR describing what change you want to check in.
117113 Don't simply put: "Fixes issue #5 ".
118114 A better example is: "Add Ensure parameter to New-Item cmdlet", with "Fixes #5 " in the PR's body.
119-
120115* When you create a pull request,
121116 including a summary of what's included in your changes and
122117 if the changes are related to an existing GitHub issue,
123118 please reference the issue in pull request description (e.g. ``` Closes #11 ``` ).
124119 See [ this] [ closing-via-message ] for more details.
125-
126120* If the change warrants a note in the [ changelog] ( ../CHANGELOG.MD )
127121 either update the changelog in your pull request or
128122 add a comment in the PR description saying that the change may warrant a note in the changelog.
129123 New changes always go into the ** Unreleased** section.
130124 Keeping the changelog up-to-date simplifies the release process for Maintainers.
131- An example:
132- ```
133- Unreleased
134- ----------
135-
136- * `Update-Item` now supports `-FriendlyName`.
137- ```
138- Please use the present tense and imperative mood when describing your changes:
139-
140- * Instead of "Adding support for Windows Server 2012 R2", write "Add support for Windows Server 2012 R2".
141-
142- * Instead of "Fixed for server connection issue", write "Fix server connection issue".
143-
144- This form is akin to giving commands to the code base,
145- and is recommended by the Git SCM developers.
146- It is also used in the [Git commit messages](#common-engineering-practices).
147-
148- Also, if change is related to a specific resource, please prefix the description with the resource name:
149-
150- * Instead of "New,parameter 'ConnectionCredential' in New-SqlConnection",
151- write "New-SqlConnection: added parameter 'ConnectionCredential'".
125+ An example (with an associated PR #):
126+
127+ ``` markdown
128+ Unreleased
129+ ----------
130+
131+ * ` Update-Item ` now supports ` -FriendlyName ` (#1234 ).
132+ ```
133+
134+ * Please use the present tense and imperative mood when describing your changes:
135+ * Instead of "Adding support for Windows Server 2012 R2", write "Add support for Windows Server 2012 R2".
136+ * Instead of "Fixed for server connection issue", write "Fix server connection issue".
137+
138+ This form is akin to giving commands to the code base
139+ and is recommended by the Git SCM developers.
140+ It is also used in the [ Git commit messages] ( #common-engineering-practices ) .
141+ * If the change is related to a specific resource, please prefix the description with the resource name:
142+ * Instead of "New parameter 'ConnectionCredential' in New-SqlConnection",
143+ write "New-SqlConnection: add parameter 'ConnectionCredential'".
144+ * If your change warrants an update to user-facing documentation,
145+ a Maintainer will add the ` Documentation Needed ` label to your PR and add an issue to the [ PowerShell-Docs repository] [ PowerShell-Docs ] ,
146+ so that we make sure to update official documentation to reflect your contribution.
147+ As an example, this requirement includes any changes to cmdlets (including cmdlet parameters) and features which have associated about_ * topics.
148+ While not required, we appreciate any contributors who add this label and create the issue themselves.
149+ Even better, all contributors are free to contribute the documentation themselves.
150+ (See [ Contributing to documentation related to PowerShell] ( #contributing-to-documentation-related-to-powershell ) for more info.)
152151
153152#### Pull Request - Automatic Checks
154153
155154* If this is your first contribution to PowerShell,
156155 you may be asked to sign a [ Contribution Licensing Agreement] [ CLA ] (CLA)
157156 before your changes will be accepted.
158-
159157* Make sure you follow the [ Common Engineering Practices] ( #common-engineering-practices )
160158 and [ testing guidelines] ( ../docs/testing-guidelines/testing-guidelines.md ) .
161-
162159* After submitting your pull request,
163160 our [ CI system (Travis CI and AppVeyor)] [ ci-system ]
164161 will run a suite of tests and automatically update the status of the pull request.
165-
166162* Our CI contains automated spellchecking. If there is any false-positive,
167- [run the spellchecker command line tool in interactive mode](#spellchecking-documentation)
163+ [ run the spellchecker command line tool in interactive mode] ( #spellchecking-documentation )
168164 to add words to the ` .spelling ` file.
169165
170166#### Pull Request - Code Review
@@ -186,40 +182,33 @@ See [Contributing to documentation related to PowerShell](#contributing-to-docum
186182 * For a PR to be merged, it must be approved by at least one PowerShell Team member or Collaborator,
187183 so additional Reviewer(s) may be added by the Assignee as appropriate.
188184 The Assignee may also be re-assigned by Maintainers.
189-
190185* A Reviewer can postpone the code review if CI builds fail,
191186 but also can start the code review early regardless of the CI builds.
192-
193187* The Author ** is responsible** for driving the PR to the Approved state.
194188 The Author addresses review comments, and pings Reviewer(s) to start the next iteration.
195189 If the review is making no progress (or very slow),
196190 the Author can always ask the Assignee to help coordinate the process and keep it moving.
197-
198191* Additional feedback is always welcome!
199192 Even if you are not designated as a Reviewer,
200193 feel free to review others' pull requests anyway.
201194 Leave your comments even if everything looks good;
202195 a simple "Looks good to me" or "LGTM" will suffice.
203196 This way we know someone has already taken a look at it!
204-
205197* When updating your pull request, please ** create new commits**
206198 and ** don't rewrite the commits history** . This way it's very easy for
207199 the reviewers to see diff between iterations.
208200 If you rewrite the history in the pull request, review could be much slower.
209201 Once the review is done, you can rewrite the history to make it prettier,
210202 if you like.
211203 Otherwise it's likely would be squashed on merge to master.
212-
213204* Once the code review is done,
214205 all merge conflicts are resolved,
215206 and the CI system build status is passing,
216207 the PR Assignee will merge your changes.
217-
218- * For more information on the the PowerShell Maintainers' process,
208+ * For more information on the PowerShell Maintainers' process,
219209 see the [ documentation] ( ../docs/maintainers ) .
220210
221- Making Breaking Changes
222- -----------------------
211+ ## Making Breaking Changes
223212
224213When you make code changes,
225214please pay attention to these that can affect the [ Public Contract] ( ../docs/dev-process/breaking-change-contract.md ) .
@@ -228,14 +217,12 @@ Before making changes to the code,
228217first review the [ breaking changes contract] ( ../docs/dev-process/breaking-change-contract.md )
229218and follow the guidelines to keep PowerShell backward compatible.
230219
231- Making Design Changes
232- ---------------------
220+ ## Making Design Changes
233221
234222To add new features such as cmdlets or making design changes,
235223please follow the [ PowerShell Request for Comments (RFC)] ( https://github.com/PowerShell/PowerShell-RFC ) process.
236224
237- Common Engineering Practices
238- ----------------------------
225+ ## Common Engineering Practices
239226
240227Other than the guidelines for ([ coding] ( ../docs/dev-process/coding-guidelines.md ) ,
241228the [ RFC process] ( https://github.com/PowerShell/PowerShell-RFC ) for design,
@@ -277,23 +264,17 @@ is also appropriate, as is using Markdown syntax.
277264 Git SCM [ submitting patches] ( https://git.kernel.org/cgit/git/git.git/tree/Documentation/SubmittingPatches ) ,
278265 Brandon Rhodes' [ semantic linefeeds] [ ] ,
279266 and John Gruber's [ Markdown syntax] ( https://daringfireball.net/projects/markdown/syntax ) .
280-
281267* Don't commit code that you didn't write.
282268 If you find code that you think is a good fit to add to PowerShell,
283269 file an issue and start a discussion before proceeding.
284-
285270* Create and/or update tests when making code changes.
286-
287271* Run tests and ensure they are passing before pull request.
288-
289272* All pull requests ** must** pass CI systems before they can be approved.
290-
291273* Avoid making big pull requests.
292274 Before you invest a large amount of time,
293275 file an issue and start a discussion with the community.
294276
295- Contributor License Agreement (CLA)
296- -----------------------------------
277+ ## Contributor License Agreement (CLA)
297278
298279To speed up the acceptance of any contribution to any PowerShell repositories,
299280you could [ sign a Microsoft Contribution Licensing Agreement (CLA)] ( https://cla.microsoft.com/ ) ahead of time.
@@ -321,3 +302,4 @@ Once you sign a CLA, all your existing and future pull requests will be labeled
321302[ open-issue ] : https://github.com/PowerShell/PowerShell/issues
322303[ up-for-grabs ] : https://github.com/powershell/powershell/issues?q=is%3Aopen+is%3Aissue+label%3AUp-for-Grabs
323304[ semantic linefeeds ] : http://rhodesmill.org/brandon/2012/one-sentence-per-line/
305+ [ PowerShell-Docs ] : https://github.com/powershell/powershell-docs/
0 commit comments