[Proposal] Copyright Agreement Acceptance Process for Content Upload in Open edX Studio

[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.

Screenshot 2025-10-07 at 08.19.18.png
Content uploading is disabled until the user accepts the agreement.
Screenshot 2025-10-07 at 08.19.26.png
Content uploading is enabled once the user accepts the agreement.

View the demo here.

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 agreements app to allow registration of new agreement types

Studio (frontend)

Add logic to check agreement status and display blocking UI until accepted

REST API

/api/agreements/v1/agreement/<id> with GET and POST endpoints; add ?after= param

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.