-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Add an OEP defining the use of OpenFeature for feature toggles #663
base: master
Are you sure you want to change the base?
Conversation
Thanks for the pull request, @blarghmatey! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. 🔘 Update the status of your PRYour PR is currently marked as a draft. After completing the steps above, update its status by clicking "Ready for Review", or removing "WIP" from the title, as appropriate. Where can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
4fa741c
to
42e9350
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @blarghmatey, thank you for your submission!
I added a few style comments to the doc, hopefully they'll help fix the build. I only skimmed for style concerns in this pass.
Any thoughts as to who might make a good Arbiter for this OEP? They'll help drum up reviewers, post to the forums, etc as per OEP-1. Let me know how I can help!
42e9350
to
020c309
Compare
020c309
to
4a111d6
Compare
toggles as a core practice of the Open edX suite of software. Unfortunately, the | ||
implementation of that practice has led to a large variety in the methods used to manage | ||
those toggles, and dramatically different naming across repository boundaries. The | ||
adoption of the `OpenFeature <https://openfeature.dev/>`_ specification and associated |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Some questions:
- Is it expected that someone needs to read and become familiar with all of https://openfeature.dev/ as part of accepting this proposal, or is it possible to summarize what we are taking from the spec?
- If the original OEP still stands, and this is just an extension of it, it still might make sense to add a note and link in the original toggle OEP.
- OpenFeature has features like Hooks and Events. Are those compatible with chained providers? Would we need to explain in which ways these could and could not be used?
- Does OpenFeature have details around how toggles should be annotated that would override any of the ADRs or How-Tos in edx-toggles? See https://edx.readthedocs.io/projects/edx-toggles/en/latest/readme.html.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for opening this @blarghmatey .
Separate but related: Feanil and I are currently trying to radically simplify our edx-platform settings. Any input or help you can provide there is appreciated.
OEP 17 provided an excellent and valid argument in favor of the adoption of feature | ||
toggles as a core practice of the Open edX suite of software. Unfortunately, the | ||
implementation of that practice has led to a large variety in the methods used to manage | ||
those toggles, and dramatically different naming across repository boundaries. The |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed on the motivation. It is currently too hard to determine whether any given Open edX feature is enabled and how to toggle it on/off. The naming is inconsistent, there are many outdated toggles, and the interplay between Django settings and the various kinds of Waffle flags gets confusing. The edx-toggles abstraction layer was intended to smooth things out, but it seems to have only been partially rolled out, so I currently see it as only adding to the complexity.
Tutor has both made this better (by automating the toggling for most deployers) and worse (by adding another layer of abstraction for us to worry about).
The adoption of OpenFeature as the implementation target for Open edX software also | ||
provides flexibility to operators of the software to use the toggle management service | ||
that they prefer. This improves the ability of Open edX to fit into an existing | ||
operations environment without forcing the site operators to conform to the use of | ||
operations technologies that they are not familiar with. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm seeking more detail on how we would use OpenFeature. The spec is quite involved and it'll take me some time to absorb their model of providers, values, and evaluation. Any code snippets of what you're thinking, even pseudo/informal code snippets, would be really helpful.
Does this replace or wrap Django settings? Same question site/org/course/experiment waffle flags. My understanding is that this would be a wrapper layer, but correct me if I'm wrong there. I am also presuming that this would replace edx-toggles so that we don't have two separate abstraction layers wrapping our toggles, but again, tell me if you're thinking otherwise.
Lastly, does this imply a separate microservice, or is it a library we install into edx-platform and/or the frontend apps?
No description provided.