-
-
Notifications
You must be signed in to change notification settings - Fork 661
Contributing
We love and appreciate contributions to Haraka.
- Create an issue
- Use Bountysource to post a bounty on that issue
- fork, by clicking the Fork button on the GitHub Project Page
- checkout a copy
- create a branch
- make changes
- push changes to your fork
- submit Pull Request
export GHUSERNAME=CHANGE_THIS
git clone https://github.com/$GHUSERNAME/Haraka.git
cd Haraka
git checkout -b new_branch
$EDITOR server.js
git add server.js
git commit
git push origin new_branch
The git commit
step(s) will launch you into $EDITOR
where the first line should be a summary of the change(s) in less than 50 characters. Additional paragraphs can be added starting on line 3.
To submit new_branch as a Pull Request, visit the Haraka project page where your recently pushed branches will appear with a green "Pull Request" button.
On branches with more than a couple commits, it's usually best to squash the commits (condense them into one) before submitting the change(s) as a PR. Notable exceptions to the single commit guideline are:
- where there are multiple logical changes, put each in a commit (easier to review and revert)
- whitespace changes belong in their own commit
- no-op code refactoring is separate from functional changes
To rebase:
git remote add haraka https://github.com/haraka/Haraka.git
git remote update haraka
git rebase -i haraka/master
Change all but the first "pick" lines to "s" and save your changes. Your $EDITOR will then present you with all of the commit messages. Edit them and save. Then force push your branch:
git push -f
- New features must be documented
- New features should include tests
- 4 spaces for indentation (no tabs)
- Semi-colons on the end of statements are preferred
- Use underscores_to_separate_names (yes this goes against JS conventions - it's the way it has always been done)
- Do not cuddle elses
- Use whitespace between operators - we prefer
if (foo > bar)
overif(foo>bar)
- Don't comment out lines of code, remove them as they will be in the revision history.
- Use boolean true/false instead of numeric 0/1
- Use one
var
for each declared variable - See Editor Settings
- run all tests: ./run_tests (or "npm test")
- run tests for a single plugin: ./run_tests tests/plugins/bounce.js
Install Guides
How To
- Upgrade Haraka
- Google Safe Browsing
- Require TLS
- Configure my Editor
- Contribute
- Roll a Release
- Test Email
- Write a Plugin
Future Plans / TODO
Support RFC3464 in bounce messages- Decode Short URLs in data.uribl.js and test the destination URL instead
DKIM verifier
Additional Resources