@@ -0,0 +1,96 @@
# Nextcloud Recipe Maintenance
> Status: **DRAFT** — open for discussion with co-maintainers and the wider
> federation. Sections marked _(TBD)_ need collective input before this
> document is considered ratified.
This document describes how the Nextcloud recipe is maintained. It builds on
the floor set by [Federation Resolution
025 ](https://docs.coopcloud.tech/federation/resolutions/passed/025/ ) and
follows the [`MAINTENANCE.md`
template ](https://docs.coopcloud.tech/maintainers/maintain/#maintenancemd-template )
described in the Co-op Cloud maintainers' docs.
All contributions should be made via a pull request so that quality and
consistency stay something others can rely on.
## Maintainers
Everyone can apply to be a recipe maintainer.
Simply add your self to the list in the README.md and open a new pull request
with the change.
## Maintainer Responsibilities
This recipe commits to the following, which is tighter than the floor set by
Resolution 025 (stable-recipe category). However, these timelines are
best-effort, so we aim for them as good as possible:
- Respond to PRs / issues within 3 working days
- Apply security patches within 1 week of disclosure
- Ship patch / minor image updates within 2 weeks of upstream release
- Adopt major Nextcloud version updates within 1 release cycle of upstream
EOL of the previous major (see below)
- Keep documentation current
In order to meet these responsibilities each maintainer:
- Watches the repository so notifications arrive
- Keeps an eye on [Renovate ](./renovate.json ) updates and helps shepherd them through
- Has a working contact (Matrix handle or email) reachable by the others
## Release cadence
The intent is to **track Nextcloud's own release schedule ** rather than invent
our own. In practice this means:
- **Patch releases (e.g. `32.0.x` )**: published to this recipe shortly after
upstream, ideally within 1 week. `chore(deps)` opens the PRs; a maintainer
reviews the release notes and Nextcloud's issue tracker, and merges the PR
if it is OK.
- **Minor releases**: same flow as patch releases, but one of the maintainer
tests it on their own instance before merging.
- **Major releases (e.g. `32 → 33` )**: not adopted on day one. We wait for the
first one or two upstream patch releases of the new major to land
(typically 1– 2 months) before promoting it here, to avoid passing the
early-adopter cost to operators. Major bumps get their own PR with release
notes and an upgrade-path check.
Before adding a major release, the following needs to be done:
- at least two maintainers update one of their production instances to the
new version
- the previous release gets a last update pointing to the docker image
versions nextcloud:xx-fpm, so that users can auto-update if they wish so
- the new release is added to this repo
- If people have the time it would be nice to create specially tagged versions
for major releases, which reflect that this is 'bleeding edge' and has not
been thoroughly tested.
- **Co-installed components** (Talk HPB, OnlyOffice, Whiteboard, etc.) are
bumped alongside or shortly after the matching Nextcloud release.
## Pull Requests
A pull request can be merged once it is approved by at least one maintainer.
PRs opened by a maintainer need approval from another maintainer. With three
maintainers this is workable; if the group shrinks, the rule should be
revisited.
Approvals should ideally include a smoke test on a real instance for anything
beyond a patch bump — Nextcloud upgrades have a long history of surprising us
(see the [upgrade notes in `README.md` ](./README.md#upgrading-nextcloud )),
and silent CI is not enough.
## Becoming a maintainer
Everyone is welcome to apply:
1. Watch the repository so you get notifications.
2. Open a pull request adding yourself to the `Maintainer` line in
[`README.md` ](./README.md ) and to the list above.
3. Once an existing maintainer merges the PR, you'll be added to the
[nextcloud maintainers
team ](https://git.coopcloud.tech/org/coop-cloud/teams/nextcloud-maintainers )
_ (team to be created if it does not yet exist — TBD) _ .
Stepping down is symmetrical: open a PR removing yourself, and flag it in
the federation channels so the group can plan replacement before falling
below the Res. 025 floor of one named maintainer.