Thanks for wanting to help out with Bors-NG!
If you've been using bors a lot, you can help other people use it by answering questions on the support forum. It's running on Discourse, the same app used by Elixir Forum and Rust Users.
Go ahead and submit an issue report; we can't fix a problem if we don't know about it. Even if you're not sure if it's a bug, go ahead and submit it. If a lot of users think it's a problem, even if we don't think it's "really a bug," we'll probably try to figure out a way to fix it anyway. Bors needs to be useful, not just correct. Besides, that's why we call them "issue reports" instead of "bug reports."
If you get the chance, please use the search bar at the top of the issues list to see if somebody else already reported it. You don't have to do that, if you don't have time, or just can't think of what to search for. Think of it as extra credit. If we find a duplicate, we'll just leave a comment saying "Duplicate of #some-other-issue-number" (so that you know where the existing conversation is happening) and close it.
Filing an issue is as easy as going to the new issue page and filling out the fields.
The best way to send changes to Bors-NG is to fork our repo, then open a pull request. GitHub has a howto for the fork-pull system on their own website.
BTW, the hub CLI is really cool. With it, you can make a pull request that modifies this file by running these commands:
$ hub clone bors-ng/bors-ng
$ cd bors-ng
$ hub fork
$ git checkout -b fix_readme
$ vim CONTRIBUTING.md
$ git commit CONTRIBUTING.md
$ git push -u <YOUR GITHUB USERNAME> HEAD
$ hub pull-request
You don't have to use anything like that if you don't want to, though.
If you're not sure what to work on, there's a list of easy-to-fix problems to get you started at https://bors.tech/starters. After you pick an issue, you should mention that you're working on it in a GitHub comment (so that we can mark it as assigned and avoid duplicate work). If you're having trouble fixing the problem, go ahead and ask questions right in the issue's comments section, even if your question seems unrelated to the issue itself.
If you'd like to add a new feature, or make big changes to the way bors works, head over to the RFC area in the forum and follow the instructions.
To work on bors-ng you will need:
- Erlang and Elixir installed and in PATH
- a local database instance, bors uses Postgres by default
You can install Erlang and Elixir as you prefer, one way to do it without affecting other development environments is with asdf. The following shows you how to use asdf. If you already have Erlang and Elixir installed or prefer to install them in another way just skip to the next section.
NOTE: please check the Erlang and Elixir versions against .github/workflows/main.yml
to make sure you are using a supported version.
To get started developing on bors with asdf install it as per the docs, then install Erlang and Elixir with the following commands (we assume you're on linux, YMMV on other OSs):
asdf plugin-add erlang
asdf install erlang 25.3.2.4
asdf plugin-add elixir
asdf install elixir 1.14.5
# in the parent directory
cat<<EOF > ../.tool-versions
elixir 1.13.2
erlang 24.0
EOF
NOTE: please double check the Erlang and Elixir versions against .travis.yml
to make sure you are using a supported version.
You are now set for developing locally. For example to run the tests you will just have to start a postgres instance on localhost, using docker is the simplest way:
docker run -it --rm --net=host -e POSTGRES_PASSWORD=Postgres1234 postgres:13
then in another shell you can run the tests as simply as:
mix test
to run a single test suite/case just pass the relative path to the test name and optionally the line number:
mix test test/batcher/batcher_test.exs:3878