From 933f207fd8d413e6ba7fef283a0bf5bcfd923e9f Mon Sep 17 00:00:00 2001 From: Mary Anthony Date: Mon, 9 Mar 2015 11:31:32 -0700 Subject: [PATCH] Updating to account for new contributors guide. Primary links will go to the contributor's guide Adding in Fred's comments Tweak list alignment Signed-off-by: Mary Anthony --- CONTRIBUTING.md | 320 +++++++++++---------- README.md | 6 +- docs/sources/static_files/contributors.png | Bin 0 -> 15608 bytes 3 files changed, 177 insertions(+), 149 deletions(-) create mode 100644 docs/sources/static_files/contributors.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dfa6dee076..86358b8c06 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,70 +1,61 @@ # Contributing to Docker -Want to hack on Docker? Awesome! Here are instructions to get you -started. They are probably not perfect; please let us know if anything -feels wrong or incomplete. +Want to hack on Docker? Awesome! We have a contributor's guide that explains +[setting up a Docker development environment and the contribution +process](https://docs.docker.com/project/who-written-for/). + +[![Foo](docs/sources/static_files/contributors.png)](https://docs.docker.com/ +project/who-written-for/) + +This page contains information about reporting issues as well as some tips and +guidelines useful to experienced open source contributors. Finally, make sure +you read our [community guidelines](#docker-community-guidelines) before you +start participating. ## Topics * [Reporting Security Issues](#reporting-security-issues) * [Design and Cleanup Proposals](#design-and-cleanup-proposals) -* [Reporting Issues](#reporting-issues) -* [Build Environment](#build-environment) -* [Contribution Guidelines](#contribution-guidelines) +* [Reporting Issues](#reporting-other-issues) +* [Quick Contribution Tips and Guidelines](#quick-contribution-tips-and-guidelines) * [Community Guidelines](#docker-community-guidelines) -## Reporting Security Issues +## Reporting security issues -The Docker maintainers take security very seriously. If you discover a security issue, -please bring it to their attention right away! +The Docker maintainers take security seriously. If you discover a security +issue, please bring it to their attention right away! -Please send your report privately to [security@docker.com](mailto:security@docker.com), -please **DO NOT** file a public issue. +Please **DO NOT** file a public issue, instead send your report privately to +[security@docker.com](mailto:security@docker.com), -Security reports are greatly appreciated and we will publicly thank you for it. We also -like to send gifts - if you're into Docker shwag make sure to let us know :) -We currently do not offer a paid security bounty program, but are not ruling it out in -the future. +Security reports are greatly appreciated and we will publicly thank you for it. +We also like to send gifts—if you're into Docker schwag make sure to let +us know We currently do not offer a paid security bounty program, but are not +ruling it out in the future. -## Design and Cleanup Proposals -When considering a design proposal, we are looking for: - -* A description of the problem this design proposal solves -* A pull request, not an issue, that modifies the documentation describing - the feature you are proposing, adding new documentation if necessary. - * Please prefix your issue with `Proposal:` in the title -* Please review [the existing Proposals](https://github.com/docker/docker/pulls?q=is%3Aopen+is%3Apr+label%3AProposal) - before reporting a new one. You can always pair with someone if you both - have the same idea. - -When considering a cleanup task, we are looking for: - -* A description of the refactors made - * Please note any logic changes if necessary -* A pull request with the code - * Please prefix your PR's title with `Cleanup:` so we can quickly address it. - * Your pull request must remain up to date with master, so rebase as necessary. - -## Reporting Issues +## Reporting other issues A great way to contribute to the project is to send a detailed report when you encounter an issue. We always appreciate a well-written, thorough bug report, and will thank you for it! -When reporting [issues](https://github.com/docker/docker/issues) on -GitHub please include your host OS (Ubuntu 12.04, Fedora 19, etc). -Please include: +Check that [our issue database](https://github.com/docker/docker/issues) +doesn't already include that problem or suggestion before submitting an issue. +If you find a match, add a quick "+1" or "I have this problem too." Doing this +helps prioritize the most common problems and requests. + +When reporting issues, please include your host OS (Ubuntu 12.04, Fedora 19, +etc). Please include: * The output of `uname -a`. * The output of `docker version`. * The output of `docker -D info`. -Please also include the steps required to reproduce the problem if -possible and applicable. This information will help us review and fix -your issue faster. +Please also include the steps required to reproduce the problem if possible and +applicable. This information will help us review and fix your issue faster. -### Template +**Issue Report Template**: ``` Description of problem: @@ -103,123 +94,159 @@ Additional info: ``` -## Build Environment -For instructions on setting up your development environment, please -see our dedicated [dev environment setup -docs](http://docs.docker.com/contributing/devenvironment/). +##Quick contribution tips and guidelines -## Contribution guidelines +This section gives the experienced contributor some tips and guidelines. -### Pull requests are always welcome +###Pull requests are always welcome -We are always thrilled to receive pull requests, and do our best to -process them as quickly as possible. Not sure if that typo is worth a pull -request? Do it! We will appreciate it. +Not sure if that typo is worth a pull request? Found a bug and know how to fix +it? Do it! We will appreciate it. Any significant improvement should be +documented as [a GitHub issue](https://github.com/docker/docker/issues) before +anybody starts working on it. -If your pull request is not accepted on the first try, don't be -discouraged! If there's a problem with the implementation, hopefully you -received feedback on what to improve. +We are always thrilled to receive pull requests. We do our best to process them +quickly. If your pull request is not accepted on the first try, +don't get discouraged! Our contributor's guide explains [the review process we +use for simple changes](https://docs.docker.com/project/make-a-contribution/). -We're trying very hard to keep Docker lean and focused. We don't want it -to do everything for everybody. This means that we might decide against -incorporating a new feature. However, there might be a way to implement -that feature *on top of* Docker. +### Design and cleanup proposals -### Discuss your design on the mailing list +You can propose new designs for existing Docker features. You can also design +entirely new features. We really appreciate contributors who want to refactor or +otherwise cleanup our project. For information on making these types of +contributions, see [the advanced contribution +section](https://docs.docker.com/project/advanced-contributing/) in the +contributors guide. -We recommend discussing your plans [on the mailing -list](https://groups.google.com/forum/?fromgroups#!forum/docker-dev) -before starting to code - especially for more ambitious contributions. -This gives other contributors a chance to point you in the right -direction, give feedback on your design, and maybe point out if someone -else is working on the same thing. +We try hard to keep Docker lean and focused. Docker can't do everything for +everybody. This means that we might decide against incorporating a new feature. +However, there might be a way to implement that feature *on top of* Docker. -### Create issues... +### Talking to other Docker users and contributors -Any significant improvement should be documented as [a GitHub -issue](https://github.com/docker/docker/issues) before anybody -starts working on it. + + + + + + + + + + + + + + + + + + +
Internet Relay Chat (IRC) + +

+ IRC a direct line to our most knowledgeable Docker users; we have + both the #docker and #docker-dev group on + irc.freenode.net. + IRC is a rich chat protocol but it can overwhelm new users. You can search + our chat archives. +

+ Read our IRC quickstart guide for an easy way to get started. +
Google Groups + There are two groups. + Docker-user + is for people using Docker containers. + The docker-dev + group is for contributors and other people contributing to the Docker + project. +
Twitter + You can follow Docker's Twitter feed + to get updates on our products. You can also tweet us questions or just + share blogs or stories. +
Stack Overflow + Stack Overflow has over 7000K Docker questions listed. We regularly + monitor Docker questions + and so do many other knowledgeable Docker users. +
-### ...but check for existing issues first! - -Please take a moment to check that an issue doesn't already exist -documenting your bug report or improvement proposal. If it does, it -never hurts to add a quick "+1" or "I have this problem too". This will -help prioritize the most common problems and requests. ### Conventions Fork the repository and make changes on your fork in a feature branch: -- If it's a bug fix branch, name it XXXX-something where XXXX is the number of the - issue. -- If it's a feature branch, create an enhancement issue to announce your - intentions, and name it XXXX-something where XXXX is the number of the issue. +- If it's a bug fix branch, name it XXXX-something where XXXX is the number of + the issue. +- If it's a feature branch, create an enhancement issue to announce + your intentions, and name it XXXX-something where XXXX is the number of the + issue. -Submit unit tests for your changes. Go has a great test framework built in; use -it! Take a look at existing tests for inspiration. Run the full test suite on -your branch before submitting a pull request. +Submit unit tests for your changes. Go has a great test framework built in; use +it! Take a look at existing tests for inspiration. [Run the full test +suite](https://docs.docker.com/project/test-and-docs/) on your branch before +submitting a pull request. -Update the documentation when creating or modifying features. Test -your documentation changes for clarity, concision, and correctness, as -well as a clean documentation build. See `docs/README.md` for more -information on building the docs and how they get released. +Update the documentation when creating or modifying features. Test your +documentation changes for clarity, concision, and correctness, as well as a +clean documentation build. See our contributors guide for [our style +guide](https://docs.docker.com/project/doc-style) and instructions on [building +the +documentation](https://docs.docker.com/project/test-and-docs/#build-and-test-the +- documentation). Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run `gofmt -s -w file.go` on each changed file before committing your changes. Most editors have plug-ins that do this automatically. -Pull requests descriptions should be as clear as possible and include a -reference to all the issues that they address. +Pull request descriptions should be as clear as possible and include a reference +to all the issues that they address. -Commit messages must start with a capitalized and short summary (max. 50 -chars) written in the imperative, followed by an optional, more detailed -explanatory text which is separated from the summary by an empty line. +Commit messages must start with a capitalized and short summary (max. 50 chars) +written in the imperative, followed by an optional, more detailed explanatory +text which is separated from the summary by an empty line. Code review comments may be added to your pull request. Discuss, then make the -suggested modifications and push additional commits to your feature branch. Be -sure to post a comment after pushing. The new commits will show up in the pull -request automatically, but the reviewers will not be notified unless you -comment. +suggested modifications and push additional commits to your feature branch. Post +a comment after pushing. New commits show up in the pull request automatically, +but the reviewers are notified only when you comment. -Pull requests must be cleanly rebased ontop of master without multiple branches +Pull requests must be cleanly rebased on top of master without multiple branches mixed into the PR. **Git tip**: If your PR no longer merges cleanly, use `rebase master` in your feature branch to update your pull request rather than `merge master`. -Before the pull request is merged, make sure that you squash your commits into -logical units of work using `git rebase -i` and `git push -f`. After every -commit the test suite should be passing. Include documentation changes in the -same commit so that a revert would remove all traces of the feature or fix. +Before you make a pull request, squash your commits into logical units of work +using `git rebase -i` and `git push -f`. After every commit, [make sure the test +suite passes]((https://docs.docker.com/project/test-and-docs/)). Include +documentation changes in the same pull request so that a revert would remove all +traces of the feature or fix. -Commits that fix or close an issue should include a reference like -`Closes #XXXX` or `Fixes #XXXX`, which will automatically close the -issue when merged. +Include an issue reference like `Closes #XXXX` or `Fixes #XXXX` in commits that +close an issue. Including references automatically closes the issue on a merge. -Please do not add yourself to the `AUTHORS` file, as it is regenerated -regularly from the Git history. +Please do not add yourself to the `AUTHORS` file, as it is regenerated regularly +from the Git history. ### Merge approval -Docker maintainers use LGTM (Looks Good To Me) in comments on the code review -to indicate acceptance. +Docker maintainers use LGTM (Looks Good To Me) in comments on the code review to +indicate acceptance. A change requires LGTMs from an absolute majority of the maintainers of each component affected. For example, if a change affects `docs/` and `registry/`, it needs an absolute majority from the maintainers of `docs/` AND, separately, an absolute majority of the maintainers of `registry/`. -For more details see [MAINTAINERS](MAINTAINERS) +For more details, see the [MAINTAINERS](MAINTAINERS) page. ### Sign your work -The sign-off is a simple line at the end of the explanation for the -patch, which certifies that you wrote it or otherwise have the right to -pass it on as an open-source patch. The rules are pretty simple: if you -can certify the below (from -[developercertificate.org](http://developercertificate.org/)): +The sign-off is a simple line at the end of the explanation for the patch. Your +signature certifies that you wrote the patch or otherwise have the right to pass +it on as an open-source patch. The rules are pretty simple: if you can certify +the below (from [developercertificate.org](http://developercertificate.org/)): ``` Developer Certificate of Origin @@ -263,7 +290,7 @@ Then you just add a line to every git commit message: Signed-off-by: Joe Smith -Using your real name (sorry, no pseudonyms or anonymous contributions.) +Use your real name (sorry, no pseudonyms or anonymous contributions.) If you set your `user.name` and `user.email` git configs, you can sign your commit automatically with `git commit -s`. @@ -280,45 +307,45 @@ format right away, but please do adjust your processes for future contributions. * Step 4: Propose yourself at a scheduled docker meeting in #docker-dev Don't forget: being a maintainer is a time investment. Make sure you -will have time to make yourself available. You don't have to be a +will have time to make yourself available. You don't have to be a maintainer to make a difference on the project! -### IRC Meetings +### IRC meetings -There are two monthly meetings taking place on #docker-dev IRC to accomodate all timezones. -Anybody can ask for a topic to be discussed prior to the meeting. +There are two monthly meetings taking place on #docker-dev IRC to accomodate all +timezones. Anybody can propose a topic for discussion prior to the meeting. If you feel the conversation is going off-topic, feel free to point it out. -For the exact dates and times, have a look at [the irc-minutes repo](https://github.com/docker/irc-minutes). -They also contain all the notes from previous meetings. +For the exact dates and times, have a look at [the irc-minutes +repo](https://github.com/docker/irc-minutes). The minutes also contain all the +notes from previous meetings. -## Docker Community Guidelines +## Docker community guidelines -We want to keep the Docker community awesome, growing and collaborative. We -need your help to keep it that way. To help with this we've come up with some -general guidelines for the community as a whole: +We want to keep the Docker community awesome, growing and collaborative. We need +your help to keep it that way. To help with this we've come up with some general +guidelines for the community as a whole: -* Be nice: Be courteous, respectful and polite to fellow community members: no - regional, racial, gender, or other abuse will be tolerated. We like nice people - way better than mean ones! +* Be nice: Be courteous, respectful and polite to fellow community members: + no regional, racial, gender, or other abuse will be tolerated. We like + nice people way better than mean ones! -* Encourage diversity and participation: Make everyone in our community - feel welcome, regardless of their background and the extent of their +* Encourage diversity and participation: Make everyone in our community feel + welcome, regardless of their background and the extent of their contributions, and do everything possible to encourage participation in our community. * Keep it legal: Basically, don't get us in trouble. Share only content that - you own, do not share private or sensitive information, and don't break the - law. + you own, do not share private or sensitive information, and don't break + the law. -* Stay on topic: Make sure that you are posting to the correct channel - and avoid off-topic discussions. Remember when you update an issue or - respond to an email you are potentially sending to a large number of - people. Please consider this before you update. Also remember that - nobody likes spam. +* Stay on topic: Make sure that you are posting to the correct channel and + avoid off-topic discussions. Remember when you update an issue or respond + to an email you are potentially sending to a large number of people. Please + consider this before you update. Also remember that nobody likes spam. -### Guideline Violations — 3 Strikes Method +### Guideline violations — 3 strikes method The point of this section is not to find opportunities to punish people, but we do need a fair way to deal with people who are making our community suck. @@ -337,20 +364,19 @@ do need a fair way to deal with people who are making our community suck. * Obvious spammers are banned on first occurrence. If we don't do this, we'll have spam all over the place. -* Violations are forgiven after 6 months of good behavior, and we won't - hold a grudge. +* Violations are forgiven after 6 months of good behavior, and we won't hold a + grudge. -* People who commit minor infractions will get some education, - rather than hammering them in the 3 strikes process. +* People who commit minor infractions will get some education, rather than + hammering them in the 3 strikes process. -* The rules apply equally to everyone in the community, no matter how - much you've contributed. +* The rules apply equally to everyone in the community, no matter how much + you've contributed. * Extreme violations of a threatening, abusive, destructive or illegal nature - will be addressed immediately and are not subject to 3 strikes or - forgiveness. + will be addressed immediately and are not subject to 3 strikes or forgiveness. * Contact abuse@docker.com to report abuse or appeal violations. In the case of - appeals, we know that mistakes happen, and we'll work with you to come up with - a fair solution if there has been a misunderstanding. + appeals, we know that mistakes happen, and we'll work with you to come up with a + fair solution if there has been a misunderstanding. diff --git a/README.md b/README.md index 2404704ce9..d15e125e88 100644 --- a/README.md +++ b/README.md @@ -183,12 +183,14 @@ Contributing to Docker [![Jenkins Build Status](https://jenkins.dockerproject.com/job/Docker%20Master/badge/icon)](https://jenkins.dockerproject.com/job/Docker%20Master/) Want to hack on Docker? Awesome! We have [instructions to help you get -started](CONTRIBUTING.md). If you'd like to contribute to the -documentation, please take a look at this [README.md](https://github.com/docker/docker/blob/master/docs/README.md). +started contributing code or documentation.](https://docs.docker.com/project/who-written-for/). These instructions are probably not perfect, please let us know if anything feels wrong or incomplete. Better yet, submit a PR and improve them yourself. +Getting the development builds +============================== + Want to run Docker from a master build? You can download master builds at [master.dockerproject.com](https://master.dockerproject.com). They are updated with each commit merged into the master branch. diff --git a/docs/sources/static_files/contributors.png b/docs/sources/static_files/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..85870207be1f6ca1d574eaf343cd369f473be663 GIT binary patch literal 15608 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 literal 0 HcmV?d00001