We are always accepting of pull requests, but we do adhere to specific standards in regards to coding style, test driven development and commit messages.
## Communication Channels
GitHub is the preferred method of communication between members.
Otherwise, in order of preference:
* bitcoinjs.slack.com
*#bitcoinjs-dev on Freenode IRC
## Workflow
The codebase is maintained using the "contributor workflow" where everyone without exception contributes patch proposals using "pull requests".
This facilitates social contribution, easy testing and peer review.
To contribute a patch, the workflow is as follows:
1. Fork repository
1. Create topic branch
1. Commit patches
1. Push changes to your fork
1. Submit a pull request to https://github.com/bitcoinjs/bitcoinjs-lib
[Commits should be atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention) and diffs easy to read.
If your pull request is accepted for merging, you may be asked by a maintainer to squash and or [rebase](https://git-scm.com/docs/git-rebase) your commits before it is merged.
-`bitcoinjs.script.decompile` is consensus bound only, it does not reject based on policy.
-`bitcoinjs.script.compile` will try to adhere to bitcoin-core `IsStandard` policies rules. (eg. minimalpush in https://github.com/bitcoinjs/bitcoinjs-lib/pull/638)