Skip to content
CommonLayer
Documentation menu

Contributing

How to contribute to CommonLayer projects and to the platform: the standards every image and chart follows, how community contributions are recognised and rewarded, and which licenses apply to what.

PageContent
Image standardThe rules every CommonLayer container image follows, with rule ids for manifest deviations
Chart standardThe rules every CommonLayer Helm chart follows
Contributor handbookCommunity contributions to projects: recording, review, rewards from the flexible pool
LicensingPlatform, template, build configuration, chart, image components and upstream licenses
Project onboardingBringing a new project from the template to its first release
Contributing to this repositoryDevelopment setup, rules and review for the platform code

The image and chart standards are maintained together with the project template (templates/project-template/). Every project, the first-party ones included, is a repository of its own made from the template (decision 0049): the base image (commonlayer-org/base), nginx (commonlayer-org/nginx), Valkey (commonlayer-org/valkey) and PostgreSQL (commonlayer-org/postgresql). Until those repositories exist their trees are kept under projects/ in this repository, and scripts/check-template-drift.sh keeps their shared files, .github/ and schema copy included, identical to the template.

Project scripts and tests bind-mount host files into containers only with the SELinux relabel option (-v "$work/conf:/etc/app/conf:ro,z"), and only the specific file or a directory the script created, never $HOME, /, /tmp itself or the repository root: without z a host with SELinux enforcing (Fedora, RHEL) refuses the container access, even as root. The rule is in the header of the shared scripts/lib.sh; scripts/check-project-trees.py fails on a host bind mount without it, in every tree (make project-trees) and, with --bind-mounts, in this repository's own scripts (make infra-lint).