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.
- e.g., anonymizing via GDPR
- Model dependency
- 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?
- Keeping the Analytics Data API as a contract.
- 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.
- What data is aggregated and not aggregated?
- 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.