on cd8fe96 help sign in
Idris-dev/CONTRIBUTING.md
112 lines 5.0 kB history raw
1# Contributing to Idris-Dev
3The Idris Community welcomes pull requests, bug reporting, and bug squashing!
4However, we cannot do it all ourself, and want to make it as easy as possible to contribute changes to get things working.
5Here are a few guidelines that we would like contributors to follow so that we can have a chance of keeping on top of things.
7## Getting Started
91. Make sure you are familiar with [Git](http://git-scm.com/book).
101. Make sure you have a [GitHub account](https://github.com/signup/free).
111. Make sure you are familiar with: [Idris](http://eb.host.cs.st-andrews.ac.uk/writings/idris-tutorial.pdf).
121. Make sure you can install `Idris`:
13 * [Mac OS X](https://github.com/idris-lang/Idris-dev/wiki/Idris-on-OS-X-using-Homebrew)
14 * [Ubuntu](https://github.com/idris-lang/Idris-dev/wiki/Idris-on-Ubuntu)
15 * [Debian](https://github.com/idris-lang/Idris-dev/wiki/Idris-on-Debian)
16 * [Windows](https://github.com/idris-lang/Idris-dev/wiki/Idris-on-Windows)
18# Issue Reporting
20Before you report an issue, or wish to add cool functionality please try and check to see if there are existing [issues](https://github.com/idris-lang/Idris-dev/issues) and [pull requests](https://github.com/idris-lang/Idris-dev/pulls).
21We do not want you wasting your time, duplicating somebody's work!
23## Making Changes
25Idris developers and hackers try to adhere to something similar to the [successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/).
26The steps are straightforward.
28For those new to the project:
301. Fork the `idris-dev` repo e.g.
32 $ git clone git@github.com/<your github user name>/Idris-dev.git
33 $ git remote add upstream git@github.com:idris-lang/Idris-dev.git
35For those already contributing to the project:
371. Ensure your existing clone is up-to-date with current HEAD e.g.
39 $ git fetch upstream
40 $ git merge upstream/master
42The remaining steps are the same:
441. Create, and checkout onto, a topic branch on which to base you work.
45 * This is typically the master branch.
46 * For your own sanity, please avoid working on the `master` branch.
48 $ git branch fix/master/my_contrib master
49 $ git checkout fix/master/my_contrib
511. Make commits of logical units.
521. Check for unnecessary whitespace with
54 $ git diff --check
561. Make sure your commit messages are along the lines of:
58 Short (50 chars or less) summary of changes
60 More detailed explanatory text, if necessary. Wrap it to about 72
61 characters or so. In some contexts, the first line is treated as the
62 subject of an email and the rest of the text as the body. The blank
63 line separating the summary from the body is critical (unless you omit
64 the body entirely); tools like rebase can get confused if you run the
65 two together.
67 Further paragraphs come after blank lines.
69 - Bullet points are okay, too
71 - Typically a hyphen or asterisk is used for the bullet, preceded by a
72 single space, with blank lines in between, but conventions vary here
741. Make sure you have added any necessary tests for your changes.
751. Run all the tests to assure nothing else was accidentally broken.
77 $ make test
791. Push your changes to a topic branch in your fork of the repository.
81 $ git push origin fix/master/my_contrib
831. Go to GitHub and submit a pull request to `idris-dev`
85From there you will have to wait on one of the `idris-dev` committers to respond to the request.
86This response might be an accept or some changes/improvements/alternatives will be suggest.
87We do not guarantee that all requests will be accepted.
89## Increases chances of acceptance.
91To help increase the chance of your pull request being accepted:
931. Run the tests.
941. Update the documentation, the surrounding one, examples elsewhere, guides, whatever is affected by your contribution
951. Use appropriate code formatting for both `Idris` and `Haskell`.
97## Additional Resources
99* [Idris Wiki](https://github.com/idris-lang/Idris-dev/wiki);
100* [Zen Of Idris](https://github.com/idris-lang/Idris-dev/wiki/The-Zen-of-Idris);
101* Idris FAQs: [Official](http://www.idris-lang.org/documentation/faq/); [Unofficial](https://github.com/idris-lang/Idris-dev/wiki/Unofficial-FAQ);
102* [Idris Manual](https://github.com/idris-lang/Idris-dev/wiki/Manual);
103* [Idris Tutorial](http://eb.host.cs.st-andrews.ac.uk/writings/idris-tutorial.pdf);
104* [Idris News](http://www.idris-lang.org/news/);
105* [other Idris docs](http://www.idris-lang.org/documentation/).
106* [Using Pull Requests](https://help.github.com/articles/using-pull-requests)
107* [General GitHub Documentation](https://help.github.com/).
110Adapted from the most excellent contributing files from the [Puppet project](https://github.com/puppetlabs/puppet) and [Factroy Girl Rails](https://github.com/thoughtbot/factory_girl_rails/blob/master/CONTRIBUTING.md)