# How to contribute

We love contributions!

## Getting started

* Create a github account if you haven't already, and fork the project
* Create a new branch, using a branch name that gives an idea of what the changes are about
* One topic per commit; a number of small commits are better than one big one
  * Do not introduce whitespace changes! (**Windows users:** `git config --global core.autocrlf true`)
  * Encouraged but not enforced: each commit should stand alone, in the sense that the code should compile and run at that point.
* One major topic per pull request. Commits that fix small things (typos, formatting) are perfectly acceptable in a PR fixing a bug or adding a feature.
  * Tests are good. Tests are required unless you're fixing something simple or that was obviously broken.
  * Do not change EXPRESS schema definition without reference to an upstream change.
* Make your changes and push them to your GitHub repo
* Once your branch is pushed, submit a pull request.
  - enable github option on each PR 'Allow edits from maintainers', refer to github help if necessary
* We'll look at the PR and either merge (possibly after rebase) or add feedback.
  - If there isn't any activity within several days send a message to the mailing list - `scl-dev` AT `groups.google.com`.

## Coding Standards

SC's source has been reformatted with astyle. When making changes, try
to match the current formatting. The main points are:

  - compact (java-style) brackets:
```C
    if( a == 3 ) {
        c = 5;
        function( a, b );
    } else {
        somefunc();
    }
```
  - indents are 4 spaces
  - no tab characters
  - line endings are LF (linux), not CRLF (windows)
  - brackets around single-line conditionals
  - spaces inside parentheses and around operators
  - return type on the same line as the function name, unless that's
    too long
  - doxygen-style comments
    (see http://www.stack.nl/~dimitri/doxygen/docblocks.html)

If in doubt about a large patch, run astyle with the config file
misc/astyle.cfg.
Download astyle from http://sourceforge.net/projects/astyle/files/astyle/

