Skip to content
This repository has been archived by the owner on Nov 6, 2022. It is now read-only.

Latest commit

 

History

History
136 lines (93 loc) · 5.44 KB

CONTRIBUTING.md

File metadata and controls

136 lines (93 loc) · 5.44 KB

Contributing

To a certain extent, I will welcome pull requests, bug reporting, and bug squashing! However, I will not provide guarantees that I will accept your pull request or ideas. I may infact reject them, or reimplmenet your ideas as I see fit.

In the case I will accept your pull request, I would prefer that we came make it as easy as possible to contribute your changes to my code base. Here are a few guidelines that I would like contributors to follow so that we can have a chance of keeping on top of things.

Getting Started

  1. Make sure you are familiar with Git.
  2. Make sure you have a GitHub account.
  3. Make sure you are familiar with: Idris.
  4. Make sure you can install Idris:

Issue Reporting

Before you report an issue, or wish to add cool functionality please try and check to see if there are existing issues and pull requests. I do not want you wasting your time, duplicating somebody's work!

The Campsite Rule

A basic rule when contributing to this project is the campsite rule: leave the codebase in better condition than you found it. Please clean up any messes that you find, and don't leave behind new messes for the next contributor.

Making Changes

Idris developers and hackers try to adhere to something similar to the successful git branching model. I too try to adhere to the same model, but will not guarantee that I will. The steps are straightforward.

New contributors

For those new to the project:

  1. Fork the main development repository on github e.g.
  2. Clone your fork to your local machine:
$ git clone git@github.com/<your github user name>/idris-containers.git
  1. Add jfdm/idris-containers as a remote upstream
$ git remote add upstream git@github.com:jfdm/idris-containers.git

Existing Contributors

For those already contributing to the project:

  1. Ensure your existing clone is up-to-date with current HEAD e.g.
$ git fetch upstream
$ git merge upstream/master

Remaining Steps

The remaining steps are the same for both new and existing contributors:

  1. Create, and checkout onto, a topic branch on which to base you work.
  • This is typically the master branch.
  • For your own sanity, please avoid working on the master branch.
$ git branch fix/master/my_contrib master
$ git checkout fix/master/my_contrib
  1. Make commits of logical units.
  2. Check for unnecessary whitespace with
$ git diff --check
  1. Make sure your commit messages are along the lines of:

     Short (50 chars or less) summary of changes
    
     More detailed explanatory text, if necessary.  Wrap it to about 72
     characters or so.  In some contexts, the first line is treated as the
     subject of an email and the rest of the text as the body.  The blank
     line separating the summary from the body is critical (unless you omit
     the body entirely); tools like rebase can get confused if you run the
     two together.
       
     Further paragraphs come after blank lines.
      
     - Bullet points are okay, too
      
     - Typically a hyphen or asterisk is used for the bullet, preceded by a
       single space, with blank lines in between, but conventions vary here
    
  2. Push your changes to a topic branch in your fork of the repository.

$ git push origin fix/master/my_contrib
  1. Go to GitHub and submit a pull request to idris-containers

From there you will have to wait on my response to the request. This response might be an accept or some changes/improvements/alternatives will be suggest. We do not guarantee that all requests will be accepted.

Increases chances of acceptance.

To help increase the chance of your pull request being accepted:

  1. Update the documentation, the surrounding one, examples elsewhere, guides, whatever is affected by your contribution.
  2. Use appropriate code formatting for Idris.
  3. If there are tests then run the tests else add some tests.

Additional Resources

Adapted from the most excellent contributing files from the Puppet project and Factroy Girl Rails