Versions Compared

Key

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

...

  1. Create a new XBlock in its own Git repository
  2. Create a new IDA (independently deployable application)
    • If a feature doesn't need to be tightly integrated into Studio or the LMS then it can be built as an independent app
    • It can make use of the Open edX ReST APIs to get any platform data that it requires
    • IDAs are a good choice when:
      • They need to scale independently of the edX platform
      • They will be built, deployed and managed by a separate team
      • LMS and Studio should continue unaffected even if the application goes down
    • Consider the following before choosing to make a new IDA:
      • There is more operational complexity for the community to deploy and manage your feature
      • There are performance implications with introducing extra network calls
      • There is more application complexity when working with related data from external APIs, e.g. joins and referential integrity must be implemented in the application layer
    • Examples of IDAs:
    • See the documentation below: Create a new IDA
  3. Create a new Django app in its own Git repository
    • New Django apps can be implemented in a separate repo and pip installed into the platform
    • A Django app in its own repository is a good choice when:
      • it provides new services that will be consumed by other parts of the platform
      • if it requires new UI for LMS or Studio, it provides it via extensions and does not introduce new URLs
  4. Add a new Django app to the edX platform
  5. Update the platform directly
    • This is the option of last resort
    • When should you update the platform directly?
      • When the feature you are implementing updates core functionality in fundamental ways
      • When there are no extension points that you can use to build the functionality you need
    • Consider the following before doing this:
      • Features which update the platform directly require the most scrutiny in code review
      • There is far more risk of unexpected fallout from your changes
      • Consider whether it is possible to introduce a platform extension point and then use it
      • Be sure to discuss your proposed approach with the Open edX community first to ensure that this is the best way to move forward
    • Examples:
    • See the documentation below: Update the platform directly

For more background when making this decision, see these architecture council meeting notes: 2015.09.23 - IDA discussion.

...

...