Contributing

Contributing code to advance HASH


Introduction

HASH is a complicated application.

It is also in beta, and so whilst its external interfaces will be versioned and supported, its internals may change regularly, significantly, and without prior warning. Contributing from outside the core team is therefore not currently as streamlined as we would like, but doing so can be a great way to familiarize yourself with HASH's internals and the decisions that have influenced its architecture, as well as ongoing debates regarding and active discussions surrounding its development.

Codebase Overview

The HASH codebase can be found on GitHub and is divided up into several key sections:

  • /apps contains the primary code powering our runnable applications
  • /blocks contains our public Block Protocol blocks
  • /infra houses deployment scripts, utilities and other infrastructure useful in running our apps
  • /libs contains libraries of shared code which multiple apps rely on, including npm packages and Rust crates
  • /tests contains end-to-end and integration tests that span across one or more apps, blocks or libs

A lot of our code, and all newly written or updated JavaScript files, are structured fractally. You'll need to follow this pattern when contributing.

Dictionary of Terms

We've produced a dictionary of terms for codebase contributors, to help you find your way around the application's internals, and to ensure we're all using the same language to refer to the same things.

Get Involved

If you would like to help out developing HASH, contact us, and/or check out the contributing guide in GitHub.