Skip to content

Commit

Permalink
[doc] Adding a contributing document
Browse files Browse the repository at this point in the history
  • Loading branch information
3rd-Eden committed Dec 7, 2014
1 parent f5057d8 commit 611b508
Showing 1 changed file with 261 additions and 0 deletions.
261 changes: 261 additions & 0 deletions CONTRIBUTING.md
@@ -0,0 +1,261 @@
# Contributing

We welcome and encourage community contributions to our projects. This document
specifies the guidelines for contributing to the projects that are created under
the **primus** organization. We've split this document in smaller sections:

- [Feature Requests](#features)
- [Issues](#issues)
- [Outline of a bug report](#outline-of-a-bug-good-report)
- [Labels](#lables)
- [Code](#code)
- [The Boy Scout Rule](#the-boy-scout-rule)
- [Developer's Certificate of Origin](#developers-certificate-of-origin)
- [Code of Conduct](#code-of-conduct)

There are always many ways you can help out this project besides contributing
code:

- Writing and improving our documentation.
- Helping people out in our [IRC][irc] room.
- Searching for potential memory leaks, event loops blocks and de-optimized
code.
- Preforming security audits on the code base. Please check our
[SECURITY.md](security) for the Security Guidelines.
- Filing bugs.

And that list goes on and on. No matter what choose we are thankful for your
interest and that you're looking to contribute to our projects. They are build
and maintained with love and we hope to share some of that love with you.

## Feature Requests

Yes! Make them! We would love to hear your idea's and what we can do to continue
to move this project forward. Changes big or small, we welcome them all. If the
feature requested is not in line with our roadmap we will work with you to
ensure you can build it your self on top of our project.

## Issues

**If you have a security related issue, please review [Security
Guidelines][security] first.**

Before creating an issue make sure that you are using the latest version of the
module as the issue you might to report could be resolved already. If you are
using the latest version please use the Github search feature to check if there
isn't already an open issue. If you've found an issue that is:

- **closed:** Check if the issue provides a solution for your issue. If it's
already fixed using a commit it could be that there have been a regression in
the code. In this case it's best to open a new issue. For all other cases it
might make more sense to just add comment to the closed issue explaining that
you're still affected by this.
- **open:** Try to provide more details to the issue. If you can reproduce the
issue in a different way then the original author stated please add this.
There more ways we have to reproduce the bug it will be more likely to get
fixed faster.
- **missing:** Please open a new issue, we would love to hear more about it.

### Outline of a good bug report

When reporting new issues for the project please use the following issue
template so you know what kind of data you need to supply so we can resolve it
as quickly as possible. If some of these fields do not apply to your issue feel
free to leave them empty or remove them completely:

```md
**Version:**

**Environment:**
- **Operating system**:
- **browser**:
- **Nodejs**:
- **npm**:

**Expected result:**

**Actual result:**

**Steps to reproduce:**

1. Step 1.
2. Step 2.
3. Things are broken.
```

Here is a small explanation of the fields and what kind of information could be
present in them.

- **Version:** The version number of the module that you're currently using. If
you don't know the current version number you can check it by running `npm ls`
in your terminal.
- **Environment:** This allows us to narrow down the issue to potential platform
or version if we cannot reproduce it on our own machines. If you don't know
your npm and node.js version you can run `npm version` in your terminal and it
will output all the information you need. If you are reporting a Node.js
specific bug you can omit the browser field unless it requires a browser to
reproduce.
- **Expected result:** What you did you expect that would happen instead.
- **Actual result:** What happened when you executed the code.
- **Steps to reproduce:** Every step, no matter how small is described here to
fully reproduce the mentioned issue. You cannot be specific enough here. It's
better to much details then to few here.

A complete example of this would be:

```
Version: 0.0.1
Environment:
- Operating System: Mac OSX 10.10.1 (14B25)
- Node: 0.10.31
- npm: 1.4.28
- browser: Google Chrome, Version 39.0.2171.71 (64-bit)
Expected result: A `console.log` message in the terminal.
Actual result: An empty console without any log messages.
Steps to reproduce:
1. Open Chrome
2. Open the Developer tools panel.
3. Type `console.log('message')`
4. Press enter to execute the code.
```

### Labels

We try to label all created issues to make it easy to spot the scope of the
created issue. We also label all issues with a ``. The more stars an issue has
the more important it is. We currently have three different levels of
importance:

- **`★★★`**: High priority issue, should be addressed as soon as possible. We
will do our best to include this in the next release. This however does not
mean that no issue is closed or fixed before these high
priority issues.
- **`★★`**: Medium priority, this should be fix but it might not make the next
release.
- **``**: Low priority issue, don't expect this to be resolved soon by the
contributors. Great bugs to fix on a rainy day. But these bugs are also great
for first time contributors who are looking to fix some bugs.

## Code

Unless you are fixing a known bug we **strongly** encourage discussing this with
the core team via a GitHub issue or [IRC][irc] before getting started ensure you
work is not rejected.

All contributions must be made via pull requests. After a pull request is made
other contributors will either provide feedback or merge it directly depending
on:

- Addition and passing of the test suite and coverage reports.
- The severity of the bug that the code is addressing.
- The overall quality of patch.

We expect that every bug fix comes with new test for our test suite. This is
important to prevent regression in the future as our current set of tests did
not trigger the code path.

### The Boy Scout Rule

When working with the code try to the following rule that The Boy Scouts have:

> "Always leave the campground cleaner than you found it."
If you find a mess on the ground, you clean it up regardless of who might have
made the mess. You intentionally improve the environment for the next group of
campers. Working with code should not be an exception to this. If you find
a mess in the code, clean it up no matter who the original author was.

### Developer's Certificate of Origin

All contributors must agree to the [Developers Certificate of Origin][dco]:

```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

To accept the DCO, add the following line to each commit message with your name
and email address:

```
Signed-off-by: Joe Longpolland <joe@example.com>
```

You can automate this process by simply committing your code using:

```
git commit -s
```

For legal reasons we cannot accept anonymous, pseudonymous or nick names. If
this is an issue please contact us directly through [IRC][irc].

## Code of Conduct

- We are committed to providing a friendly, safe and welcoming environment for
all, regardless of gender, sexual orientation, disability, ethnicity, religion,
or similar personal characteristic.
- Please avoid using overtly sexual nicknames or other nicknames that might
detract from a friendly, safe and welcoming environment for all.
- Please be kind and courteous. There's no need to be mean or rude.
- Respect that people have differences of opinion and that every design or
implementation choice carries a trade-off and numerous costs. There is seldom a
right answer.
- Please keep unstructured critique to a minimum. If you have solid ideas you
want to experiment with, make a fork and see how it works.
- We will exclude you from interaction if you insult, demean or harass anyone.
That is not welcome behaviour. We interpret the term "harassment" as including
the definition in the Citizen Code of Conduct; if you have any lack of clarity
about what might be included in that concept, please read their definition. In
particular, we don't tolerate behavior that excludes people in socially
marginalized groups.
- Private harassment is also unacceptable. No matter who you are, if you feel
you have been or are being harassed or made uncomfortable by a community
member, please contact one of the channel ops or any of the core contributors
immediately with a capture (log, photo, email) of the harassment if possible.
Whether you're a regular contributor or a newcomer, we care about making this
community a safe place for you and we've got your back.
- Likewise any spamming, trolling, flaming, baiting or other attention-stealing
behaviour is not welcome.

[dco]: http://elinux.org/Developer_Certificate_Of_Origin
[irc]: http://webchat.freenode.net/?channels=primus
[security]: SECURITY.md

0 comments on commit 611b508

Please sign in to comment.