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

engine: MVP of enabling experimental experiments using richer input #2553

Closed
bassosimone opened this issue Oct 10, 2023 · 1 comment
Closed
Assignees
Labels

Comments

@bassosimone
Copy link
Contributor

bassosimone commented Oct 10, 2023

This issue is about writing an MVP for enabling experimental experiments (currently riseupvpn and echcheck) conditionally through the check-in API. These experiments would always be disabled and only become enabled if the check-in API says so through feature flags (which were added as part of the richer input work).

This issue advocates for writing an MVP where we use the results of previous check-in API calls (typically performed, when running tests automatically, before invoking the Web Connectivity experiment). A more structured solution would modify the flow with which we run experiments to call the check-in API unconditionally once and at the beginning, so these feature flags are always up to date.

As a reminder, experimental experiments are experiments that we just added, so we're not 100% sure about them, or experiments that are historically flaky, so we want to be defensive.

Here's a functional specification of what to do:

  • when instantiating a new experiment
  • unless OONI_FORCE_ENABLE_EXPERIMENT=1 is set in the environment
  • if the experiment name is one of "riseupvpn" and "echecheck"
  • do not construct the experiment unless a feature flag like "${name}_enabled": true exists

This means that these experiments are disabled by default and we control whether to enable them with check-in.

@bassosimone bassosimone self-assigned this Oct 10, 2023
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 10, 2023
We have a class of experiments that I call experimental experiments.

As a reminder, experimental experiments are the ones we have just
added in a development cycle and which may potentially have issues
down the line, so that we may want to disable them while working
on an emergency release to fix them.

Currently, riseupvpn and echechk fall into this class.

The idea of this diff is to implement the functional specification
described by issue ooni/probe#2553.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
## Checklist

- [x] I have read the [contribution
guidelines](https://github.com/ooni/probe-cli/blob/master/CONTRIBUTING.md)
- [x] reference issue for this pull request:
ooni/probe#2553
- [x] if you changed anything related to how experiments work and you
need to reflect these changes in the ooni/spec repository, please link
to the related ooni/spec pull request: N/A
- [x] if you changed code inside an experiment, make sure you bump its
version number

## Description

We have a class of experiments that I call experimental experiments.
These are experiments that we just added, so we're not 100% sure about
them, or experiments that are historically flaky, so we want to be
defensive.

Currently, riseupvpn and echechk fall into this class.

The idea of this diff is to implement the functional specification
described by issue ooni/probe#2553.

While there, make sure we have more robust testing for the
`./internal/registry` package.

While there, make sure package creation logic lives in
`./internal/registry` rather than in `./internal/engine`.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
While there, emit some logs while running it.

While there, make the warning emitted when a nettest is disabled
much more specific and informative for the user.

Part of ooni/probe#2547

Part of ooni/probe#2553
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
While there, emit some logs while running it.

While there, make the warning emitted when a nettest is disabled much
more specific and informative for the user.

Part of ooni/probe#2547

Part of ooni/probe#2553
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
There may be upcoming changes in torsf which may cause it to fail
consistently as it occurred during the 3.18 cycle.

Therefore, be defensive and make it disabled by default.

Part of ooni/probe#2553

While there, use slightly better naming for an echcheck function.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
There may be upcoming changes in torsf which may cause it to fail
consistently as it occurred during the 3.18 cycle.

Therefore, be defensive and make it disabled by default.

Part of ooni/probe#2553

While there, use slightly better naming for an echcheck function.
@bassosimone
Copy link
Contributor Author

This work has now been done!

bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
This diff backports #1355 to the release/3.19 branch.

- [x] I have read the [contribution
guidelines](https://github.com/ooni/probe-cli/blob/master/CONTRIBUTING.md)
- [x] reference issue for this pull request:
ooni/probe#2553
- [x] if you changed anything related to how experiments work and you
need to reflect these changes in the ooni/spec repository, please link
to the related ooni/spec pull request: N/A
- [x] if you changed code inside an experiment, make sure you bump its
version number

We have a class of experiments that I call experimental experiments.
These are experiments that we just added, so we're not 100% sure about
them, or experiments that are historically flaky, so we want to be
defensive.

Currently, riseupvpn and echechk fall into this class.

The idea of this diff is to implement the functional specification
described by issue ooni/probe#2553.

While there, make sure we have more robust testing for the
`./internal/registry` package.

While there, make sure package creation logic lives in
`./internal/registry` rather than in `./internal/engine`.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
This diff backports #1358 to the release/3.19 branch.

While there, emit some logs while running it.

While there, make the warning emitted when a nettest is disabled much
more specific and informative for the user.

Part of ooni/probe#2547

Part of ooni/probe#2553
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 11, 2023
This diff backports #1359 to the release/3.19 branch.

There may be upcoming changes in torsf which may cause it to fail
consistently as it occurred during the 3.18 cycle.

Therefore, be defensive and make it disabled by default.

Part of ooni/probe#2553

While there, use slightly better naming for an echcheck function.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 19, 2023
The reference issue is ooni/probe#2553.

When I implemented the disabled-by-default functionality, I missed that
we should also disable-by-default vanilla_tor.

The reason for doing that is that the experiment crashes on Android and
possibly iOS due to ooni/probe#2406.
bassosimone added a commit to ooni/backend that referenced this issue Oct 19, 2023
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 19, 2023
The reference issue is ooni/probe#2553.

When I implemented the disabled-by-default functionality, I missed that
we should also disable-by-default vanilla_tor.

The reason for doing that is that the experiment crashes on Android and
possibly iOS due to ooni/probe#2406.
bassosimone added a commit to ooni/probe-cli that referenced this issue Oct 19, 2023
This diff backports #1374 to release/3.19.

The reference issue is ooni/probe#2553.

When I implemented the disabled-by-default functionality, I missed that
we should also disable-by-default vanilla_tor.

The reason for doing that is that the experiment crashes on Android and
possibly iOS due to ooni/probe#2406.
bassosimone added a commit to ooni/backend that referenced this issue Oct 20, 2023
Murphy-OrangeMud pushed a commit to Murphy-OrangeMud/probe-cli that referenced this issue Feb 13, 2024
## Checklist

- [x] I have read the [contribution
guidelines](https://github.com/ooni/probe-cli/blob/master/CONTRIBUTING.md)
- [x] reference issue for this pull request:
ooni/probe#2553
- [x] if you changed anything related to how experiments work and you
need to reflect these changes in the ooni/spec repository, please link
to the related ooni/spec pull request: N/A
- [x] if you changed code inside an experiment, make sure you bump its
version number

## Description

We have a class of experiments that I call experimental experiments.
These are experiments that we just added, so we're not 100% sure about
them, or experiments that are historically flaky, so we want to be
defensive.

Currently, riseupvpn and echechk fall into this class.

The idea of this diff is to implement the functional specification
described by issue ooni/probe#2553.

While there, make sure we have more robust testing for the
`./internal/registry` package.

While there, make sure package creation logic lives in
`./internal/registry` rather than in `./internal/engine`.
Murphy-OrangeMud pushed a commit to Murphy-OrangeMud/probe-cli that referenced this issue Feb 13, 2024
While there, emit some logs while running it.

While there, make the warning emitted when a nettest is disabled much
more specific and informative for the user.

Part of ooni/probe#2547

Part of ooni/probe#2553
Murphy-OrangeMud pushed a commit to Murphy-OrangeMud/probe-cli that referenced this issue Feb 13, 2024
There may be upcoming changes in torsf which may cause it to fail
consistently as it occurred during the 3.18 cycle.

Therefore, be defensive and make it disabled by default.

Part of ooni/probe#2553

While there, use slightly better naming for an echcheck function.
Murphy-OrangeMud pushed a commit to Murphy-OrangeMud/probe-cli that referenced this issue Feb 13, 2024
The reference issue is ooni/probe#2553.

When I implemented the disabled-by-default functionality, I missed that
we should also disable-by-default vanilla_tor.

The reason for doing that is that the experiment crashes on Android and
possibly iOS due to ooni/probe#2406.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant