Skip to content

Commit

Permalink
Describe contribution process
Browse files Browse the repository at this point in the history
As a potential contributor starts from README.md file, it contains
intical information about the contribution process. Then, it redirects
to CONTRIBUTING.md which provides a lot of details. Finally, the most
useful development info is presented in the README.md as it should be
quickly accesible.

Also, a pull request template is added. It should simplify the experience
of working on a pull request fro both contributor and reviewer as it was
buit based on the comments for previous pull requests.
  • Loading branch information
extsoft committed Sep 3, 2019
1 parent d689282 commit e776a86
Show file tree
Hide file tree
Showing 3 changed files with 199 additions and 7 deletions.
9 changes: 9 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
The prosed changes appertain to #_.

The contribution:
- [ ] updates all affected documentation
- [ ] provides commits messages which comply with the `CONTRIBUTING.md > Committing the changes` rules
- [ ] updates the completion scripts if requires
- [ ] complies with all requirements from `README.md > Hands-on development notes`

@bees-hive/elegant-git-maintainers, please review.
139 changes: 139 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
[help-wanted]: https://github.com/bees-hive/elegant-git/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+sort%3Acomments-desc+no%3Aassignee
[by-reactions]: https://github.com/bees-hive/elegant-git/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+no%3Aassignee
[dev-notes]: README.md#hands-on-development-notes
[open-issues]: https://github.com/bees-hive/elegant-git/issues
[new-issue]: https://github.com/bees-hive/elegant-git/issues/new/choose
[commit-sample]: https://github.com/bees-hive/elegant-git/commit/1855df5881a4c80f78b0a189342f5003628e0db8
[status-checks]: https://help.github.com/articles/about-status-checks/
[semver]: https://semver.org/spec/v2.0.0.html

# Contribution guide for Elegant Git
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:

The content here explains all important aspects of any type of contribution. In addition, there is
["Hands-on development notes" section in README.md][dev-notes] which provides frequently-used
information for maintainers and contributors.

**The two main statements**
1. By contributing, you fully agree with [the Code of Conduct](CODE_OF_CONDUCT.md) as this project
and everyone participating in it is governed by this document.
2. By contributing, you agree that your contributions will be licensed under
its [MIT License](LICENSE).

**Table of contents**

- [Issue contribution](#issue-contribution)
- [Issue management](#issue-management)
- [Release management](#release-management)
- [Documentation management](#documentation-management)
- [Code contribution](#code-contribution)
- [Selecting an issue](#selecting-an-issue)
- [I have some doubts about the issue](#i-have-some-doubts-about-the-issue)
- [Making development](#making-development)
- [Committing the changes](#committing-the-changes)
- [Submitting a pull request](#submitting-a-pull-request)

## Issue contribution
First look at [the open issues][open-issues] as there is a chance that someone has similar problem.

If you've found such issue, please add :+1: reaction. This will up issue's priority in general rank
(see "[Selecting An Issue](#selecting-an-issue)" section for the details).

If you're unable to find an open issue addressing the problem, open [a new one][new-issue]. The
project provides several templates for improving your experience. Please choose one of them and
follow the instruction.

## Issue management
A newly created issue has two automatic labels. The first one identifies the issue type (`bug`,
`chore`, `feature`). The second label is `finalize requirements` - it means the issue requires
review from a maintainer in order to collect any additional information if required. After the
clarifications, this label is removed and the issue is available for the implementation.

Additionally, a maintainer can mark the issue with `help wanted` label which means it's good enough
for the first contribution.

## Release management
The project is released based on a decision of the maintainers or a request from the community (a
comment in a pull request or an issue). And [Semantic Versioning 2.0][semver] is used as a control
mechanism of version numbers. Such release approach requires ready-to-release contributions within
a single pull request. This allows releasing `master` branch at any point of time.

## Documentation management
All project-related documentation is stored along with source code. It is
- `docs` directory for user documentation
- `*.md` files in the root of the repository for the development documentation
- help messages and comments within source code

This means that if you are doing any change, you must update related documentation also. The
changes, which make documentation obsolete, won't be accepted.

## Code contribution
The contributions won't be accepted if they aren't related to previously created issues. This rule
saves you and maintainers a lot of time by rejecting unwanted changes during discussions.

### Selecting an issue
If you are a beginner, you can start by looking through ["Help wanted" issues filter][help-wanted],
otherwise, select from [all issues filter][by-reactions].

> Both filters are sorted by a total number of reactions. While not perfect, the number of reactions
is a reasonable proxy for the impact a given change will have.

Also, in some cases, an issue can be assigned to a maintainer. In this case, it's not available for
external contributions.

Have chosen something? Please leave a comment with an estimate for that issue which indicates your
willingness like
```text
I'm going to solve this by the end of this week.
```
In such a way it's clear who works on the issue (Github allows to assign an issue only for the
maintainers) and when expect some progress.

### I have some doubts about the issue
If yes, please use issue's comments for discussion. It's better having a discussion prior to an
implementation or a pull request review - it saves time for everyone.

### Making development
["Hands-on development notes" section in README.md][dev-notes] should cover any development-related
questions. If no, you are welcome to create [an issue](#issue-contribution) and request what you
need.

### Committing the changes
Please use the following template when writing a commit message
```text
Describe a change in the subject line (here)
This is the body. Leave here `why` answers about the changes. You can put here
as many worlds as wish.
The final part, please mention the issue number (see the last line). Please
either use
https://elegant-git.bees-hive.org
or run
git config --local core.commentChar |
for stating commit message lines with # symbol.
#123
```

Also, don't forget to
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less

You can use [this commit][commit-sample] as a reference commit message.

### Submitting a pull request
A newly created pull request will be prepopulated from a template. You have to
update issue number (if it affects several issues, please specify all) and
complete checklist. After, feel free to add more comments if you want.

A pull requests must be targeted into the `master` branch (a default one).

Once the pull request is created, please make sure [status checks][status-checks] are passing.

> What if the status checks are failing? If a status check is failing, and you believe that the
failure is unrelated to your change, please leave a comment on the pull request explaining why you
believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude
that the failure was a false positive, then we will open an issue to track that problem with our
status check suite.
58 changes: 51 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,59 @@
[sb]: https://img.shields.io/badge/Choose%20issue-simple-green
[sl]: https://github.com/bees-hive/elegant-git/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+sort%3Acomments-desc+no%3Aassignee
[ab]: https://img.shields.io/badge/Choose%20issue-any-blue
[al]: https://github.com/bees-hive/elegant-git/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+no%3Aassignee
[cb]: https://img.shields.io/github/commits-since/bees-hive/elegant-git/latest?label=Commits%20for%20next%20release
[cl]: https://github.com/bees-hive/elegant-git/commits/master
[vb]: https://img.shields.io/github/v/tag/bees-hive/elegant-git?label=Last%20release
[vl]: https://github.com/bees-hive/elegant-git/releases/latest
[lb]: https://img.shields.io/github/license/bees-hive/elegant-git
[0b]: http://www.0pdd.com/svg?name=bees-hive/elegant-git
[0l]: http://www.0pdd.com/p?name=bees-hive/elegant-git
[bb]: https://travis-ci.org/bees-hive/elegant-git.svg?branch=master
[bl]: https://travis-ci.org/bees-hive/elegant-git
[db]: https://readthedocs.org/projects/elegant-git/badge/?version=latest
[dl]: https://elegant-git.bees-hive.org/en/latest/?badge=latest

# Elegant Git
Elegant Git is an assistant who carefully makes routine work with Git. Please read user documentation on
<https://elegant-git.bees-hive.org/>.
Elegant Git is an assistant who carefully makes routine work with Git.

Please visit <https://elegant-git.bees-hive.org/> to get started with user documentation or continue
reading to get the project's development details.

---

[![][vb]][vl] [![][cb]][cl]

[![][sb]][sl] [![][ab]][al]

[![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/bees-hive/elegant-git/blob/master/LICENSE)
[![Build Status](https://travis-ci.org/bees-hive/elegant-git.svg?branch=master)](https://travis-ci.org/bees-hive/elegant-git)
[![PDD status](http://www.0pdd.com/svg?name=bees-hive/elegant-git)](http://www.0pdd.com/p?name=bees-hive/elegant-git)
[![Documentation Status](https://readthedocs.org/projects/elegant-git/badge/?version=latest)](https://elegant-git.bees-hive.org/en/latest/?badge=latest)
[![][bb]][bl] [![][db]][dl] [![][0b]][0l]

[![Rultor.com](http://www.rultor.com/b/bees-hive/elegant-git)](http://www.rultor.com/p/bees-hive/elegant-git)

## Contributing
---

## The contribution process at a glance
1. Everyone contributing is governed by the [Code of Conduct](CODE_OF_CONDUCT.md) - please read it
2. After, please get familiar with project rules described in [CONTRIBUTING.md](CONTRIBUTING.md).
3. Make a contribution

:tada::tada::tada: That's all! :tada::tada::tada:

## Hands-on development notes
The information below guides you on different aspects of the development process. If you have
something which should be quickly available, please propose changes here.

**Table of contents**

- [Coding rules](#coding-rules)
- [Debug mode](#debug-mode)
- [Testing procedure](#testing-procedure)
- [Unit testing](#unit-testing)
- [Addons](#addons)
- [Writing tests](#writing-tests)
- [Assertions](#assertions)
- [Test name template](#test-name-template)
- [Documentation preview](#documentation-preview)

### Coding rules
We enforce having a consistent implementation by following the next strict rules:
Expand Down

0 comments on commit e776a86

Please sign in to comment.