Contributing

This page contains guidelines for contributing to RiveScript, either for the core RiveScript language or for one of the primary implementations of RiveScript (the first-party Perl, Python, Java, JavaScript and Go libraries).

Core Language

This section is relevant to developers who want to contribute extensions and features to the core RiveScript scripting language. This means you want to add a feature to RiveScript that results in a syntax change in the RiveScript documents, and which will need to be implemented in the first-party RiveScript libraries.

Unless you are a programmer that is well versed in the languages of Perl, Python, Java, JavaScript and Go, contributions to the core RiveScript language should probably be limited to feature requests. If accepted, I will personally implement the feature into all of the primary RiveScript libraries.

Before making a feature request, you should understand the goals of RiveScript and what its intended scope is.

RiveScript Goals and Scope

The goals and scope of RiveScript:

Examples of out-of-scope feature requests

Here are some examples of feature requests that I declined to add to the core RiveScript language or its implementations:

Contributing Examples

Perhaps the easiest thing to contribute to the RiveScript libraries are examples of how to use it in various circumstances. For example, the JavaScript library includes an example Slack bot and others in its examples directory.

Examples should follow these guidelines:

Programming Style Guides

This section outlines the programming style of each of the primary implementations of RiveScript. This section is relevant to any software developers who want to add features or fix bugs within the first-party implementations of the RiveScript Interpreter.

In general, use the best practices for the particular programming language, for example perlstyle for Perl, and PEP 8 for Python. Also, check the style of the existing code and follow it with any new code you write.

It is advised that you configure your text editor to show invisible characters, such as tabs vs. spaces when indenting your code. Also, make sure that you remove any trailing whitespaces at the ends of the lines of code.

CoffeeScript

Go

Java

Perl

Python

Contributing Code Changes

The primary implementations of RiveScript are all managed by the Git version control system and are hosted on GitHub at the following addresses:

The procedure to contribute a code change is as follows:

  1. Fork one of the repositories into your own GitHub account.
  2. Check out your copy of the repository by i.e. git clone git@github.com:your-name/rivescript-js
  3. Work on your code change. Make sure the unit tests pass, and write a new unit test if necessary.
  4. Open a pull request from your repository’s branch to aichaos’s.
  5. If accepted, the pull request will be merged with aichaos’s repository.
Page last updated on
Web design and content copyright © 2026 Noah Petherbridge. All rights reserved.