Hello! Thanks for taking the time to contribute to Buckaroo. Buckaroo is a community project, and will only succeed through the work of contributors such as yourself. This guide will help you get started.
The Buckaroo project is spread across a few different repositories:
- LoopPerfect/buckaroo contains the source-code for the Buckaroo client that users install on their machines.
- LoopPerfect/buckaroo-wishlist is an issue-tracker where users can suggest recipes for inclusion in the official cookbook.
- LoopPerfect/homebrew-lp is the Homebrew (and Linuxbrew) tap that contains the Buckaroo formula.
Official packages live in a dedicated GitHub account.
If you need quick interaction, a good avenue for talking to the developers is Gitter.im. If you have a complex problem, reporting an issue is the best route.
Since Buckaroo has a few different components, it is important that issues are reported in the right place.
- Report installation problems to the buckaroo issue tracker.
- Report bugs in the client to the buckaroo issue tracker.
- Report issues with a specific package to that package's issue tracker.
- Report package requests to the buckaroo-wishlist.
- Report feature requests to the buckaroo issue tracker.
If you are not sure, just report to the buckaroo issue tracker. 😌
If you have a sensitive issue, such as a security bug, please send an email to security@buckaroo.pm.
The procedure for contributing to Buckaroo is:
- Fork LoopPerfect/buckaroo on GitHub
- Make some changes, adding unit-tests where appropriate
- Ensure that all tests pass
- Make a pull request (usually to
master
) - Bask in the kudos! 👏👑
We endeavor to keep the issue tracker up-to-date, so that is the best place to start. Keep an eye out for issues marked "help wanted".
First-time contributor? Take a look at the issue tracker for issues marked "first commit" for smaller, self-contained tasks. We would also be happy to walk you through any of the existing code on Gitter.im.
Another way to contribute is by writing packages! Because Buckaroo is decentralized, you can do this in your repo without approvals from us. However, we can also help guide the process on Gitter.im.
If you are looking for a library to port, the wishlist is a good place to start.
If you would like to contribute a feature that you have thought of, please create an issue first so that we can ensure the design is in-keeping with the general direction of Buckaroo.
Development of Buckaroo requires F# and dotNET Core. We also recommend Visual Studio Code and Ionide for code-completion features.
To fetch the source-code:
git clone https://github.com/LoopPerfect/buckaroo.git
cd buckaroo
To build the project:
dotnet build ./buckaroo-cli
To run the project:
dotnet run --project ./buckaroo-cli
To pass arguments to Buckaroo using dotnet
, use --
:
dotnet run --project ./buckaroo-cli -- version
The convention for branches in Buckaroo is:
master
- the very latest code with the latest features, but not recommended for production userelease/version
- the branch from which a release version is taggedbugfix/bug
- a branch for fixing a specific bugfeature/widget
- a branch for implementing a specific featureimprovement/widget
- a branch for making a specific improvement, such as refactoring
Most developers should branch from master
in order to have their changes included in the next release.
If you would like to patch an old release, you should branch off of release/version
.
Buckaroo uses automated testing and Travis CI to prevent regressions.
To run the tests:
dotnet test
Releases are bundled using Warp:
wget -O warp-packer https://github.com/dgiagio/warp/releases/download/v0.3.0/macos-x64.warp-packer
./warp-packer
To create a release for macOS:
dotnet publish ./buckaroo-cli/ -c Release -r osx-x64
./warp-packer --arch macos-x64 --exec buckaroo-cli --input_dir ./buckaroo-cli/bin/Release/netcoreapp2.1/osx-x64 --output buckaroo-macos
./buckaroo-macos
Once your submission is ready, you should make a pull request on GitHub to the appropriate branch.
-
If you are implementing a new feature or bug-fix for the next release, then you should
base
your pull request onmaster
. -
If you are making a bug-fix for an old release, you should
base
on the appropriaterelease/version
branch.
We review pull requests within 24 hours.
Buckaroo releases are semantically versioned Git tags. You can see the releases on GitHub.
Each release has a corresponding branch named release/version
. This allows master
to progress beyond the current release, whilst still allowing for easy patching of old versions.
If you would like to use the latest version of Buckaroo from master
, then you can do this using Homebrew or Linuxbrew:
brew install --HEAD loopperfect/lp/buckaroo