Tools and Technology Standards

Please add notes of the standard tools/technologies that we have accepted and recommend for use at edX.  
For example, do we think that they are Backbone, JS, Python, etc… Apiary, Jenkins, DBs, App Servers, etc…

If we have legacy technology we are using, we can note it, but we should make it clear that it's not a recommended standard.

General

  • Languages:
  • Recommended Local Storage:
    • MySQL
    • Mongo (for course content)
  • Recommended Cloud Storage:
    • AWS
  • Recommended IDE:
  • Development Task management:
    • Dev tasks: Make, paver (deprecated)
    • JS-specific tasks: gulp (not-yet implemented)
  • CI: Github Actions
  • Testing
    • Styling: pep8, pylint, ESLint
    • UI unit tests: Jasmine (test execution), karma (runner, js-test-tool is flagged for eventual deprecation)
    • Acceptance tests: Cypress
    • Load tests: n/a
  • Documentation

Note: Forums is currently implemented in Ruby and Sinatra, but should be ported to Python and Django eventually.

Mobile Apps

  • Android
    • Language: Java
    • Dependency Injection: Dagger
    • Recommended IDE: Android Dev Studio
  • iOS
    • Language: Swift and Objective-C
    • Recommended IDE: XCode
  • Build Tool: Gradle
  • CI: Travis
  • Test Framework: TBD ?

Analytics

This section is out-of-date.

 Click for possibly out-of-date analytics details...
  • Recommended Data Processing Environment:
    • Hadoop (EC2 & EMR)
    • Luigi
  • Recommended Data Storage:
    • HDFS (AWS S3) + Hive
    • MySQL
    • Vertica (Postgres DB) on EC2
  • Not Recommended Data Discovery/Visualization:
    • segment.io
    • Splunk (would like to replace with Vertica)
    • IPython Notebooks (occasionally used for experimental development)
  • Recommended Data Discovery/Visualization:
    • Google Analytics
    • Tableau
    • DataDog
  • Recommended CI:
    • Jenkins
  • Languages:
    • Server-side: Python (Django)
    • Client-side: Javascript (Backbone, Underscore, RequireJS, D3/NVD3), HTML, CSS (SASS)
  • Dev task management: gulp
  • Testing:
    • Unit tests: Python unittest
    • UI unit tests: jasmine (tests), karma (runner)
    • Acceptance tests: Bok Choy

Search Tools

  • Elastic Search

Observability Tools

Performance Tools

API Development