{"id":79794,"date":"2026-06-19T17:03:22","date_gmt":"2026-06-19T17:03:22","guid":{"rendered":"https:\/\/owncloud.com\/?p=79794"},"modified":"2026-06-19T17:03:22","modified_gmt":"2026-06-19T17:03:22","slug":"owncloud-web-extensions-repo-is-now-apache-2-0-were-going-all-in","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/owncloud-web-extensions-repo-is-now-apache-2-0-were-going-all-in\/","title":{"rendered":"ownCloud web-extensions Repo Is Now Apache 2.0. We&#8217;re Going All In."},"content":{"rendered":"<h3>A Programme Starts Producing: First Repo Done<\/h3>\n<p>When we <a href=\"https:\/\/owncloud.com\/blogs\/kiteworks-launches-the-owncloud-open-source-program-office\/\">launched the OSPO <\/a>in May 2026, we said <a href=\"https:\/\/opensource.org\/license\/apache-2.0\" target=\"_blank\" rel=\"noopener\">Apache 2.0<\/a> is the target licence for ownCloud. We put it in writing in the <a href=\"https:\/\/kiteworks.com\/open-source\" target=\"_blank\" rel=\"noopener\">manifesto<\/a>. We said the relicensing programme was underway.<\/p>\n<p>Today it starts producing results.<\/p>\n<p><a href=\"https:\/\/github.com\/owncloud\/web-extensions\" target=\"_blank\" rel=\"noopener\">owncloud\/web-extensions<\/a> \u2014 the repository for ownCloud web extension development \u2014 has been relicensed from AGPL-3.0 to Apache-2.0. It&#8217;s the first ownCloud repository to complete the relicensing process under the OSPO-driven migration programme. <a href=\"https:\/\/github.com\/owncloud\/web-extensions\/pull\/443\" target=\"_blank\" rel=\"noopener\">PR #443<\/a>, authored by <a href=\"https:\/\/github.com\/LukasHirt\" target=\"_blank\" rel=\"noopener\">Lukas Hirt<\/a>.<\/p>\n<p>This is the beginning of a systematic programme across the ownCloud ecosystem.<\/p>\n<h3>Why AGPL-3.0 Had to Go<\/h3>\n<p>The Apache Software Foundation&#8217;s <a href=\"https:\/\/www.apache.org\/legal\/resolved.html\" target=\"_blank\" rel=\"noopener\">third-party licence policy<\/a> classifies <a href=\"https:\/\/opensource.org\/license\/agpl-3-0\" target=\"_blank\" rel=\"noopener\">AGPL-3.0<\/a> as <a href=\"https:\/\/www.apache.org\/legal\/resolved.html#category-x\" target=\"_blank\" rel=\"noopener\">Category X<\/a>: a licence that is incompatible with <a href=\"https:\/\/opensource.org\/license\/apache-2.0\" target=\"_blank\" rel=\"noopener\">Apache 2.0<\/a> and therefore cannot be used in ASF projects. If any ownCloud component were to be contributed upstream to an Apache project \u2014 and oCIS, with its CS3\/reva stack and open federation standards work, has reasons to be there \u2014 an AGPL-3.0 licence on our web extension layer would block that path.<\/p>\n<p>That&#8217;s a theoretical concern right now. But we&#8217;re building for the ecosystem, not just for today&#8217;s deployment needs. A relicensing decision made now, before the dependency graph gets complicated, is worth a hundred conversations about compatibility later.<\/p>\n<p>Beyond the ASF policy, <a href=\"https:\/\/opensource.org\/license\/apache-2.0\" target=\"_blank\" rel=\"noopener\">Apache 2.0<\/a> is the more permissive and procurement-friendly choice. European public sector customers don&#8217;t need to wrestle with <a href=\"https:\/\/opensource.org\/faq#copyleft\" target=\"_blank\" rel=\"noopener\">copyleft <\/a>obligations. Enterprise developers building web extensions don&#8217;t need to worry about AGPL&#8217;s network-use provisions. Apache 2.0 means: use it, build on it, ship it, don&#8217;t worry about the licence.<\/p>\n<h3>What the PR Actually Changes<\/h3>\n<p>Lukas Hirt&#8217;s commit is thorough. This wasn&#8217;t a licence-file swap \u2014 it was a proper relicensing with compliance infrastructure built in:<\/p>\n<ul>\n<li><strong>The licence itself.<\/strong> LICENSE file replaced with Apache-2.0 full text. The &#8222;license&#8220; field updated in all package.json files.<\/li>\n<li><strong>REUSE 3.x compliance.<\/strong> A REUSE.toml file and LICENSES\/ directory structure added, following the FSFE specification. REUSE makes it possible to programmatically verify that every file has a clear licence declaration \u2014 essential for SBOMs and procurement.<\/li>\n<li><strong>NOTICE file.<\/strong> Third-party attributions documented as Apache 2.0 requires.<\/li>\n<li><strong>CI licence checks.<\/strong> Two new pipeline jobs: license-check (running reuse lint on every PR) and dependency-license-check (verifying no incompatible dependency has crept in). Licence compliance is now automated \u2014 it can&#8217;t regress silently.<\/li>\n<li>README badge and docs updated.<\/li>\n<li><strong>DCO sign-off.<\/strong>Signed-off-by: Lukas Hirt.. \u2014 the Developer Certificate of Origin that replaced the old CLA at OSPO launch. Contributors keep their copyright.<\/li>\n<\/ul>\n<h3>Why web-extensions First<\/h3>\n<p>web-extensions is the framework for building oCIS web extensions \u2014 the layer that third-party developers build on, that community contributors extend, and that we&#8217;ve been encouraging AI-assisted development on since we published the AI development guide.<\/p>\n<p>An AGPL-3.0 licence on the extension framework creates friction for exactly the contributors we want to attract: product managers building custom extensions, students creating lab projects, partners integrating oCIS with their platforms. Apache 2.0 removes one of the bigger reasons they&#8217;d hesitate.<\/p>\n<h3>This Is a Programme, Not a One-Off<\/h3>\n<p>web-extensions is the first. It won&#8217;t be the last.<\/p>\n<p>The OSPO relicensing programme is a structured audit across 108 repositories. Each repo goes through a four-tier classification: already Apache 2.0, relicensable after copyright audit, needs careful evaluation, or a fork that carries the upstream licence. web-extensions cleared the audit. The PR is the result.<\/p>\n<p>We&#8217;re not publishing a roadmap of which repos follow in which order \u2014 the audit takes the time it takes, and we&#8217;re not skipping steps. But the direction is clear.<\/p>\n<p>We said Apache 2.0 is the target. This is what the target being achieved looks like, one repo at a time.<\/p>\n<p>&#8212;<\/p>\n<p><em>Lukas Hirt is a Collaborator on the ownCloud web-extensions repository. This work was done as part of the OSPO-driven relicensing programme.<\/em><em>ownCloud OSPO:<\/em> ospo@kiteworks.com \u00b7 <a href=\"https:\/\/kiteworks.com\/opensource\" target=\"_blank\" rel=\"noopener\">kiteworks.com\/opensource<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we launched the OSPO in May, we said Apache 2.0 was the target licence. Today the first repo crosses the line. web-extensions has been relicensed from AGPL-3.0, with REUSE compliance and CI licence checks built in. A relicensing decision made now, before the dependency graph gets complicated, is worth a hundred conversations about compatibility later.<\/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,332,335,337,509,344,621,339,44],"tags":[],"class_list":["post-79794","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-coding","category-development","category-foss","category-infinite-scale","category-opensource","category-ospo","category-owncloud","category-updates"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79794","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=79794"}],"version-history":[{"count":5,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79794\/revisions"}],"predecessor-version":[{"id":79799,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/79794\/revisions\/79799"}],"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=79794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=79794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=79794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}