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.
| Page | Content |
|---|---|
| Image standard | The rules every CommonLayer container image follows, with rule ids for manifest deviations |
| Chart standard | The rules every CommonLayer Helm chart follows |
| Contributor handbook | Community contributions to projects: recording, review, rewards from the flexible pool |
| Licensing | Platform, template, build configuration, chart, image components and upstream licenses |
| Project onboarding | Bringing a new project from the template to its first release |
| Contributing to this repository | Development 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).