Problem: Very few are going to generate and send the Survey Report.

Status: Product definition

Overview

In order to have the information necessary to constantly improve Open edX, the "Survey Report" project was created. This project allows administrators to send anonymized information about their initiatives. This information is received by axim and among other uses it feeds the annual report.

The report contains:

  • Total number of active unique courses.

  • Total number of recently active users with login in the last 4 weeks.

  • Total number of users ever registered in the platform.

  • Total number of active enrollments in the platform.

  • Total number of generated certificates.

  • Extra information that admins can configure to send along (the current version in master contains no info here and there have been discussions about adding the release version. No decision has been reached)

Generating a report is currently done in the admin panel under /admin/survey_report/surveyreport/. It is available since the Palm release


Problem

There is no mechanism for sending the report to be done automatically and to do it manually you have to remember to do it by entering Django admin and among all the options, look for the one that says "Survey report" and then click the “Generate Report” button. Considering that and that the functionality is new and relatively unknown, very few are going to generate and send the report.


Solution

We propose the following solutions and recommend implementing both.
However, we are open to hearing other possible solutions to this problem.

 

Solution A - Invite people to send reports

Implement an announcement functionality that work similarly to the Wikipedia fundraising banner. Two times a year the administrators with the is_superuser flag will be presented with a banner explaining what the report is, who it is sent to, what do we do with it and asking that they create one. A call to action will let them create the report immediately and also a button will allow them to close the banner.

Here a prototype: https://www.figma.com/proto/AHJsaK1EMFGqCL4V2wnWtB/Survey-report?type=design&node-id=1-2&t=9OownqvY6GW3A4O5-1&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=1%3A2

The banner would have the following message:

The Open edX Project relies on the collective strength of its community to be a thriving platform for online education.

Open edX is a dynamic ecosystem and it is used in diverse learning environments. By sharing anonymized reports of aggregated data, you can contribute to the collective knowledge of the community. This data can help us all understand the reach of our project, make better decisions and ultimately support innovation in lifelong learning and advance next generation learning experience platforms.

We invite you to join the Open edX Data Sharing Initiative by sharing an anonymized reports of aggregated data from your institution's usage of the platform. The report data will be sent to Axim Collaborative, the non-profit behind the Open edX project.

If you agree and want to send a report you can click the button below. You can always send reports and see the status of reports you have sent in the past at /admin/survey_report/surveyreport/.

[Send report button]
[Dismiss]

 

Behaviour
This banner would be shown to users when the following conditions are met:

  • There is no report generated in the last 6 Months.

  • The user has both the is_staff and is_superuser flags set as true.

  • The user is navigating any page in the /admin/* path.

  • There is no record of the message being dismissed in the last 6 Months.

  • There is a feature_flag or other configuration setting to completely turn off the banner.

 

Access to this functionality by roles in Django Admin

Role

Can see

Can use

Superadmin (is_superuser)

X

X

Admin (is_staff)

-

-

 

Solution B - Make it easy to send reports automatically

Creating a tutor plugin that asks an Opt-in question during tutor local/k8s launch. If users accept to send reports, then the tutor plugin will run a cronjob service (either in docker compose or kubernetes).

This plugin must be pip installed and enabled, but it could be included in the tutor[full] distribution such that following the regular instructions of how to use tutor to install will have it in their environments.


Behaviour

  • During tutor quickstart, when a user has answered that the installation is for production usage, another question will pop during the wizard: “Would you like to send anonymized reports of usage back to the Open edX project?”

  • Users that answer Yes will have a cronjob installed either at the server or a job in the k8s directory where the manifest is written.

  • As users that have this feature enabled will generate reports every six months, then they will never see the banner from solution A.

  • Should operators disable the cronjob then the time will come that the last report is older than 6 Months and they will be shown the banner again, unless they turn it off via the configuration variable.


Rejected alternatives

  • The first alternative explored to get scheduled reports was to add celerybeat as a dependency in the core project. This was discussed in the openedx forums and ultimately discarded.

 

Plan for long-term ownership/maintainership

edunext is commited to build and contribute this work as part of the unidigital (spanish government) project. As part of that commitment, edunext would commit to maintain the feature for a minimum of 2 years and after that, either find a suitable maintainer to hand it over to, or to follow a the deprecation procedure in case the feature has any inconvenience or its maintenance is a burden that no one can carry.