Document the various integration points for platform extensions - #24057
Conversation
|
Thanks for the pull request, @bradenmacdonald! I've created OSPR-4580 to keep track of it in JIRA. JIRA is a place for product owners to prioritize feature reviews by the engineering development teams. Feel free to add as much of the following information to the ticket:
All technical communication about the code itself will still be done via the GitHub pull request interface. As a reminder, our process documentation is here. |
|
The ADR bot didn't send a notification about this. It isn't watching docs/*.rst: https://github.com/edx/pr_watcher_configuration/blob/master/config.yml#L4-L9 |
pomegranited
left a comment
There was a problem hiding this comment.
@bradenmacdonald Thank you for this! Left some nits, but that's it.
FYI, if you could hold off addressing these nits until openedx/pr_watcher_configuration#12 is merged and deployed, then we can test that the ADR alerts happen as expected.
| | | | contexts. However, Blockstore-based content libraries are. | | ||
| | | | See |learning_context.py|_ to learn more. | | ||
| +---------------------+------------------------------------------+-------------------------------------------------------------+ | ||
| | User partition | ``openedx.user_partition_scheme`` and | A user partition scheme is a named way for dividing users | |
There was a problem hiding this comment.
Oo cool, I didn't know about this one!
|
@bradenmacdonald Thank you for your contribution. @nasthagiri Will you review this? |
Right, I should have mentioned that I was going to open a PR to address that after this one had been reviewed, but now @pomegranited has done that for me - thanks :) |
|
@natabene @bradenmacdonald Reviewing this PR is now at the top of my backlog. I will prioritize this tomorrow. Thanks! |
| @@ -0,0 +1,165 @@ | |||
| Options for Extending the edX Platform | |||
There was a problem hiding this comment.
@bradenmacdonald Thank you for taking the time to put this together.
There was a problem hiding this comment.
@nasthagiri Thanks for the quick and helpful review! I've addressed all your comments.
| .. contents:: **Integration Methods Overview** | ||
|
|
||
|
|
||
| REST API Integration with External Applications |
There was a problem hiding this comment.
Can we add something like Support Level to each of these?
While the xBlock and Django App Plugin interfaces are intended for versioned support, we have yet to invest that time on our REST APIs. By listing it in this doc (and also as the 1st item), I am concerned folks will expect them to be stable APIs. At this time, only a few of our REST APIs are expected to be versioned and maintained for compatibility. Once we invest in standardizing our API practices (listed in Needed Architecture Investments), we will have a better foundation to support more stable REST APIs.
There was a problem hiding this comment.
Can we add something like Support Level to each of these?
Once again, perhaps a field or some-such to indicate
Support levelwould be useful.
In Tech Radar speak, we have the following categories:Adopt,Trial (or Invest),Assess, andHold. See their definitions in this glossary. I believe a similar rating for each of the extensions in this doc would be useful to let people know the support level of its usage.
Sure, in my latest commit, I've proposed a new Status (Adoption and Completion) scheme, and added my best guess for each one. Please take a look!
| .. |UserPartition docstring| replace:: ``UserPartition`` docstring | ||
| .. _UserPartition docstring: https://github.com/edx/edx-platform/blob/f8cc58618a39c9f7b8e9e1001eb2d7a10395797e/common/lib/xmodule/xmodule/partitions/partitions.py#L105-L120 | ||
|
|
||
| Platform Look & Feel |
|
I've taken Nimisha's suggestion, and added "guides" as a directory the bot watches. |
|
Your PR has finished running tests. There were no failures. |
nasthagiri
left a comment
There was a problem hiding this comment.
This looks great @bradenmacdonald!
Thanks for adding the status (adoption and completion) values. I'm hoping those will clarify our recommendations for folks.
I'll go ahead and squash before merging.
|
@bradenmacdonald 🎉 Your pull request was merged! Please take a moment to answer a two question survey so we can improve your experience in the future. |
|
EdX Release Notice: This PR has been deployed to the staging environment in preparation for a release to production. |
|
EdX Release Notice: This PR may have caused e2e tests to fail on Stage. If you're a member of the edX org, please visit #e2e-troubleshooting on Slack to help diagnose the cause of these failures. Otherwise, it is the reviewer's responsibility. E2E tests have failed. https://gocd.tools.edx.org/go/tab/pipeline/history/deploy_to_stage |
|
EdX Release Notice: This PR has been deployed to the production environment. |
| - A "Django app plugin" is a self-contained Django `Application`_ that can define models (MySQL tables), new REST APIs, signal listeners, asynchronous tasks, and more. Even some parts of the core platform are implemented as Django app plugins, for better separation of concerns (``announcements``, ``credentials``, ``grades``, etc.) Read the `Django app plugin documentation`_ to learn more. | ||
|
|
||
| Plugins can also inject custom data into django template contexts, to affect standard pages delivered by the core platform. See `Plugin Contexts`_ to learn more. |
There was a problem hiding this comment.
FYI: We are in process of moving this to edx-django-utils. See openedx/edx-django-utils#48
There was a problem hiding this comment.
FYI: We are in process of moving this to edx-django-utils. See openedx/edx-django-utils#48
OK, cool. Could you please update this doc at the same time, to point to that new home for the functionality?
There was a problem hiding this comment.
Oops. I thought this hadn't landed yet because I got a 404 on: https://github.com/open-craft/edx-platform/blob/master/docs/guides/extension_points.rst
I didn't realize I was searching in the wrong org. We can update the following accordingly:
https://github.com/edx/edx-platform/blob/master/docs/guides/extension_points.rst
Thanks.
As far as I know, we're missing a comprehensive guide to all the different ways that plugins or applications can integrate with Open edX. Here's my attempt to fix that :)
Now that we have Automatic notifications of ADR changes, my thought is that we can use the ADR watcher bot to watch this document as well, so that anyone who has asked to be notified of architectural decisions will get pinged when someone opens a PR that proposes a new extension point (provided their PR includes a change to this doc file).
Open question: is https://github.com/edx/edx-platform/blob/master/docs/guides/index.rst published somewhere in compiled form? It contains Sphinx directives that GitHub doesn't render, but I couldn't find a compiled version of it. If we're just using GitHub to view it (which I think is great), we should probably drop the
toctreeetc.