<commit_before># Contributing guidelines

## Design goals

* no runtime dependencies
* extensibility: it is possible to add new message codecs, new subcodecs for result kinds, errors
  and even a whole new protocol version 

## Code formatting

We follow the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html). See
https://github.com/google/google-java-format for IDE plugins. The rules are not configurable.

The build will fail if the code is not formatted. To format all files from the command line, run:
 
```
mvn fmt:format -Dformat.validateOnly=false
```

## License headers

The build will fail if some license headers are missing. To update all files from the command line,
run:

```
mvn license:format
```

## Pre-commit hook (highly recommended)
 
Ensure `pre-commit.sh` is executable, then run:

```
ln -s ../../pre-commit.sh .git/hooks/pre-commit
```

This will only allow commits if the tests pass. It is also a good reminder to keep the test suite
short. 

## TODO

* implement (and test) request deserialization and response serialization. Look for 
  `UnsupportedOperationException` in the code.
* implement protocol v5 beta.<commit_msg>Remove todo list in contributing guidelines<commit_after># Contributing guidelines

## Design goals

* no runtime dependencies
* extensibility: it is possible to add new message codecs, new subcodecs for result kinds, errors
  and even a whole new protocol version 

## Code formatting

We follow the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html). See
https://github.com/google/google-java-format for IDE plugins. The rules are not configurable.

The build will fail if the code is not formatted. To format all files from the command line, run:
 
```
mvn fmt:format -Dformat.validateOnly=false
```

## License headers

The build will fail if some license headers are missing. To update all files from the command line,
run:

```
mvn license:format
```

## Pre-commit hook (highly recommended)
 
Ensure `pre-commit.sh` is executable, then run:

```
ln -s ../../pre-commit.sh .git/hooks/pre-commit
```

This will only allow commits if the tests pass. It is also a good reminder to keep the test suite
short. 
{'fraction_non_alphanumeric': 0.08881875563570785, 'fraction_numerical': 0.0004508566275924256, 'mean_word_length': 4.136574074074074, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, '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': '177775', 'n_tokens_mistral': 637, 'n_tokens_neox': 615, 'n_words': 281}