[Proposal] Copyright Agreement Acceptance Process for Content Upload in Open edX Studio
See Github ticket. Please provide feedback before Nov 4, 2025.
TL;DR
Add a core (not a plugin), admin-configurable feature in Open edX Studio that, when enabled, requires authors to accept a copyright acknowledgment before uploading to Files & Uploads. This proposal introduces a lightweight, reusable acknowledgment step in Studio, enforced via a banner interface and tracked via the existing Agreements framework (with minor extensions). This aligns Open edX with Canvas and Moodle, improves compliance and auditability, and establishes a foundation for future policy gates (e.g. DEI acknowledgments, research consent).
Problem
As Open edX is increasingly used by large institutions to manage high volumes of course content, many organizations may seek clearer ways to communicate copyright expectations to authors. Today, Studio provides no built-in mechanism to remind users of copyright responsibilities, request acknowledgment, or record that acknowledgment. This creates a gap for institutions that want a simple, visible step to promote responsible content use, especially in self-service authoring environments where oversight is distributed across many course teams. While this feature does not prevent copyright violations or eliminate risk, it gives organizations a transparent way to set expectations, surface policy, and log acknowledgment activity as part of their broader governance practices.
Use Cases
As a course author, I need to acknowledge copyright responsibilities before uploading content.
As an administrator, I need a verifiable log of user agreement acceptances to demonstrate compliance with copyright policy and laws during audits.
Proposed Solution
Introduce an optional acknowledgment step in Studio that administrators can enable to display policy reminders, starting with copyright, before file uploads. The goal is not to enforce legal compliance, but to provide institutions with a lightweight governance tool that helps communicate expectations, surface policy, and log acknowledgment activity where needed.
This solution builds on and extends the existing Agreements framework to support general-purpose acknowledgments in Studio. Although the first implementation focuses on copyright, the framework will be flexible enough to support future institutional policies such as research consent or DEI statements.
Offering this capability also brings Open edX closer to feature parity with platforms such as Canvas and Moodle, which already include optional policy gates in their content workflows.
Framework Enhancements
Extend the Agreements module to support general-purpose agreements (e.g. copyright, research consent, DEI policies).
Track user ID, agreement type, acceptance timestamp, and include a required “last updated” date.
Support both inline markdown content and external links (currently only links are supported).
Implement natively in the core platform (not as a plugin), ensuring consistent adoption across institutions.
Store acceptance data in the user-agreements table.
Provide REST API endpoints to query agreement status.
Support filtering (e.g. ?after=...) for compliance audits and reporting
Studio UI Integration
Display a dismissible consent banner when a user attempts to upload content without having accepted the agreement.
Require users to accept the agreement before uploads are enabled.
Disable the file upload interface until the user clicks “Accept.”
Enable uploads immediately upon acceptance (no page reload required).
Include a “Learn More” link to relevant policy or legal guidance.
Show the banner only once unless the agreement is updated.
Competitive Research
Most major LMS platforms already implement built-in mechanisms to mitigate institutional liability by requiring copyright acknowledgments from instructors:
Canvas LMS: Instructors see prompts to set usage rights when uploading or bulk-publishing files.
Moodle: Includes a “site policy agreement” that users must agree to before using the system, including when uploading content.
D2L Brightspace: Supports institutional policy acknowledgment at login or by specific activity (e.g., course creation, resource sharing).
The absence of this functionality in Open edX Studio represents a notable compliance blind spot, placing the platform at a disadvantage in institutional adoption contexts—particularly where legal and regulatory frameworks demand auditable content governance. A lightweight, flexible copyright agreement feature would close this gap and bring Open edX in line with established LMS norms.
Risks and Mitigations
This section outlines potential risks associated with introducing a copyright agreement feature in Studio and how each has been addressed in the proposed design.
Risk | Mitigation |
Potential legal exposure for Open edX | The feature will be fully configurable and disabled by default. Open edX will provide no default or suggested policy text. Institutions must explicitly enable the feature and supply their own agreement text and/or policy links. |
Administrative overhead when updating agreements | Include an optional “last updated” field in the agreement model to support version control |
Pushback on gating content upload | Keep the feature optional and configurable at the site level (via Django settings or SiteConfiguration), so institutions can adopt it only where required by policy |
Scope creep to other agreement types | Build for extensibility (e.g. “gating” course creation, or publishing), but limit MVP scope to file uploads |
Concerns about storing legal text in the platform | Support both inline text and external policy links, enabling institutions to reference their own hosted policy documents rather than storing legal content in Open edX. |
Implementation Overview
Component | Description |
edx-platform | Extend |
Studio (frontend) | Add logic to check agreement status and display blocking UI until accepted |
REST API |
|
Agreement Storage | Store either markdown content or external URL in the model |
User Table | Associate user ID with agreement ID, and timestamp |
Other approaches considered and why they don’t work
Custom Plugin
Would silo (isolate) the functionality, requiring institutions to maintain their own solutions, leading to duplicated effort and inconsistent adoption.Manual Checklists
Not enforceable, not trackable, and disconnected from platform workflows, offering no real compliance guarantee.External Training
Even with training, institutions remain legally vulnerable if users claim they were unaware of their obligations.
By embedding agreement enforcement directly into the Studio experience, we provide a systemic, enforceable, and auditable solution that scales across institutions.
Next Steps (if approved)
If this proposal is approved, here’s what we suggest:
Review the current UI and UX to make sure it follows Open edX design standards and is easy to use.
Test the feature with real users (e.g. universities, hosting providers) to gather feedback on clarity, ease of use, and any friction during acceptance.
Refine the implementation based on user feedback and any technical improvements needed. For example:
Move the code into the core platform (or a core plugin), it’s currently in a standalone plugin.
Create a proper API to fetch the agreement’s update date and URL (instead of relying on the Site Configuration API).
Consider adding backend validation to block uploads if needed, not just on the frontend.
Submit the work for upstream product and architectural review to confirm it’s suitable for core Open edX.
Prepare a final pull request, including documentation for Studio authors and admins.
Long-term Ownership
Upon approval, OpenCraft will take responsibility for the implementation and long-term stewardship of the features outlined in this proposal.
Request for Community Feedback
We welcome input on the following areas:
The proposed technical model for storing, displaying, and versioning agreement content
Potential use cases beyond copyright, e.g. research consent, DEI policy acknowledgment
Other actions that might benefit from gating (e.g. video uploads, course publishing). While our initial proposal supports site-level configuration, we’d like input on whether finer-grained control, at the organization or even course level, would be valuable.