We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Suggesting a feature or enhancement
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We use github to host code, to track issues and feature requests, as well as accept pull requests.
Sysl
is written in Go.
Prerequisites:
make
- Go 1.13+
GOPATH
env var set (this is used by the make install command)- golangci-lint 1.30.0+
protoc
:brew install protobuf
(macOS)protoc-gen-go
:go get github.com/golang/protobuf/protoc-gen-go
Clone sysl
to create a local copy on your computer:
$ git clone https://github.com/anz-bank/sysl.git
Get dependencies using go modules (needs go 1.11+)
$ go get ./...
Some files need to be generated for Sysl to build. This will happen automatically when running relevant make
commands, but you can also (re)generate them explicitly with:
make generate
A good way of making sure everything is all right is running the test suite:
$ make test
Run all the linters (using golangci-lint):
$ make lint
We use Github Flow, so all code changes happen through Pull Requests.
- Fork the repo and create your branch from
master
. - Git commit your changes
- If you've added code that should be tested, add tests.
- If you've added code that makes the documentation out-of-date, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Git push and open a pull request against the master branch(attach WIP tag when the PR is still work in progress).
- Merge it after it's reviewed and approved!
The codebase structure refers to this standard
Commit messages should be well formatted, and to make that "standardized", we are using Conventional Commits. You can follow the documentation on their website.
We use GitHub issues to track public bugs and collect enhancement suggestions. Report a bug or suggest a feature by opening a new issue. Choose the issue template you want and follow the hints; it's that easy!
Please follow the steps in the releasing documentaion.
In short, when you submit code changes, your submissions are understood to be under the same Apache License 2.0 that covers the project. Feel free to contact the maintainers if that's a concern.