You are on page 1of 7

Components – Commonly available open source components, services

Off the shelf open source components /alternatives are available for some of the application and
infrastructure components and external services. In some cases, the same could be used.

 Ecommerce & Payment Processing. (Current framework is Django Otto), Forum, Django Wiki,
Bot (Will Bot)
 Infrastructure components – Hadoop, Elastic Search, MySQL, MongoDB, Nginx, Apache,
RabbitMQ, Celery, Jenkins, Docker, Luigi etc.
 Open Source languages, libraries, frameworks – Node, Python, Django, JS Libraries, testing
libraries, Django DRF, etc.
 Open Source Tools – Audio, Video players, Rich Text Editors
 Other Services/Tools – AWS S3, Segment Analytics, Amazon SES (Bulk Email), New Relic
(Application Performance Monitoring), Asgard (web interface for application deployments and
cloud management in Amazon Web Services (AWS)), Zendesk (customer support).

There are other components like XQueue, external grading services, Open Response Assessment (ORA2),
Sales Force Integration etc. which may have limited relevance here.

Components – Custom developed

Component Complexity Level API support Notes


(dev)
Studio High NA Django App.
(Course Authoring
Environment)
LMS High No Django App. Components like Catalog,
(Learning Management System enrollments, Courses have separate
+ LTI support, consumer of LTI API.
tools)
SCORM XBlock plugin High NA Not supported natively; supported by
third party open source software and
commercial services.
XAPI High NA Recently added support. Sample API
implementations available from
Rustici software.
Analytics High Internal only. Insights, an IDA(Independent Django
Application) handles analytics and
probably is the only one that has
access to the API
Front End High NA Current front end is built mainly using
React, Redux, Django templates, SASS,
Bootstrap other JS libs. (Mako
templates, Backbone, CoffeeScript,
Bourbon (CSS) are being phased out)
Mobile App (Android) High Yes Standard Android Java devstack.
Mobile App (IOS) High Yes Standard IOS Swift, XCode devstack
OLX High No Course interoperability / portability
format between instances.
Admin High No Numerous settings are configurable
from the Django admin interface.
Proctoring High Yes Exam proctoring sub-system.
Credentials Low Yes Service hosting Course and Program
Certificates
Search Engine Medium No Django application to provide
access to search services from
within polyglot-platform
applications.
Video Pipeline (VEDA) High No Video encode automation; Django
app
Xserver High No XServer accepts student code
submissions from the LMS and runs
the code using (separate)
courseware graders; Includes
CodeJail manages execution of
untrusted code in secure
sandboxes. Security is enforced
with AppArmor. If your operating
system doesn't support AppArmor,
then CodeJail won't protect the
execution.
Notifier Medium NA Platform wide notifications
Comments High Yes An independent comment system
which supports voting and nested
comments. 
Accessibility Support High NA Paragon is a pattern library
containing accessible React
components and a SCSS
foundation built on Twitter
Bootstrap.
Zoom Integration Medium NA
Certificates Low Yes Generate Certificates.Monitors
XQueue.
Psychometric Tests High No Supports The Child and Adolescent
Psychiatric Assessment (CAPA).
Apparently mentioned to BA team
the context of Tao and extending it
to support Psychometric tests.
Automated Communication High No The automated communication
Engine (A.C.E) engine, A.C.E. for short, is a Django
app for messaging learners on the
polyglot platform. Email delivery
(via Sailthru and Django Email) are
the currently supported delivery
channels

LMS Components Complexity


Django components that make up LMS:

Component Complexity API support Notes


Badges Low Yes
Branding Low Yes
Bulk Email Low Yes Python APIs exposed by the
bulk_email app to other in-process
apps.
Could use external services like
Amazon SES.
Bulk Enroll Medium Yes Non UI API based. Need to check if
this API is exposed externally.
CCX Medium Yes Custom Courses (CCX). Re-use
existing courses; Custom Coach
needed.
Certificates Medium Yes Also integrates with external grading
services via XQueue.
Class Dashboard No Metrics tab in instructor dashboard;
Medium internal.
Commerce NA NA Deprecated. Older version.
Course API Medium Yes Get list of courses, search for
courses, get course details, etc.
Course Blocks NA ? NA ? Seems specific to Polyglot
architecture. (A class object that
encapsulates the course and user
context to be
used as currency across block
structure transformers, by passing
an instance of it in calls to
BlockStructureTransformer.transform
methods.)
Course Goals Medium Yes Get course goals, add course goals.
Course Wiki NA NA Integration of Django Wiki into
Polyglot.
Courseware Very high. No The courseware Django app is
responsible for presenting course
content to learners. Complex
component that covers:
 Access
 Access utils
 Admin
 Course tools
 Courses
 Entrance exams
 Middleware
 Permissions
 Rules, etc.
Courseware (history NA NA Seems Polyglot specific.
extended)
Courseware Search (lib)
Dashboard Medium No A sysadmin dashboard for managing
and viewing courses.
Debug NA NA Views for debugging and diagnostics;
Seems Polyglot specific.
Discussion NA NA Polyglot Forums.
Polyglot Notes High Yes Display notes to students in various
components; notes service is
separate.
Email Marketing Medium No Email marketing Django application.
Experiments NA NA Related to Experiments.
Gating High Yes Django Gating App (???); API only
internal???
Grades High Yes The grades app is responsible for
computing and storing learners'
grades in Course Runs. It provides
Python and REST APIs for retrieving,
updating, and managing learners'
grades.
Instructor High No Includes:
 Access
 Enrolment Report
 Messaging
 Paid Course Enrolment
Report
 Permissions
Instructor Analytics Medium No Student and course analytics
Instructor Task High Yes Asynchronous Celery Tasks handling.
API is internal & for submitting
instructor tasks.
Learner Dashboard Medium No This Django app hosts dashboard
pages used by Polyglot learners. The
intent is for this Django app to
include the following dashboard tabs:
- Courses
- Programs
This is being replaced by new UI that
is in active development.
LMS Initialization NA NA NA. Internal
LMS XBlock NA NA NA. Internal
LTI Provider High NA Significant testing overhead though
LTI integration itself may not be
difficult.
Mailing NA NA Integration with external mailing list
service.
Mobile API High Yes
OAuth2 Handler High No Oauth testing – significant overhead.
Program Enrollments High Yes Program Enrollments plugin that
allows university partners to enroll
their students in Master's courses on
the edx platform.
RSS Proxy NA NA NA. Internal.
Shopping Cart NA NA NA.Legacy. Replaced by newer apps.
Static Template View NA NA NA. Internal.
Static Book NA NA Serve static books. Relevant?
Support Na NA NA. Student support App
Survey Medium No Survey Application
Teams High Yes Student / Learning Teams
Tests NA NA Internal Tests for Utils Class.
Verify Student Low Yes Verify User Status.
API Coverage
The current Polyglot API covers the following functionalities:

 Bookmarks  Courseware  Mobile


 CCX  Credit  Notifier
 Certificates  Discounts  Organizations
 Cohorts  Discussion  Profile Images
 Commerce  Proctoring  Program Enrollments
 Cohorts  Notes  Team
 Commerce  Embargo  Third Party Auth
 Completion  Enrollment  User
 Course Goals  Entitlements  Val / Video
 Course Modes  Experiments
 Courses  Grades

Note #1: It has to be noted that even when there is an API, it may not provide exhaustive coverage of
the functionality that the UI provides. For example, the User API does not provide a method to create
users; the CCX API does not have a method to create a custom course; the Certificates API cannot
generate a certificate.

Note #2: Significant components like Analytics are not exposed via APIs. There are other major
components like Studio whose functionality cannot be replicated using APIs.

COMPONENTS ALTERNATIVES

Current Alternate Comments


Elastic Search Azure Search
Amazon S3 Azure Blob Storage For Storage
Apache Hadoop Apache Hadoop
Jenkins Azure CI/CD
NGINX NGINX
RabbitMQ Azure Service Bus
Amazon SES SendGrid Bulk Email
MySql MySql
MongoDB MongoDB
New Relic New Relic monitor app performance
ZenDesk ZenDesk

You might also like