Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
maxLevel1

1.

...

XBlocks can depend on Django (Decided) 

Summary

xBlocks can use standard Django features, such as Django models and Django i18n services, without needing to depend on custom xBlock runtimes to provide these services.

...

  • Component / Feature cohesion
  • Eliminate Deployment dependencies
  • Studio and LMS become mostly Frontend Views

5. Plugins and SOLID Principles: edx-platform becomes a Plugin Platform (

...

Decided)

Summary

To reverse the direction of the monolithic evolution of the edx-platform, it is necessary to have individual apps plugin to the platform and follow the S.O.D. of the SOLID principles as described in Django App Plugin.  Additionally, to support the varying feature requirements and experimentation by the open edX community (and within edx.org), a plugin framework provides a powerful flexibility that keeps the edX core as an invulnerable and stable platform but a welcoming enabler.

...

Motivation

6. Automated Communication Engine (In Progress)

Summary

Use edX ACE as the notifications framework for automatically sending messages to users.

History

  • Fall 2014: Design of edx-notifications for McKinsey
  • Sep 2016: Design of Notifications: System diagram, with learnings from above
  • Fall 2017: RET team implements ACE, based on above 

Motivation

A common extensible and scalable messaging framework used by all edX features that handles personalization, translations, policies and configurability.

7. OLX Data Format and Versioning (Todo)

8. Ubiquitous Language (In Progress)

  • CatalogCourse
  • CourseRun
  • Content-Provider Organization
  • User-Provider Organization
  • Credit-Accessor Organization

9. Testing Best Practice (Todo)

10. API Best Practice (Todo)

11. Domain-driven Design Principles

  • Build vs Buy → Core, Supporting, Generic
  • Location of code (which IDA? which app?) → Bounded Context Responsibilities and Boundaries
  • API as a Product → Domain models
  • Inter-service interfaces → Business use cases
  • Inter-service communication and relationships → Bounded Context life cycles versus Entity-based Services 

12. Celery usage

  • celery-utils capabilities - LoggingTask and PersistOnFailureTask
  • Using kwargs instead of positional args
  • For real-time synchronization with management command as fallback of celery failures

13. Authorization (In Progress)