Skip to main content

No project description provided

Project description

Human Compatible

[What we stand for goes here]

Why a monorepo?

See the following for why an organisation might want to organise their code as as monorepo:

In practice, so as to be more compatible with what open source contributors generally expect, this is a monorepo which contains within it git submodules. This makes it not a "pure" monorepo. But, nevertheless, it should manage to achieve the best of both worlds.


The goal of this public monorepository is to provide a single integration repository. With the following benefits:

  • External parties can readily reproduce the integration configuration of our infrastructure.
  • Everyone at Human Compatible utilises a common integration code base
  • GitHub integration testing can be run across inter-dependent Human Compatible libraries.

We make heavy use of git submodules so that smaller libraries are readily able to be spun out into their own repo. The benefit of this is:

  • We still get the above monorepo benefits
  • If an external party just wants to interact with one library, they only need to be exposed to a smaller repository
  • Easier for new-comers to understand the smaller repos


Everything within the public monorepo is licensed under the Apache-2.0 license.

Git submodules are licensed according to their respective repos.

Usage of git submodules

Git submodules are used in the following ways:

  • Submodules for Human Compatible developed and maintained public libraries are stored under libs/[submodule].
    • All Human Compatible repositories are found at[submodule] with main as the default branch.
  • Submodules for third party packages are within third-party/[submodule]
    • All third party repositories are forked into the Human-Compatible organisation and a branch called human-compatible is created. This branch is then pointed to by the submodule within the monorepo.
    • The main / master branch of the forked repo is to have no extra commits with respect to the upstream repository.
  • Any submodule which must itself be private is instead to be included within the private submodule which points to the repo.

Adding a third party submodule

After forking the third party repository into the Human-Compatible organisation add the submodule to the monorepo. Below is an example achieving this for the repository:

git submodule add -b human-compatible ../ third-party/

Make sure to use a "relative URL" to the submodule, so that when someone is cloning it they are free to use either https or ssh.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

humancompatible-0.0.0.tar.gz (5.9 kB view hashes)

Uploaded Source

Built Distribution

humancompatible-0.0.0-py3-none-any.whl (6.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page