Skip to content

docs(ospo): community health rollout v2 — README, agents.md, health files - #601

Merged
oc-tmueller merged 3 commits into
masterfrom
ospo/community-health-v2
Sep 9, 2026
Merged

docs(ospo): community health rollout v2 — README, agents.md, health files#601
oc-tmueller merged 3 commits into
masterfrom
ospo/community-health-v2

Conversation

@dj4oC

@dj4oC dj4oC commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR is part of the Kiteworks OSPO community health rollout (kiteworks.com/opensource), applied to all ~110 public ownCloud repositories starting May 5, 2026.

  • README.md: Rewritten with v2 OSPO template
    • License-specific OSPO section with Apache 2.0 migration guidance
    • Mandatory Community & Support section: GitHub Discussions, Matrix, docs, enterprise support, OSPO home
    • Contributing workflow: Rebase Early/Often, Dependabot, PGP/GPG-signed commits, DCO sign-off, GitHub Actions policy
    • Security section pointing to security.owncloud.com + YesWeHack bug bounty
    • Translations link to Transifex (owncloud project)
  • AGENTS.md (new): AI agent context file with architecture, build commands, OSPO policy constraints
  • CLAUDE.md (new): symlink to AGENTS.md
  • CODE_OF_CONDUCT.md (new): Redirect to https://owncloud.com/contribute/code-of-conduct/
  • CONTRIBUTING.md (new): Redirect to https://owncloud.com/contribute/
  • SECURITY.md (new): Redirect to https://security.owncloud.com + YesWeHack
  • SUPPORT.md (new): Redirect to https://owncloud.com/contact-us/ and support channels

Changes after review

The generated content was checked against this repository and corrected. Two commits on top of the original one.

agents.mdAGENTS.md, plus a CLAUDE.md symlink

Matches the convention already merged across the organisation (core, oauth2, user_ldap, activity, contacts, …): AGENTS.md as a regular file and CLAUDE.md as a symlink (mode 120000) pointing at it. The file was also reformatted onto the same template as those repos, which resolves both of @phil-davis's comments.

Statements that did not match the repository:

Claimed Actual
js/ is compiled output js/documents.js, js/settings-admin.js, js/settings-personal.js, js/viewer/ are hand-written; only js/web/richdocuments.js is generated from src/
src/ is TypeScript/JavaScript src/editor.vue + src/index.ts, i.e. Vue + TypeScript, built with @ownclouders/extension-sdk
tests/ holds PHPUnit and integration tests tests/unit/ (PHPUnit) and tests/acceptance/ (Behat webUI); there are no integration tests
Build with make appstore, test with phpunit -c phpunit.xml make appstore calls occ integrity:sign-app unconditionally and needs release certificates; make dist is the local build. Test targets are make test-php-unit / make test-acceptance-webui
No license detected, pending OSPO audit AGPL-3.0, declared in appinfo/info.xml and in the header of every source file
Classic (OC10) master targets ownCloud 11 on PHP 8.3; branch 4.2 targets ownCloud 10.11+ on PHP 7.4

Also added two constraints an agent needs and could not infer: make test-php-unit resolves PHPUnit at ../../lib/composer/bin/phpunit, so it only runs with the app checked out as apps/richdocuments inside a server tree; and js/web/richdocuments.js is a committed build artefact that must be regenerated with pnpm build, never hand-edited.

README license statement

The badge and the ## License section both linked a LICENSE file that does not exist here, and the migration section said "Current license: Not detected." The app is AGPL-3.0. The License section now states that, and the migration section uses the same "Category X per Apache policy" wording as the merged core and oauth2 READMEs. The genuinely missing piece — this repository has no root LICENSE/COPYING file — is now called out as OSPO follow-up work and listed as a migration prerequisite, rather than presented as an unknown license.

No license file was added in this PR; that is the OSPO's call, not a docs change.

README content restored and fixed

The rewrite dropped documentation that existed only in the old README. Restored: registering the connector in the ownCloud Web config.json (external_apps), the Collabora admin interface URL, the Settings -> Admin -> Additional path, the mutual-reachability notes, and the SonarCloud badges. Fixed: the Docker Hub badge was missing its repository segment and rendered as "404: badge not found"; the manual install snippet ran occ from inside apps/, where it does not exist.

Verification

  • README renders correctly on GitHub — every badge fetched and confirmed to render a real label (License: AGPL-3.0, docker pulls: 33M, quality gate passed, security A, coverage 0%)
  • All relative links in README.md and AGENTS.md resolve to files that exist; no LICENSE link remains
  • All external links return 200, with one exception — see below
  • AGENTS.md is mode 100644 and CLAUDE.md is mode 120000 pointing at AGENTS.md, matching the other repos
  • Every make target and pnpm script named in AGENTS.md exists
  • Diff touches documentation only; no source, build or workflow files
  • CI green

Notes for a maintainer

Three things found while verifying, deliberately not changed here:

  1. https://yeswehack.com/programs/owncloud-bug-bounty-program returns 404. It appears in SECURITY.md and the README security section, byte-identical to the already-merged owncloud/core, so this is org-wide OSPO boilerplate. Left consistent rather than guessing a replacement URL — worth fixing across all repos at once.
  2. make appstore will ship these files. It rsyncs the whole tree with an explicit exclude list that drops CONTRIBUTING.md but not the new root files, so AGENTS.md, CLAUDE.md, CODE_OF_CONDUCT.md, SECURITY.md and SUPPORT.md would end up inside the signed marketplace tarball. make dist is unaffected (it copies only $(all_src)). Fixing it means touching the Makefile, which would break this PR's docs-only scope.
  3. SonarCloud coverage reads 0%, so the restored coverage badge is honest but unflattering. The PHPUnit suite runs in CI without a coverage report reaching SonarCloud.

Per the earlier bot comment, the AGENTS.md content should get an explicit human read before merge, since agents will load it as instructions. That review is the point of this PR now.

@dj4oC
dj4oC requested review from DeepDiver1975 and kobergj May 28, 2026 08:07
…iles

Introduced by the Kiteworks Open Source Program Office (OSPO) on May 5, 2026.

Changes:
- README.md: rewritten with OSPO v2 template — license-specific migration
  guidance, Community & Support section, Contributing workflow, Security
  section pointing to security.owncloud.com + YesWeHack bug bounty
- agents.md: AI agent context file with architecture, build commands, and
  OSPO Policy Constraints (GitHub Actions, Dependabot, Git Workflow)
- CODE_OF_CONDUCT.md: redirect to https://owncloud.com/contribute/code-of-conduct/
- CONTRIBUTING.md: redirect to https://owncloud.com/contribute/
- SECURITY.md: redirect to https://security.owncloud.com + YesWeHack
- SUPPORT.md: redirect to https://owncloud.com/contact-us/ + channels

OSPO: https://kiteworks.com/opensource

Signed-off-by: David Walter <david.walter@kiteworks.com>
@dj4oC
dj4oC force-pushed the ospo/community-health-v2 branch from e7b6357 to 2120d6b Compare June 2, 2026 06:26

dj4oC commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author
  • Security: no findings — see note below
  • Stability: no findings
  • Performance: no findings
  • Test coverage: N/A (docs-only PR)
  • TODOs found: none
  • Dependency touched: no
  • CI status: not evaluated (see below)
  • Stale review: no

Policy hit — root-directory edits. This PR adds/rewrites root-level files (README.md, agents.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md, SUPPORT.md). Per this bot's operating rules, root-directory edits are never auto-processed — commenting and stopping; a maintainer must review and merge manually.

Separately flagging for human attention: this PR introduces agents.md, described in the PR body as an "AI agent context file" meant to load into Claude Code / GitHub Copilot, applied identically across ~110 repos org-wide and opened under this bot's own account. Given that future AI coding agents (including this one) will read that file automatically as instructions, please have a maintainer explicitly read and sign off on its contents before merge rather than relying on automated review.


Generated by Claude Code

Comment thread agents.md Outdated
- `css/` — Stylesheets
- `templates/` — PHP templates for server-side rendering
- `l10n/` — Localization/translation files
- `tests/` — PHPUnit and integration tests

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `tests/` — PHPUnit and integration tests
- `tests/` — PHPUnit and acceptance tests

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied. The file is now AGENTS.md and says:

- `tests/` - PHPUnit and acceptance tests (`tests/unit/`, `tests/acceptance/`)

Confirmed against the tree: tests/unit/ holds the PHPUnit suite (the only suite in phpunit.xml) and tests/acceptance/features/webUISecureView/ the Behat webUI feature. There are no integration tests, so the original wording was wrong on both counts.

Comment thread agents.md Outdated
pnpm install # Install JavaScript dependencies
pnpm build # Build ownCloud Web connector
composer install # Install PHP dependencies
phpunit -c phpunit.xml # Run PHP unit tests

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we list the make commands here, like was done in the agent files in other repos?

# Test (PHPunit)
make test-php-unit

# Test (WebUI Acceptance)
make test-acceptance-webui

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes — done, and the whole file is now on the same template as the other agent files (# AI Agent Guidelines for ..., ## Repository Overview bullets, make targets with # labels), so it reads the same as core, oauth2, activity etc.

The build/test block is now:

# Show all available targets
make help

# Build distribution tarball
make dist

# Install PHP dependencies
composer install

# Build the ownCloud Web connector (src/ -> js/web/)
pnpm install
pnpm build

# Test (PHPUnit)
make test-php-unit

# Test (WebUI Acceptance)
make test-acceptance-webui

# Lint (PHP code style)
make test-php-style

# Fix code style
make test-php-style-fix

# Lint (JavaScript/TypeScript)
pnpm lint

# Static analysis
make test-php-phan
make test-php-phpstan

# Clean build artifacts and dependencies
make clean

Every target above was checked to exist in the Makefile. Three things I deliberately did not copy from the other repos, because they do not hold here:

  • No bare make. .DEFAULT_GOAL := help, so make only prints the help text. make dist is the build.
  • No make appstore. The original file listed it as the build command, but it calls occ integrity:sign-app unconditionally and needs a key and certificate in ~/.owncloud/certificates/, so it only works for releases. make dist skips signing when no certificate is present. This is now called out under Important Constraints.
  • No make test-acceptance-api. The target exists, but tests/acceptance/features/ only contains the webUI feature, and CI only runs do-webui-tests: true. Listing it would send agents at an empty suite.

I also added the gotcha that make test-php-unit resolves PHPUnit at ../../lib/composer/bin/phpunit, so it only runs with the app checked out as apps/richdocuments inside a server tree — not from a standalone clone.

oc-tmueller and others added 2 commits September 9, 2026 10:49
Aligns this repository with the convention already merged across the ownCloud
organisation (core, oauth2, user_ldap, activity, contacts and others): AGENTS.md
as a regular file, plus CLAUDE.md as a symlink pointing at it so Claude Code
reads the same content as every other agent.

The file is also rewritten to the template used by the sibling app repos, which
answers both review comments, and the statements that did not match this
repository are corrected:

- js/ holds hand-written classic frontend code; only js/web/richdocuments.js is
  generated, from src/, and must not be edited by hand
- src/ is Vue plus TypeScript, built with @ownclouders/extension-sdk
- tests/ contains PHPUnit unit tests and Behat webUI acceptance tests, not
  integration tests
- the make targets that actually exist are documented instead of a bare phpunit
  invocation, together with the constraint that make test-php-unit resolves
  PHPUnit at ../../lib/composer/bin/phpunit and therefore needs the app checked
  out as apps/richdocuments inside an ownCloud Server tree
- make appstore is the signed-release target and needs certificates in
  ~/.owncloud/certificates; make dist is the local build. A bare make only
  prints help, since .DEFAULT_GOAL is help
- the app is AGPL-3.0, as declared in appinfo/info.xml and in the header of
  every source file, rather than of an undetermined license
- master targets ownCloud 11 on PHP 8.3 while branch 4.2 targets ownCloud 10.11
  and later on PHP 7.4

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
The rewritten README claimed the license was "Not detected" and linked a LICENSE
file that does not exist in this repository, so both the badge and the License
section were dead links. The app is AGPL-3.0: appinfo/info.xml declares it and
every source file carries an AGPL-3.0 header. The License section now says so and
the migration section uses the same "Category X per Apache policy" wording as the
already merged core and oauth2 READMEs. That this repository still has no root
LICENSE/COPYING file is called out as OSPO follow-up work, and listed as a
migration prerequisite, instead of being presented as an unknown license.

The rewrite also dropped documentation that only existed in the old README. The
instructions for registering the connector in the ownCloud Web config.json are
restored, along with the Collabora admin interface URL, the admin settings path
and the note that Collabora and ownCloud must be able to reach each other. The
SonarCloud badges are restored as well.

Two further fixes:

- the Docker Hub badge URL was missing its repository segment and rendered as
  "404: badge not found"; it now points at owncloud/server
- the manual installation snippet ran occ from inside apps/, where it does not
  exist, so the clone target is now given explicitly and occ is run from the
  server root

The heading no longer says OC10, because master targets ownCloud 11.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
@oc-tmueller
oc-tmueller requested a review from a team as a code owner September 9, 2026 08:49
@oc-tmueller
oc-tmueller requested review from phil-davis and removed request for DeepDiver1975 September 9, 2026 08:51
@oc-tmueller
oc-tmueller merged commit 1607fc5 into master Sep 9, 2026
13 checks passed
@oc-tmueller
oc-tmueller deleted the ospo/community-health-v2 branch September 9, 2026 09:13
@oc-tmueller

Copy link
Copy Markdown
Contributor

Correction to note 2 in the description above, now filed as #622.

I wrote that the new root files "would end up inside the signed marketplace tarball". That overstates it. Releases are unaffected: release.yml sets artifact-glob: build/dist/richdocuments.tar.gz and the reusable workflow runs make dist, which copies only $(all_src) and so excludes all of them. make appstore writes to build/richdocuments.tar.gz instead, and nothing in CI consumes it.

So the leak is confined to a legacy target that the release pipeline no longer uses. #622 covers it with the accurate scope, including the 18 root entries appstore currently packages beyond all_src.

oc-tmueller added a commit to owncloud/conan-center-index that referenced this pull request Sep 10, 2026
Add the OSPO community health files this repository was missing, following
the conventions settled by owncloud/richdocuments#601.

AGENTS.md documents what this repository actually is - a detached copy of
conan-io/conan-center-index, not a GitHub fork - and the constraints that
follow from that: upstream recipes are never hand-edited, upstream is
resynced by replacing the tree rather than merging, and upstream's version
pruning forces conanfile.py bumps on every resync. CLAUDE.md is a symlink
to it, matching core, oauth2, user_ldap and activity.

README.md is rewritten to cover the layout, the four ownCloud-only recipes,
the resync procedure and the license, keeping the build instructions added
when the workflow was dropped.

CODE_OF_CONDUCT.md and CONTRIBUTING.md are deliberately omitted: upstream
owns the recipe contribution process, upstream's CONTRIBUTING.md was
removed here on purpose, and docs/code_of_conduct.md already ships upstream's.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
oc-tmueller added a commit to owncloud/conan-center-index that referenced this pull request Sep 10, 2026
Add the OSPO community health files this repository was missing, following
the conventions settled by owncloud/richdocuments#601.

AGENTS.md documents what this repository actually is - a detached copy of
conan-io/conan-center-index, not a GitHub fork - and the constraints that
follow from that: upstream recipes are never hand-edited, upstream is
resynced by replacing the tree rather than merging, and upstream's version
pruning forces conanfile.py bumps on every resync. CLAUDE.md is a symlink
to it, matching core, oauth2, user_ldap and activity.

README.md gains the layout, the four ownCloud-only recipes, the build and
publish commands that .github/workflows/conan.yml was the only record of,
the resync procedure and the license.

Both record that the Artifactory remote is gone: artifactory.owncloud-demo.com
is NXDOMAIN (checked 2026-09-10) and no replacement has been chosen, so
nothing can be published or pulled and every dependency must be built from
source. An agent that believes packages are obtainable prebuilt will draw
the wrong conclusion when a build fails.

CODE_OF_CONDUCT.md and CONTRIBUTING.md are deliberately omitted: upstream
owns the recipe contribution process, upstream's CONTRIBUTING.md was
removed here on purpose, and docs/code_of_conduct.md already ships upstream's.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants