How to Contribute

Welcome to the NEO•ONE community! We’re always looking for more contributors and are happy to have you. This document should help make the process for contributing clear and answer some questions that you may have.

Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved.

Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.

This project and everyone participating in it is governed by the Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to

How Can I Contribute?

NEO•ONE is an open source project and we love to receive contributions from our community — you! There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into NEO•ONE itself.

Please, don’t use the issue tracker for support questions. The Help section is the best place to start for getting support.

Reporting Bugs

Well-written bug reports with consistently reproducible steps are invaluable to the development of NEO•ONE. Bugs are tracked as GitHub issues. Before creating an issue, please perform a search to see if the problem has already been reported. After you’ve determined a bug does not already exist, create an issue and fill in the template.

Suggesting Enhancements

Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. It’s up to you to make a strong case to convince the project’s developers of the merits of this feature. Please provide as much detail and context as possible.

How to Get Started in the NEO•ONE Repo

  • Make sure you have Node >= 10.16.0 installed (We recommend the latest version).
  • Install RushJS with npm install -g @microsoft/rush.
    • We use RushJS for monorepo management. When you get started in the NEO•ONE repo you will use RushJS for nearly every task, like installing dependencies, building the packages, running tests, etc.
    • For more information on RushJS, see the docs.
    • All Rush commands should be run inside the NEO•ONE repo.
  • Clone the repo with git clone
  • Then run rush install to install the dependencies.
  • Then run rush build to build the packages. Rush will perform an "incremental build", which means that it will only build packages whose source files have changed since the last successful build and the packages that depend on those packages.
  • You should now be ready to start making changes to the source code. Once you’re done making changes make sure to run rush build before running E2E tests or trying to run a bin.
  • To run all the unit tests run rush test. To run all the E2E tests run rush e2e.
    • There are A LOT of unit tests, which can take a few minutes to run all the way through. To only run a smaller set of tests you can specify a file or blob of tests to run with rush test -t or rush e2e -t.
    • For example, if you wanted to only run the unit tests in neo-one-client-common you would run rush test -t packages/neo-one-client-common/src/__tests__/**/*
  • If you want to test your changes with the NEO•ONE CLI run rush build. Then, to start the CLI you’d run node packages/neo-one-cli/bin/neo-one.js from inside the NEO•ONE repository. You will then be running the new NEO•ONE CLI with your changes. From there you can see your new code directly in action.
  • To see all the available RushJS commands run rush --help.

Your First Code Contribution

Unsure where to begin contributing to NEO•ONE? Here are some great ways to get started:

  • Chat with us on Discord about ways to contribute!
  • Documentation (like the text you are reading now) can always use improvement! All pages on this website include an edit button which you can click to modify the documentation.
  • Adding test coverage is a great way to get familiar with the codebase.
  • Find an existing issue with the help wanted and good first issue labels.

Once you’ve had your first pull request approved and merged, find existing issues marked with help wanted labels to continue contributing or suggest an enhancement. Respond on the issue thread expressing interest in working on it. This helps other people know that the issue is active, and hopefully prevents duplicated efforts.

Pull Requests

  • Follow the process outlined in GitHub Standard Fork & Pull Request Workflow when submitting a pull request.
  • Fill in the pull request template.
  • Pre-commit hooks will run basic checks automatically.
  • Pull requests should typically be accompanied with tests. Your reviewers will request tests when appropriate if they are missing.


By contributing to NEO•ONE, you agree that your contributions will be licensed under its MIT license.

Edit this page
  • How to Contribute
  • Codebase Overview
  • Smart Contract Compiler
  • Code of Conduct
Previous Article
Configuration Reference
Next Article
Codebase Overview
InstallationMain ConceptsAdvanced GuidesAPI ReferenceContributing
GitHubStack OverflowDiscord ChatTwitterYouTube