Thanks for considering contributing! We want AllenNLP to be the way to do cutting-edge NLP research, but we cannot get there without community support.

How Can I Contribute?#

Did you find a bug?#

First, do a quick search to see whether your issue has already been reported. If your issue has already been reported, please comment on the existing issue.

Otherwise, open a new GitHub issue. Be sure to include a clear title and description. The description should include as much relevant information as possible. The description should explain how to reproduce the erroneous behavior as well as the behavior you expect to see. Ideally you would include a code sample or an executable test case demonstrating the expected behavior.

Did you write a fix for a bug?#

Please be sure to run the black application to first format your contribution. Next open a new GitHub pull request with the fix. Make sure you have a clear description of the problem and the solution, and include a link to relevant issues.

Once your pull request is created, our continuous build system will check your pull request. Continuous build will test that:

  • pytest All tests pass
  • flake8 accepts the code style (our guidelines are based on PEP8)
  • black accepts the code formatting
  • mypy typechecks the Python code
  • The docs can be generated successfully
  • Test coverage remains high. Please add unit tests so we maintain our code coverage.

If your code fails one of these checks, you will be expected to fix your pull request before it is considered.

You can run most of these tests locally with ./scripts/, which will be faster than waiting for cloud systems to run tests.

In addition, the requirements.txt includes the Python pre-commit library, and we provide a suggested configuration at .pre-commit-config.yaml. If you run pre-commit install at the root of your fork, it will create git precommit hooks that run black and flake8 over the files in every commit.

Do you have a suggestion for an enhancement?#

We use GitHub issues to track enhancement requests. Before you create an enhancement request:

  • Make sure you have a clear idea of the enhancement you would like. If you have a vague idea, consider discussing it first on a GitHub issue.

  • Check the documentation to make sure your feature does not already exist.

  • Do a quick search to see whether your enhancement has already been suggested.

When creating your enhancement request, please:

  • Provide a clear title and description.

  • Explain why the enhancement would be useful. It may be helpful to highlight the feature in other libraries.

  • Include code examples to demonstrate how the enhancement would be used.

Do you have a new state-of-the-art model?#

We are always looking for new models to add to our collection. If you have trained a model and would like to include it in AllenNLP, please create a pull request that includes:

  • Any code changes needed to support your new model.
  • A link to the model itself. Please do not check your model into the GitHub repository, but instead upload it in the PR conversation or provide a link to it at an external location.

In the description of your PR, please clearly explain the task your model performs along with precision and recall statistics on an established dataset.