|
| 1 | +# Contributions Welcome! |
| 2 | + |
| 3 | +We welcome contributions to the Hyperledger Project in many forms, and |
| 4 | +there's always plenty to do! |
| 5 | + |
| 6 | +First things first, please review the Hyperledger Project's [Code of |
| 7 | +Conduct](https://github.com/hyperledger/hyperledger/wiki/Hyperledger-Project-Code-of-Conduct) |
| 8 | +before participating. It is important that we keep things civil. |
| 9 | + |
| 10 | +## Getting a Linux Foundation account |
| 11 | + |
| 12 | +In order to participate in the development of the Hyperledger Fabric project, |
| 13 | +you will need an [LF account](Gerrit/lf-account.md). This will give you single |
| 14 | +sign-on to all the community tools, including Gerrit and Jira (coming soon!). |
| 15 | + |
| 16 | +## Getting help |
| 17 | + |
| 18 | +If you are looking for something to work on, or need some expert assistance in |
| 19 | +debugging a problem or working out a fix to an issue, our |
| 20 | +[community](https://www.hyperledger.org/community) is always eager to help. We |
| 21 | +hang out on [Slack](https://hyperledgerproject.slack.com/), IRC (#hyperledger on |
| 22 | +freenode.net) and the [mailing lists](http://lists.hyperledger.org/). Most of us |
| 23 | +don't bite ;-) and will be glad to help. |
| 24 | + |
| 25 | +## Requirements and Use Cases |
| 26 | + |
| 27 | +We have a [Requirements |
| 28 | +WG](https://github.com/hyperledger/hyperledger/wiki/Requirements-WG) that is |
| 29 | +documenting use cases and from those use cases deriving requirements. If you are |
| 30 | +interested in contributing to this effort, please feel free to join the |
| 31 | +discussion in |
| 32 | +[slack](https://hyperledgerproject.slack.com/messages/requirements/). |
| 33 | + |
| 34 | +## Reporting bugs |
| 35 | + |
| 36 | +If you are a user and you find a bug, please submit an |
| 37 | +[issue](https://github.com/hyperledger/fabric/issues). Please try to provide |
| 38 | +sufficient information for someone else to reproduce the issue. One of the |
| 39 | +project's maintainers should respond to your issue within 24 hours. If not, |
| 40 | +please bump the issue and request that it be reviewed. |
| 41 | + |
| 42 | +## Fixing issues and working stories |
| 43 | +Review the [issues list](https://github.com/hyperledger/fabric/issues) and find |
| 44 | +something that interests you. You could also check the ["help |
| 45 | +wanted"](https://github.com/hyperledger/fabric/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) |
| 46 | +and ["good first |
| 47 | +bug"](https://github.com/hyperledger/fabric/issues?q=is%3Aissue+is%3Aopen+label%3Agood-first-bug) |
| 48 | +lists. It is wise to start with something relatively straight forward and |
| 49 | +achievable. Usually there will be a comment in the issue that indicates whether |
| 50 | +someone has already self-assigned the issue. If no one has already taken it, |
| 51 | +then add a comment assigning the issue to yourself, eg.: `I'll work on this |
| 52 | +issue.`. Please be considerate and rescind the offer in comments if you cannot |
| 53 | +finish in a reasonable time, or add a comment saying that you are still actively |
| 54 | +working the issue if you need a little more time. |
| 55 | + |
| 56 | +## Working with a local clone and Gerrit |
| 57 | + |
| 58 | +We are using [Gerrit](https://gerrit.hyperledger.org/r/#/admin/projects/fabric) |
| 59 | +to manage code contributions. If you are unfamiliar, please review [this |
| 60 | +document](Gerrit/gerrit.md) before proceeding. |
| 61 | + |
| 62 | +After you have familiarized yourself with `Gerrit`, and maybe played around with |
| 63 | +the `lf-sandbox` project, you should be ready to set up your local [development |
| 64 | +environment](dev-setup/devenv.md). We use a Vagrant-based approach to |
| 65 | +development that simplifies things greatly. |
| 66 | + |
| 67 | +## Coding guidelines |
| 68 | + |
| 69 | +Be sure to check out the language-specific [style |
| 70 | +guides](Style-guides/go-style.md) before making any changes. This will ensure a |
| 71 | +smoother review. |
| 72 | + |
| 73 | +### Becoming a maintainer |
| 74 | + |
| 75 | +This project is managed under open governance model as described in our |
| 76 | +[charter](https://www.hyperledger.org/about/charter). Projects or sub-projects |
| 77 | +will be lead by a set of maintainers. New projects can designate an initial set |
| 78 | +of maintainers that will be approved by the Technical Steering Committee when |
| 79 | +the project is first approved. The project's maintainers will, from |
| 80 | +time-to-time, consider adding or removing a maintainer. An existing maintainer |
| 81 | +will post a patchset to the [MAINTAINERS.md](MAINTAINERS.md) file. If a |
| 82 | +majority of the maintainers concur in the comments, the pull request is then |
| 83 | +merged and the individual becomes a (or is removed as a) maintainer. Note that |
| 84 | +removing a maintainer should not be taken lightly, but occasionally, people do |
| 85 | +move on - hence the bar should be some period of inactivity, an explicit |
| 86 | +resignation, some infraction of the code of conduct or consistently |
| 87 | +demonstrating poor judgement. |
| 88 | + |
| 89 | +## Legal stuff |
| 90 | + |
| 91 | +**Note:** Each source file must include a license header for the Apache Software |
| 92 | +License 2.0. A template of that header can be found [here](https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/headers.txt). |
| 93 | + |
| 94 | +We have tried to make it as easy as possible to make contributions. This |
| 95 | +applies to how we handle the legal aspects of contribution. We use the same |
| 96 | +approach—the [Developer's Certificate of Origin 1.1 (DCO)](docs/biz/DCO1.1.txt)—that |
| 97 | +the Linux® Kernel [community](http://elinux.org/Developer_Certificate_Of_Origin) uses to manage code contributions. |
| 98 | + |
| 99 | +We simply ask that when submitting a patch for review, the developer must include |
| 100 | +a sign-off statement in the commit message. |
| 101 | + |
| 102 | +Here is an example Signed-off-by line, which indicates that the submitter |
| 103 | +accepts the DCO: |
| 104 | + |
| 105 | +``` |
| 106 | +Signed-off-by: John Doe <[email protected]> |
| 107 | +``` |
| 108 | +You can include this automatically when you commit a change to your local git |
| 109 | +repository using `git commit -s`. |
0 commit comments