# Contributing

The easiest way to contribute to the Sabre project is by writing code in the language. The more the language is battle-tested, the more bugs can be found and therefore the language becomes more stable.

## Getting in touch

If you want to submit a patch, file a bug, suggest a feature or have questions about something, please send a mail to the [public mailing list](https://lists.sr.ht/~garritfra/sabre) of the project.

## Fixing things and adding features

If you want to contribute to the compiler itself, the easiest way to get started is to look at the [TODO file](https://git.sr.ht/~garritfra/sabre/tree/master/TODO) at the root of the project. Usually, this is where important todo items are jotted down.

You could also run the tests (`cargo test`) and see if any tests are ignored. Usually, if a bug is found in the wild, a failing but ignored test is written, so that it can be further investigated later.

## Writing documentation

As with all software, Sabre needs good documentation. Since Sabre is still in early development, things change constantly. This means that docs will be out of date in a lot of cases, or not written at all. Any help with the documentation is greatly appreciated!

## Submitting your code

Development should happen on [SourceHut](https://sr.ht/~garritfra/sabre/). If you want to contribute code, please send a patch to the [public mailing list](https://lists.sr.ht/~garritfra/sabre). If you don't feel confortable with the [patch-based workflow](https://slashdev.space/posts/patch-based-git-workflow), you can also open a pull request in the [GitHub mirror](https://github.com/garritfra/sabre). Before submitting the code, please make sure that it is **sufficiently documented and tested**.
