Skip to content
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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

blarghmatey
Copy link

No description provided.

@openedx-webhooks openedx-webhooks added the open-source-contribution PR author is not from Axim or 2U label Jan 15, 2025
@openedx-webhooks
Copy link

openedx-webhooks commented Jan 15, 2025

Thanks for the pull request, @blarghmatey!

This repository is currently maintained by @sarina.

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 approval

If you haven't already, check this list to see if your contribution needs to go through the product review process.

  • If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.
    • This process (including the steps you'll need to take) is documented here.
  • If it doesn't, simply proceed with the next step.
🔘 Provide context

To 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:

  • Dependencies

    This PR must be merged before / after / at the same time as ...

  • Blockers

    This PR is waiting for OEP-1234 to be accepted.

  • Timeline information

    This PR must be merged by XX date because ...

  • Partner information

    This is for a course on edx.org.

  • Supporting documentation
  • Relevant Open edX discussion forum threads
🔘 Get a green build

If 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 PR

Your 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:

  • The size and impact of the changes that it introduces
  • The need for product review
  • Maintenance status of the parent repository

💡 As a result it may take up to several weeks or months to complete a review and merge your PR.

@blarghmatey blarghmatey force-pushed the tmacey/oep_openfeature branch from 4fa741c to 42e9350 Compare January 16, 2025 21:12
@blarghmatey blarghmatey marked this pull request as ready for review January 16, 2025 21:57
Copy link
Contributor

@sarina sarina left a 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!

oeps/best-practices/oep-0066-bp-openfeature-toggles.rst Outdated Show resolved Hide resolved
oeps/best-practices/oep-0066-bp-openfeature-toggles.rst Outdated Show resolved Hide resolved
oeps/best-practices/oep-0066-bp-openfeature-toggles.rst Outdated Show resolved Hide resolved
oeps/best-practices/oep-0066-bp-openfeature-toggles.rst Outdated Show resolved Hide resolved
oeps/best-practices/oep-0066-bp-openfeature-toggles.rst Outdated Show resolved Hide resolved
@blarghmatey blarghmatey force-pushed the tmacey/oep_openfeature branch from 42e9350 to 020c309 Compare January 21, 2025 21:57
@blarghmatey blarghmatey requested a review from ormsbee January 21, 2025 21:57
@blarghmatey blarghmatey self-assigned this Jan 21, 2025
@itsjeyd itsjeyd added the waiting for eng review PR is ready for review. Review and merge it, or suggest changes. label Jan 24, 2025
@kdmccormick kdmccormick self-requested a review February 6, 2025 13:01
@blarghmatey blarghmatey force-pushed the tmacey/oep_openfeature branch from 020c309 to 4a111d6 Compare February 6, 2025 21:45
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Some questions:

  1. 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?
  2. 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.
  3. 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?
  4. 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.

Copy link
Member

@kdmccormick kdmccormick left a 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.

Comment on lines +49 to +52
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
Copy link
Member

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).

Comment on lines +56 to +60
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.
Copy link
Member

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?

@itsjeyd itsjeyd added waiting on author PR author needs to resolve review requests, answer questions, fix tests, etc. and removed waiting for eng review PR is ready for review. Review and merge it, or suggest changes. labels Feb 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open-source-contribution PR author is not from Axim or 2U waiting on author PR author needs to resolve review requests, answer questions, fix tests, etc.
Projects
Status: In Eng Review
Development

Successfully merging this pull request may close these issues.

6 participants