{"id":79522,"date":"2026-04-27T14:28:57","date_gmt":"2026-04-27T14:28:57","guid":{"rendered":"https:\/\/owncloud.com\/?p=79522"},"modified":"2026-04-27T14:28:57","modified_gmt":"2026-04-27T14:28:57","slug":"your-pr-was-written-by-an-ai-we-dont-care-but-we-do-have-rules","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/your-pr-was-written-by-an-ai-we-dont-care-but-we-do-have-rules\/","title":{"rendered":"Your PR was written by an AI. We don&#8217;t care. (But we do have rules.)"},"content":{"rendered":"<p>Last year, a community member built two complete oCIS (ownCloud Infinite Scale) web extensions, a photo gallery and an advanced search, without writing a single line of code manually:<\/p>\n<ul>\n<li>Architecture conversations with Claude.<\/li>\n<li>Scaffolding generated by Claude Code.<\/li>\n<li>Implementation through iterative prompting.<\/li>\n<li>Debugging via browser DevTools screenshots pasted into the chat.<\/li>\n<\/ul>\n<p>The extensions passed review. They were merged. They work in oCIS 8.0.<\/p>\n<p>We published the full workflow as a guide on owncloud.dev. That guide is the foundation for our AI-Assisted Contribution Policy, launching May 5th.<\/p>\n<p>The policy:<br \/>\nWe welcome AI-assisted contributions. We do not reject PRs because an AI wrote the code. We do not require contributors to be &#8222;senior developers.&#8220; We do not gatekeep based on how you created the work. Because beautiful things should not require a CS degree, and the right to build was never supposed to belong only to those who already know how. We lost a lot of ideas in that gap. The code doesn\u2019t need to be pretty. But the thing it does? Needs to be beautiful (and enterprise ready).<\/p>\n<p>Four rules:<\/p>\n<ol>\n<li><strong>Disclosure<\/strong>. Tell us in the PR description that you used AI tools. Name the tool. This isn&#8217;t stigma. It&#8217;s transparency.<\/li>\n<li><strong>Comprehension<\/strong>. You must understand what the code does. &#8222;The AI wrote it&#8220; is not an answer to a reviewer&#8217;s question. You&#8217;re the author. The AI is your tool.<\/li>\n<li><strong>Testing<\/strong>. Unit tests for logic. Manual testing for UI. PRs without test coverage come back.<\/li>\n<li><strong>Code quality<\/strong>. AI-generated code accumulates cruft. Run a cleanup pass before submitting. Our CI lints.<\/li>\n<\/ol>\n<p>The philosophical point:<br \/>\nGreat ideas should not be blocked by someone&#8217;s programming seniority. The review bar doesn&#8217;t change.<br \/>\nHow the code got written is not our concern. That it meets the standard is.<\/p>\n<p>Tomorrow: a governance charter for people who&#8217;ve been burned before.<\/p>\n<p>&#8212;<\/p>\n<p><em>This is part 7 of this blog post series. <\/em><br \/>\n<em>See the earlier posts:<\/em><\/p>\n<ol>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/a-re-introduction-to-the-owncloud-community\/\">A (re)-introduction to the ownCloud community<\/a><\/em><\/li>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/what-happens-when-you-fork-twice-get-acquired-and-keep-shipping-anyway\/\">What happens when you fork twice, get acquired, and keep shipping anyway<\/a><\/em><\/li>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/we-killed-our-own-cla-heres-why-thats-a-good-thing\/\">We killed our own CLA. Here\u2019s why that\u2019s a good thing<\/a><\/em><\/li>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/php-8-3-yes-for-classic-yes-we-heard-you\/\">PHP 8.3. Yes, for Classic. Yes, we heard you<\/a><\/em><\/li>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/what-108-repositories-taught-us-about-open-source-hygiene\/\">What 108 repositories taught us about open source hygiene<\/a><\/em><\/li>\n<li><em><a href=\"https:\/\/owncloud.com\/blogs\/im-a-script-kid-running-an-ospo-thats-the-point\/\">I&#8217;m a script kid running an OSPO. That&#8217;s the point<\/a><\/em><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>We don&#8217;t care if an AI wrote your pull request. Last year a community member shipped two oCIS extensions that way. Here are the four rules that make it work.<\/p>\n","protected":false},"author":50,"featured_media":78665,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[43],"tags":[],"class_list":["post-79522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/comments?post=79522"}],"version-history":[{"count":3,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79522\/revisions"}],"predecessor-version":[{"id":79525,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79522\/revisions\/79525"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media\/78665"}],"wp:attachment":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media?parent=79522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=79522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=79522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}