Please open an issue if you find a bug or have a feature request. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted.
The more detailed your report is, the faster it can be resolved. If you report a bug, please provide steps to reproduce this bug and the revision of code in which this bug reproduces.
If you would like to contribute code to fix a bug, add a new feature, or otherwise improve our project, pull requests are most welcome.
Our pull request template contains a checklist of acceptance criteria for your pull request. Please read it before you start contributing and make sure your contributions adhere to this checklist.
bundle install
bundle exec rspec # run the test suite
bundle exec standardrb # lint
bundle exec reuse lint # REUSE/SPDX compliance
xrefcheck # check for broken links between filesAll four run in CI on every pull request. xrefcheck isn't a Ruby
gem; see serokell/xrefcheck
for installation instructions.
bundle exec rspec also produces a test coverage report via
SimpleCov, written to
coverage/index.html, and fails the run if coverage drops below 90%.
We want to make sure that our projects come with correct licensing information and that this information is machine-readable, thus we are following the REUSE Practices – feel free to click the link and read about them, but, basically, it all boils down to the following:
-
Add the following header at the very top (but below the shebang, if there is one) of each source file in the repository (yes, each and every source file – it is not as hard as it might sound):
# SPDX-FileCopyrightText: 2026 Serokell <https://serokell.io/> # # SPDX-License-Identifier: MPL-2.0
(This is an example for Ruby; adapt it as needed for other languages.)
The license identifier should be the same as the one in the
LICENSEfile. -
If you are copying any source files from some other project, and they do not contain a header with a copyright and a machine-readable license identifier, add it, but be extra careful and make sure that information you are recording is correct.
If the license of the file is different from the one used in the project and you do not plan to relicense it, use the appropriate license identifier and make sure the license text exists in the
LICENSESdirectory.If the file contains the entire license in its header, it is best to move the text to a separate file in the
LICENSESdirectory and leave a reference. -
If you are copying pieces of code from some other project, leave a note in the comments, stating where you copied it from, who is the copyright owner, and what license applies.
-
All the same rules apply to documentation that is stored in the repository.
These simple rules should cover most of situation you are likely to encounter. In case of doubt, consult the REUSE Practices document.