docs(ospo): community health rollout v2 — README, agents.md, health files - #601
Conversation
…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>
e7b6357 to
2120d6b
Compare
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 Generated by Claude Code |
| - `css/` — Stylesheets | ||
| - `templates/` — PHP templates for server-side rendering | ||
| - `l10n/` — Localization/translation files | ||
| - `tests/` — PHPUnit and integration tests |
There was a problem hiding this comment.
| - `tests/` — PHPUnit and integration tests | |
| - `tests/` — PHPUnit and acceptance tests |
There was a problem hiding this comment.
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.
| pnpm install # Install JavaScript dependencies | ||
| pnpm build # Build ownCloud Web connector | ||
| composer install # Install PHP dependencies | ||
| phpunit -c phpunit.xml # Run PHP unit tests |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 cleanEvery 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, somakeonly prints the help text.make distis the build. - No
make appstore. The original file listed it as the build command, but it callsocc integrity:sign-appunconditionally and needs a key and certificate in~/.owncloud/certificates/, so it only works for releases.make distskips signing when no certificate is present. This is now called out under Important Constraints. - No
make test-acceptance-api. The target exists, buttests/acceptance/features/only contains the webUI feature, and CI only runsdo-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.
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>
|
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: 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 |
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>
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>
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.
AGENTS.mdChanges after review
The generated content was checked against this repository and corrected. Two commits on top of the original one.
agents.md→AGENTS.md, plus aCLAUDE.mdsymlinkMatches the convention already merged across the organisation (
core,oauth2,user_ldap,activity,contacts, …):AGENTS.mdas a regular file andCLAUDE.mdas a symlink (mode120000) 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:
js/is compiled outputjs/documents.js,js/settings-admin.js,js/settings-personal.js,js/viewer/are hand-written; onlyjs/web/richdocuments.jsis generated fromsrc/src/is TypeScript/JavaScriptsrc/editor.vue+src/index.ts, i.e. Vue + TypeScript, built with@ownclouders/extension-sdktests/holds PHPUnit and integration teststests/unit/(PHPUnit) andtests/acceptance/(Behat webUI); there are no integration testsmake appstore, test withphpunit -c phpunit.xmlmake appstorecallsocc integrity:sign-appunconditionally and needs release certificates;make distis the local build. Test targets aremake test-php-unit/make test-acceptance-webuiappinfo/info.xmland in the header of every source filemastertargets ownCloud 11 on PHP 8.3; branch4.2targets ownCloud 10.11+ on PHP 7.4Also added two constraints an agent needs and could not infer:
make test-php-unitresolves PHPUnit at../../lib/composer/bin/phpunit, so it only runs with the app checked out asapps/richdocumentsinside a server tree; andjs/web/richdocuments.jsis a committed build artefact that must be regenerated withpnpm build, never hand-edited.README license statement
The badge and the
## Licensesection both linked aLICENSEfile 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 mergedcoreandoauth2READMEs. The genuinely missing piece — this repository has no rootLICENSE/COPYINGfile — 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, theSettings -> Admin -> Additionalpath, 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 ranoccfrom insideapps/, where it does not exist.Verification
License: AGPL-3.0,docker pulls: 33M,quality gate passed,security A,coverage 0%)README.mdandAGENTS.mdresolve to files that exist; noLICENSElink remainsAGENTS.mdis mode100644andCLAUDE.mdis mode120000pointing atAGENTS.md, matching the other reposmaketarget andpnpmscript named inAGENTS.mdexistsNotes for a maintainer
Three things found while verifying, deliberately not changed here:
https://yeswehack.com/programs/owncloud-bug-bounty-programreturns 404. It appears inSECURITY.mdand the README security section, byte-identical to the already-mergedowncloud/core, so this is org-wide OSPO boilerplate. Left consistent rather than guessing a replacement URL — worth fixing across all repos at once.make appstorewill ship these files. It rsyncs the whole tree with an explicit exclude list that dropsCONTRIBUTING.mdbut not the new root files, soAGENTS.md,CLAUDE.md,CODE_OF_CONDUCT.md,SECURITY.mdandSUPPORT.mdwould end up inside the signed marketplace tarball.make distis unaffected (it copies only$(all_src)). Fixing it means touching theMakefile, which would break this PR's docs-only scope.Per the earlier bot comment, the
AGENTS.mdcontent should get an explicit human read before merge, since agents will load it as instructions. That review is the point of this PR now.