Benefits
Reduce bandwidth usage:
The RESPECT launcher and data saver proxy can create a distributed content delivery network (CDN) that reduces your bandwidth bill. The RESPECT launcher app on user devices creates a distributed HTTP cache; if any other device on a local network has an asset it need not be downloaded again from the Internet. HTTP assets can also be cached at a national and mobile operator / ISP level, further reducing the bandwidth usage for app developers. National and mobile operator caches can enable lower data access costs for mobile network subscribers.
Simplified data sovereignty compliance:
Storing personal data using standard educational data APIs such as xAPI, OneRoster, and AGS enables straightforward compliance with data sovereignty and privacy regulations.
One line of code offline mode:
The librespect cache makes it easier than ever to provide users with uninterrupted learning. When a user requests a lesson for offline use simply pass the cache a list of URLs that are required. Once the download completes http requests for any required URLs will run as normal, even if the device is offline. The cache can be used as a proxy http server (running on localhost) or via OKHttp on Android/JVM.
Architecture
RESPECT defines two API roles (as per OneRoster spec):
- Provider: an app that provides supported educational APIs (xAPI, OneRoster, AGS) that provide information on student enrollments, progress, grades, etc; typically a Student Information System (SIS) / educational single sign-on platform
- Consumer: an app that accesses supported educational APIs (xAPI, OneRoster, AGS); typically a Learning Management System (LMS), courseware app (e.g. a math or other subject app), or assessment app.
Components:
- In-country data center
- Educational data APIs HTTP server: provides supported educational APIs over HTTP (using OAuth authentication). The APIs include student/teacher information, enrollment, gradebooks, assignments, and learner progress.
- Consumer app docker containers (optional): if a consumer app requires its own server side functions to process personal data, this can be run in-country using docker container(s). Containers can be firewalled to communicate only with the Educational data APIs server and prevent any possibility of personal data being sent to an unauthorized destination.
- HTTP datasaver proxy: the data saver can reduce data usage for any http assets a consumer app requires that do not contain personal information (e.g. videos, ebooks, game data, etc).
- Caching assets locally closer to the user is likely to make access faster and can potentially help reduce the cost to users.
- Compression: audio, video, and images can be automatically compressed, unless the cache-control: no-transform parameter is used by the origin server.
- User devices
- RESPECT launcher app: the RESPECT launcher app allows a user to launch any RESPECT compatible consumer app installed (subject to any admin policies) on the device and be instantly signed-on. The RESPECT launcher app may also be used to launch specific Learning Units in compatible consumer apps by specifying the Learning Unit ID (URL). The launcher app provides services for consumer apps:
- Shared assets distributed cache: a shared cache service that can communicate with other nearby devices on the same local network such that assets already downloaded by a nearby device need not be downloaded again from the Internet. The shared cache can also, if enabled by the user, download HTTP assets required for Learning Units assigned to logged in learners.
- Educational data API smart cache: the smart cache answers educational data API requests on behalf of the main educational data API server in a more resilient and performant manner:
- If the device is offline educational data API requests can still be answered using all data available on the local device and a conformant response can be generated. For example, if a student’s grade was updated, however this update has not yet synced to the server, the smart cache can still provide a list of all of the student’s grades even though the URL for this API call itself is not cached.
- Change operations can be handled without the consumer app needing to worry about connectivity: grades and progress information can be stored and updated locally. When the device is reconnected the launcher app will send updates to the Educational data API server.
- RESPECT launcher app: the RESPECT launcher app allows a user to launch any RESPECT compatible consumer app installed (subject to any admin policies) on the device and be instantly signed-on. The RESPECT launcher app may also be used to launch specific Learning Units in compatible consumer apps by specifying the Learning Unit ID (URL). The launcher app provides services for consumer apps:
- Mobile network operator or ISP (optional)
- HTTP datasaver proxy: A mobile network operator can, if they desire, operate HTTP asset cache(s) on their own network. This enables the operator to eliminate any marginal cost for upstream bandwidth when their subscribers download HTTP assets for compatible RESPECT consumer apps.
- App developer server:
- Consumer app assets HTTP server: this can be any HTTP server operated by the Consumer app developer (e.g. Apache HTTP server, Amazon AWS, Azure, etc). The app developer’s server does not contain user’s personal information.
[Make my app RESPECT compatible quickstart]
Build a RESPECT provider and launcher
See the technical specifications.