Thank you for wanting to contribute!
We do not have a formal Code of Conduct, but we expect potential contributors to remain professional.
The development primarily happens on Gitlab over the Merge Request workflow, but the current maintainer is open to more distributed approaches, such as sending patches or pulling from remote repositories.
Ballish is a Common Lisp project, even this website is written in Lisp. If you wish to contribute, we gladly welcome merge requests! Note, however, that we may not necessarily accept them.
In order to build ballish yourself, given the model of distribution that it is using, the typical simple workflow does not work out of the box, and a couple of custom repositories are required. That said, before anything, you should familiarize yourself, and make sure those are installed, with:
You will need to compile sbcl manually, because a necessary compilation option isn't enabled by default: make sure you compile it with sh make.sh --fancy --with-sb-linkable-runtime
Note: sbcl 2.0.4 has a known bug preventing ballish compilation. Versions before and after are fine.
You will then need to clone those dependencies in your ~/common-lisp/
folder:
Once you have all of this, you can run make
, after which the binaries should appear in your folder.
There are 2 kind of tests to run: unit tests and integration tests. Unit tests are run with make tests
, whilst integration tests are run with cd tests/functional && ./run-tests
.
In addition, if you want to build a package (Arch, Debian, Fedora, Ubuntu), your best bet is looking at the appropriate job definition in the .gitlab-ci.yml . Each distribution has its own small set of packages to install, after which a generic build script can run, packaging is then done with fpm (aka "Effin Package Management") in the Makefile.