Skip to content

Commit 836fcef

Browse files
authored
docs: licensing and governance policies (#38)
Closes #16
1 parent ceb63cc commit 836fcef

File tree

1 file changed

+66
-24
lines changed

1 file changed

+66
-24
lines changed

README.md

Lines changed: 66 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,84 @@ container images** containing PostgreSQL extensions supported by
88
integrate seamlessly with the [`image volume extensions` feature](https://cloudnative-pg.io/documentation/current/imagevolume_extensions/)
99
in CloudNativePG.
1010

11-
For detailed instructions on building the images, see the [BUILD.md file](BUILD.md).
11+
For detailed instructions on building the images, see the [`BUILD.md` file](BUILD.md).
1212

1313
---
1414

1515
## Requirements
1616

1717
- **CloudNativePG** ≥ 1.27
1818
- **PostgreSQL** ≥ 18 (requires the `extension_control_path` feature)
19-
- **Kubernetes** 1.33+ with [ImageVolume feature enabled](https://kubernetes.io/blog/2024/08/16/kubernetes-1-31-image-volume-source/)
19+
- **Kubernetes** 1.33+ (with [ImageVolume feature enabled in 1.33 and 1.34](https://kubernetes.io/blog/2024/08/16/kubernetes-1-31-image-volume-source/))
2020

2121
---
2222

2323
## Supported Extensions
2424

25-
- [pgvector](pgvector) - Vector similarity search for PostgreSQL
26-
- [PostGIS](postgis) - Geospatial database extension for PostgreSQL
27-
- [pgAudit](pgaudit) - PostgreSQL Audit Extension
25+
CloudNativePG actively maintains the following third-party extensions, provided
26+
they are maintained by their respective authors, and PostgreSQL Debian Group
27+
(PGDG) packages are available.
28+
29+
| Extension | Description | Project URL |
30+
| :--- | :--- | :--- |
31+
| **[pgAudit](pgaudit)** | PostgreSQL audit extension | [https://github.com/pgaudit/pgaudit](https://github.com/pgaudit/pgaudit) |
32+
| **[pgvector](pgvector)** | Vector similarity search for PostgreSQL | [https://github.com/pgvector/pgvector](https://github.com/pgvector/pgvector) |
33+
| **[PostGIS](postgis)** | Geospatial database extension for PostgreSQL | [https://postgis.net/](https://postgis.net/) |
34+
35+
36+
Extensions are provided only for the OS versions already built by the
37+
[`cloudnative-pg/postgres-containers`](https://github.com/cloudnative-pg/postgres-containers) project,
38+
specifically Debian `stable` and `oldstable`.
39+
40+
---
41+
42+
## Contribution and Maintenance Policy
43+
44+
Contributors are welcome to propose and maintain additional extensions.
45+
46+
### Governance and Compliance
47+
48+
The project adheres to the following frameworks:
49+
50+
- **Governance Model:** complies with the CloudNativePG (CNPG) Governance
51+
Model, as defined in [`GOVERNANCE.md`](GOVERNANCE.md).
52+
- **Code of Conduct:** follows the CNCF Code of Conduct, as defined in
53+
[`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
54+
55+
### Extension Requirements
56+
57+
When proposing a new extension, the following criteria must be met:
58+
59+
- **Licensing and IP ownership:** the extension's licensing must be compatible
60+
with the project's goals. We approve all licences that are on the CNCF
61+
Allowed Third-Party Licence Policy list (see
62+
[CNCF Allowed Licence Policy](https://github.com/cncf/foundation/blob/main/policies-guidance/allowed-third-party-license-policy.md#cncf-allowlist-license-policy)).
63+
- **Structure:** only one extension can be included within an extension folder.
64+
- **Debian Packages:** Extension images must be built using a Debian package
65+
provided by a trusted source like the
66+
[PostgreSQL Global Development Group (PGDG)](https://wiki.postgresql.org/wiki/Apt).
67+
This ensures compatibility with the base images and standard package
68+
management procedures.
69+
- **Licence inclusion:** all necessary licence agreements for the extension and
70+
its dependencies must be included within the extension folder (refer to the
71+
examples in the `pgvector` and `postgis` folders).
72+
73+
### Submission Process
74+
75+
1. **Request and commitment:** Open a new issue requesting the extension.
76+
The contributor(s) must agree to become "component owners" and maintainers
77+
for that extension.
78+
2. **Approval:** Once approved by maintainers, the component owner(s) will be
79+
added to the `CODEOWNERS` file for the specific folder.
80+
3. **Submission:** Component owner(s) open a Pull Request (PR) to introduce the
81+
new extension. The PR is reviewed, approved, and merged.
82+
4. **Naming:** The name of the extension is the registry name.
83+
84+
### Removal Policy
85+
86+
If component owners decide to stop maintaining their extension, and no other
87+
contributors are found, the main project maintainers reserve the right to
88+
**unconditionally remove that extension**.
2889

2990
---
3091

@@ -56,22 +117,3 @@ This scheme ensures:
56117
- Alignment with the upstream `postgres-containers` base images
57118
- Explicit PostgreSQL and extension versioning
58119
- Multi-distro support
59-
60-
---
61-
62-
## Roadmap / Open Questions
63-
64-
- Should each extension live in its **own dedicated folder**? (YES!)
65-
- Should each extension follow its **own release cycle**? (YES!)
66-
- Should we track dependencies? (YES: TODO)
67-
- Should we test/rebuild the extensions that depend on the new one and so forth?
68-
- Must every release pass **smoke tests** (e.g. via [Kind](https://kind.sigs.k8s.io/))? (YES!)
69-
- Should we define policies for:
70-
71-
- Licensing (must be open source)?
72-
- Contribution and ownership
73-
- Governance aligned with the [CloudNativePG project](https://cloudnative-pg.io/)?
74-
- Can contributors propose and maintain additional extensions? (YES)
75-
- Shall we have a template for a new extension?
76-
- Should each extension have designated **component owners** responsible for
77-
maintenance, reviews, and release management? (YES)

0 commit comments

Comments
 (0)