Figures, lightweight analytics, with John Baldwin

Figures, lightweight analytics, with John Baldwin

Design Doc

Goals

  • Fill niche between instructor dashboard and insights

  • Share with other Open edX community to save effort, and community involvement

Customer profiles

  • Corporations doing training on their products - training customers and training sales people

  • Organization that has number of franchises

    • (Future) Single Dashboard without going to multiple courses/places

Topics

  • Coupling

    • Model dependency

      • Currently, pulling from Django models and Mongo data.

    • Testing

      • Unit testing within the app via Pytest

      • Integration testing

    • Integration points

      • e.g., anonymizing via GDPR

        • May need hooks so the core platform would know to call registered listeners.

  • Technology roadmap alignment (React, etc)

  • Integration with edX pipeline and platform

    • Want real-time data and not be downstream of pipeline

    • Needing REST APIs in the platform

    • Possible future

      • Keeping the Analytics Data API as a contract.

        • Then have implementations plugin.

      • Could reuse frontend and React components

      • Analytics Data API

        • Option 1: Could theoretically pip install into the LMS

        • Option 2: Make Analytics Data API a container for Plugins of Data APIs

          • edx-pipeline generated data

          • figures data API

          • enterprise data API

      • Further future: can the data or API be declared instead of being imperative?

  • Data

    • What data is aggregated and not aggregated?

      • Right now, only keeps aggregated data - so no PII.

      • Total users and enrollments.

    •  What time series?

      • Activity at a particular time.

  • Maintainability

    • Right now targeting Ginkgo

    • APIs go away or Data models change

Other Notes

  • Currently the Frontend is fully dependent on APIs, so dashboard can be replaced.

  • Next iteration will have custom reports, can be added as widgets.

  • Currently, reverse engineering the instructor dashboard code to understand the data model usage.

  • They use APIs where they exist.

    • Couldn't find enrollments API.

    • Using Course Blocks API.

  • CSV reports will contain user data.

    • If there is no cache or local storage of that data, then it might be fine.

  • Adding APIs

    • OSPRs would be against master; while they are on Ginkgo.

    • Need an API to list the users per course, with filtering.

    • edX is also planning to invest in APIs - needed for Frontend and Backend split as well.

      • However, thinking about those APIs from the business needs perspective, not necessarily from the data model perspective.

      • Can look at Figures' business requirements as input to API discussion.

  • Would like to see

    • More things pulled out of the core.

  • For Insights, we depended on the event log rather than the SQL models.

    • We assumed the models would change more often.

    • While the event log could be translated.

    • Historically, though, it seems we never really changed our models.

  • edX.org's scale would likely not be able to execute Figures as is it currently designed.

  • Currently, testing out rebuilding the LMS - in React with decoupled backend.

  • Cron tab

    • Pulls from platform's data and puts in Figures' data model

    • Figure's frontend calls APIs in Platform LMS as well as APIs for aggregated data in Figures

  • Are real-time use cases a reality?

    • How is progress going on a daily basis, generally.

    • Going through the day, hour-by-hour

      • for example, for communication campaign

    • Jill's post in Discourse also asked for real-time

    • edX has heard about the flipped classroom use case - where educator wants to know about learner's activity.

  • Lightning talk - CSS modules

  • As long as endpoints with APIs are maintained, with advanced notice of changes/deprecation.

Whiteboard of Option 2 possible future