<commit_before># Contributing

This contributing guide pertains to contributing to exercism problem sets
in individual languages, as well as the exercism Problem API (x-api),
which is a small application that delivers the problems in all of the
languages.

The problem API includes each of the language repositories as a git submodule.

Submodules can be a bit tricky to work with, but in this case it's worth it,
since contributing to a language track can be done with no dependencies on
other languages.

**You don't need to have a working Ruby development environment to contribute
problems in Haskell or Erlang!**

## Contributing to an Existing Language Track

Each language has its own repository, in the exercism GitHub organization. It
is named `x<language>`, e.g.

* [exercism/xelixir](https://github.com/exercism/xelixir)
* [exercism/xpython](https://github.com/exercism/xpython)

You can also navigate to each language repository from this repository via the
`problems` directory at the root of the repository. Each entry there is a link to
the relevant submodule's repository.

**If there are any special considerations when contributing to a language,
then these will be listed in the README for that specific repository.**

Each problem consists of:

* a test suite
* an example solution
* supporting files (optional)

The test suite forms the basis for the problem. The example solution will
_not_ be delivered as part of the problem, and is simply used as a sanity
check to make sure that the test suite makes sense.

In some language tracks the test suite is run against the example solution as
part of the CI process.

Supporting files could be anything from additional documentation
(`GETTING_STARTED.md`) or type definitions or helpful/boring/necessary<commit_msg>Add link to synopsis mini-site in contributing doc<commit_after># Contributing

This contributing guide pertains to contributing to exercism problem sets
in individual languages, as well as the exercism Problem API (x-api),
which is a small application that delivers the problems in all of the
languages.

The problem API includes each of the language repositories as a git submodule.

Submodules can be a bit tricky to work with, but in this case it's worth it,
since contributing to a language track can be done with no dependencies on
other languages.

**You don't need to have a working Ruby development environment to contribute
problems in Haskell or Erlang!**

## Viewing Available Language Tracks

To get a quick overview of which language tracks exist you can look at the
[problems directory](https://github.com/exercism/x-api/tree/master/problems)
in this repository (x-api).

To see which problems have been implemented in which language, check out the
[synopsis](http://synopsis.exercism.io/) minisite.

## Contributing to an Existing Language Track

Each language has its own repository, in the exercism GitHub organization. It
is named `x<language>`, e.g.

* [exercism/xelixir](https://github.com/exercism/xelixir)
* [exercism/xpython](https://github.com/exercism/xpython)

You can also navigate to each language repository from this repository via the
`problems` directory at the root of the repository. Each entry there is a link to
the relevant submodule's repository.

**If there are any special considerations when contributing to a language,
then these will be listed in the README for that specific repository.**

Each problem consists of:

* a test suite
* an example solution
* supporting files (optional)

The test suite forms the basis for the problem. The example solution will
_not_ be delivered as part of the problem, and is simply used as a sanity
check to make sure that the test suite makes sense.

In some language tracks the test suite is run against the example solution as
part of the CI process.

Supporting files could be anything from additional documentation
(`GETTING_STARTED.md`) or type definitions or helpful/boring/necessary
{'fraction_non_alphanumeric': 0.05084745762711865, 'fraction_numerical': 0.0, 'mean_word_length': 4.763848396501458, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '602788', 'n_tokens_mistral': 1011, 'n_tokens_neox': 977, 'n_words': 568}