Skip to content

Commit 05d1de6

Browse files
committed
docs: licensing and governance policies
Closes #16 Signed-off-by: Gabriele Bartolini <[email protected]>
1 parent ceb63cc commit 05d1de6

File tree

1 file changed

+62
-24
lines changed

1 file changed

+62
-24
lines changed

README.md

Lines changed: 62 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,80 @@ 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` project](https://github.com/cloudnative-pg/postgres-containers),
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 provided by the PGDG](https://wiki.postgresql.org/wiki/Apt).
65+
- **Licence inclusion:** all necessary licence agreements for the extension and
66+
its dependencies must be included within the extension folder (refer to the
67+
examples in the `pgvector` and `postgis` folders).
68+
69+
### Submission Process
70+
71+
1. **Request and commitment:** Open a new issue requesting the extension.
72+
The contributor(s) must agree to become "component owners" and maintainers
73+
for that extension.
74+
2. **Approval:** Once approved by maintainers, the component owner(s) will be
75+
added to the `CODEOWNERS` file for the specific folder.
76+
3. **Submission:** Component owner(s) open a Pull Request (PR) to introduce the
77+
new extension. The PR is reviewed, approved, and merged.
78+
4. **Naming:** The name of the extension is the registry name.
79+
80+
### Removal Policy
81+
82+
If component owners decide to stop maintaining their extension, and no other
83+
contributors are found, the main project maintainers reserve the right to
84+
**unconditionally remove that extension**.
2885

2986
---
3087

@@ -56,22 +113,3 @@ This scheme ensures:
56113
- Alignment with the upstream `postgres-containers` base images
57114
- Explicit PostgreSQL and extension versioning
58115
- 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)