These days we’re primarily supported by the DRL, which is why we do quarterly reporting. That said, we’d like to share monthly updates from the OONI team with the community, hence our January 2022 report shared below. I’ll also follow-up to share our February and March 2022 reports.
# OONI Monthly Report: January 2022
Throughout January 2022, the OONI team worked on the following sprints:
- Sprint 56 (3rd - 16th January 2022)
- Sprint 57 (17th - 30th January 2022)
Our work can be tracked through the various OONI GitHub repositories: https://github.com/ooni
Highlights are shared in this report below.
## OONI Probe apps
In January 2022, Norbel Ambanumben joined the OONI team to lead the development of the OONI Probe mobile app.
In preparation for the next release, various improvements were made to the OONI Probe mobile app, including:
- Annotating measurements coming from VPNs (https://github.com/ooni/probe/issues/1901);
- Faster test startup time;
- Improvements to the progress bar tracking;
- Improvements to the minimisation of running tests (https://github.com/ooni/probe/issues/1976, https://github.com/ooni/probe/issues/1981);
- Adding links to the OONI blog and research reports in the OONI Probe mobile app (https://github.com/ooni/probe-android/pull/472);
- CI fix (https://github.com/ooni/probe/issues/1924).
## OONI Probe Web
We made progress on the backend components required for the operation of OONI Probe Web.
As OONI Probe Web cannot use the same strategy as the OONI Probe apps to discover the country code and network of the probe (since we can’t ship a geoIP database in the client-side app), we had to add backend support for doing this operation. Specifically, we added support for returning geoIP information in the OONI check-in API (https://github.com/ooni/api/pull/276) and performed some quality testing of the db-ip geoIP database.
We are considering eventually using the same mechanism for OONI Probe desktop and mobile probes too, as it would allow us to update the geoIP database without needing to make a new software release.
## OONI Run
We worked on improvements to the OONI Run platform. In particular, we fixed a bug affecting the generation of OONI Run links (https://github.com/ooni/run/issues/100, https://github.com/ooni/run/pull/101), we fixed a bug affecting OONI Run links on iOS (https://github.com/ooni/probe/issues/1978), and we made improvements to how OONI Run is deployed (https://github.com/ooni/run/pull/103).
## Expanding censorship measurement methodologies
We worked on refactoring of the probe-engine codebase in preparation for Websteps development (our new experiment for measuring the blocking of websites). This included code improvements following the first Websteps prototype (https://github.com/ooni/probe/issues/1956).
We also discovered and fixed a bug that was introduced when Websteps was merged (https://github.com/ooni/probe/issues/1808). This bug stems from a change in the logic used by the measurement engine to decide whether to submit measurements. After merging Websteps, we unconditionally stopped submitting measurements for experiments that returned an error. This behavior is correct in that the experiment should return errors only to indicate fundamental failures (e.g., an experiment expecting that a URL is input is passed a string that is not a valid URL) or missing preconditions. However, because previously the core measurement engine did not enforce this rule, several experiments were actually returning an error for network conditions that would otherwise be associated with interesting network measurements.
We discovered this bug while performing extensive QA after merging Websteps. We then needed to ensure that all OONI experiments were correctly returning errors only to signal fundamental failures or missing pre-conditions. As a result, we fixed DASH, ndt7, Psiphon, STUN Reachability and other minor experiments. It is worth noting that no stable OONI release ever shipped with this bug, and we indeed catched the bug because we knew merging Websteps entailed larger changes to the tree, so we chose to perform extensive QA to ensure we were not introducing regressions.
### OONI Probe CLI v3.14.0 pre-release
We released OONI Probe CLI v3.14.0-alpha.1 with support for running our new Tor Snowflake experiment (https://ooni.org/nettest/tor-snowflake/), a refactored Tor experiment, and a series of data quality improvements. Details are available through our pre-release notes: https://github.com/ooni/probe-cli/releases/tag/v3.14.0-alpha.1
Notably, this pre-release includes:
- Support for running the new Tor Snowflake experiment on OONI Probe Mobile and Desktop (https://github.com/ooni/probe/issues/1917);
- Refactored Tor experiment to use the newer underlying measurement library, which allowed us to cleanup legacy code and reduce the overall complexity of the network measurement engine (https://github.com/ooni/probe/issues/1688, https://github.com/ooni/probe/issues/1970, https://github.com/ooni/probe/issues/1545 ).
### Other improvements
We also worked on a series of other improvements. Specifically, we:
- Started designing a new experiment that pings DNS servers over UDP (https://github.com/ooni/probe/issues/1987, https://github.com/ooni/probe-cli/pull/674);
- Researched application-level transparent proxies to understand whether we could use them to perform more realistic QA checks before shipping releases;
- Discovered and discussed a potential data quality issue around how we determine DNS blocking in Web Connectivity, where DNS blocking and HTTP blocking conflict with each other, and HTTP blocking currently takes precedence, chose not to address the bug to keep the overall probe behavior consistent over time, and planned to ensure we don’t have the same issue in websteps (https://github.com/ooni/probe/issues/1975);
- Fixed a bug potentially affecting the quality of measurements where we were not correctly detecting the end of a stream due to differences in how we represent errors and how the Go standard library expected errors to be (https://github.com/ooni/probe/issues/1965);
- Refactoring and improvements the code we use to communicate with the OONI backend trying to make the Go API more robust (https://github.com/ooni/probe/issues/1951);
- Refactored the CLI and engine codebases to increase abstraction and testability (https://github.com/ooni/probe/issues/1885);
- Refactored code we use to collect low-level measurements to reduce measurement code duplication and improve consistency (https://github.com/ooni/probe/issues/1957).
## Blog post on measuring HTTP/3 censorship with OONI Probe
In January 2022, we started hosting Kathrin Elmenhorst for her 3-month OTF Information Controls Research Fellowship.
We had previously worked with Kathrin on adding HTTP/3 support to OONI Probe for measuring HTTP/3 censorship in China, Iran, India, and Kazakhstan. Based on this research, we collaborated on a research paper (“Web censorship measurements of HTTP/3 over QUIC”) which was submitted to AMC Internet Measurement Conference (https://dl.acm.org/doi/abs/10.1145/3487552.3487836).
To share the findings of this research with our broader community, Kathrin wrote a blog post which summarizes the measurement findings. We published this blog post here: https://ooni.org/post/2022-http3-measurements-paper/
## OONI Explorer
OONI Explorer performance was significantly enhanced in January 2022. Migrating to the new Clickhouse-based backend has helped ensure that OONI Explorer queries work faster and more reliably. Now database-intense queries on OONI Explorer load within seconds, enabling users to more effectively track censorship events around the world based on real-time OONI data.
We made a minor update to the OONI Data Policy to mention that OONI Explorer uses Sentry to log crash reports (https://ooni.org/about/data-policy).
## New Circumvention Tool Reachability Dashboard
Throughout January 2022, we worked on creating a new Dashboard which presents aggregate views of real-time OONI data based on the reachability testing of circumvention tools (https://explorer.ooni.org/chart/circumvention).
In particular, this dashboard presents charts based on the reachability testing of Psiphon, Tor, and Tor Snowflake in every country around the world (https://github.com/ooni/ooni.org/issues/774). Through these charts, users can gain a bird’s-eye view on the testing of these tools in each country over time, and plot charts based on the countries and date range of their choice (https://github.com/ooni/explorer/pull/653). As these charts present aggregates of anomalous measurements, it is possible to infer potential cases of blocking (or cases when the tested tools were unreachable on tested networks due to other reasons).
## OONI backend
Throughout January 2022, we worked on migrating the OONI API to the new Clickhouse-based backend in production (https://github.com/ooni/pipeline/pull/371). This resulted in a significant improvement to OONI Explorer performance (which relies on the OONI API), as OONI Explorer queries now work much faster and more reliably.
We expanded OONI’s data analysis capabilities to support processing STUN reachability experiments (https://github.com/ooni/ooni.org/issues/767). The measurements of these tests are very closely related to Tor Snowflake, since the PT relied on STUN for NAT hole punching. We also did further testing and performance improvements to the data analysis code in preparation for the production launch.
Moreover, progress on the OONI API was made to have stable aggregate views for displaying pluggable transport test results (https://github.com/ooni/ooni.org/issues/769). Specifically, we implemented new API endpoints to return:
- The runtime of PT test results;
- The number of PT metrics grouped by country (this allows us to filter in the UI the country list to only those for which we have data).
- Added backend support for scoring measurements collected from the HTTP version of WhatsApp Web (https://github.com/ooni/backend/issues/546);
- Improved the speed of the ooniprobe list command by refactoring the database queries (https://github.com/ooni/probe-cli/pull/662);
- Looked into migrating the ooni.org website to another provider (https://github.com/ooni/ooni.org/issues/1064) to improve its accessibility around the world;
- Carried out some research and experimentation related to enabling third-party analysis of OONI data (https://github.com/ooni/backend/issues/514#issuecomment-1016525686);
- Wrote a document that outlines the features of various OONI measurements that are useful for performing data analysis tasks (in order to extract per-website metrics).
## Improving third party usage of OONI data
To enable third-party use of OONI data (particularly by researchers), we carried out some research and collected feedback on how to improve the user experience for third party consumers of OONI data. As part of this, we decided to offer a Command Line Interface (CLI) tool (called oonidata) that researchers can run to download raw data dumps of OONI data. A summary of this research can be found in this comment: https://github.com/ooni/backend/issues/514#issuecomment-1016525686
## Preparing for a security audit
In preparation for a security audit of OONI software projects, we worked on extensive threat modeling. This involved identifying and mapping all potential threats that could affect various OONI software components, determining the probability, impact, and risk of each potential threat, as well as strategies for mitigation. The documentation that we prepared will support the upcoming security audits of OONI tools.
## Collaboration with Netalitica
Netalitica researchers continued to do excellent work in reviewing and updating the Citizen Lab test lists. In January 2022, we reviewed their updates to the test lists for Singapore, Myanmar, and Vietnam (https://github.com/citizenlab/test-lists/pull/885), as well as their updates to the test lists for Cuba, Cameroon, and Bolivia (https://github.com/citizenlab/test-lists/pull/888).
We also opened a pull request based on Netalitica updates to the test lists for Nicaragua and Ecuador: https://github.com/citizenlab/test-lists/pull/881
## Test list updates
In January 2022, we contributed minor updates to several Citizen Lab test lists, as documented through the following pull requests: https://github.com/citizenlab/test-lists/pull/882, https://github.com/citizenlab/test-lists/pull/883, https://github.com/citizenlab/test-lists/pull/884
We reviewed and merged more than 50 pull requests from the Citizen Lab test list repository, some of which included new contributions via our new web platform (https://test-lists.ooni.org/).
## Created an audio recording for a podcast on technical terms
We created a 10-minute audio recording on “What is the Internet?” for the ABC Digital podcast on “A Glossary of Technological Terms”.
To create this recording, we wrote a script describing what is the internet, which we then recorded and shared with Conflux Center. This recording was subsequently shared with training participants of the “Technologies and Digital Tools for Peacekeeping and Political Missions: Data, Research, Analysis, & Communication” course organized by Conflux Center (https://www.confluxcenter.org/wp-content/uploads/2022/01/Virtual-Course-Catalogue-2022.pdf ).
## Censored Planet data user study
Three OONI team members participated in Censored Planet’s data user study. As part of this user study, we reviewed the new Censored Planet Dashboard and shared feedback through a survey and through interviews with the Censored Planet team.
## Community activities
### OONI training for UN peacekeeping missions
On 25th January 2022, OONI’s Maria facilitated an OONI training (“OONI - Practical exercise measuring Internet censorship”) for UN peacekeeping missions as part of a course (“Technologies and Digital Tools for Peacekeeping and Political Missions: Data, Research, Analysis, & Communication”) organized by Conflux Center.
As part of the training, Maria introduced participants to OONI censorship measurement tools, provided a live demo of using OONI Probe for measuring internet censorship, and facilitated hands-on exercises for using OONI Probe based on real-world scenarios.
Information about the virtual training course is available here: https://www.confluxcenter.org/wp-content/uploads/2022/01/Virtual-Course-Catalogue-2022.pdf
### OONI Probe workshop for partners in Southeast Asia
On 28th January 2022, OONI’s Maria facilitated an OONI Probe workshop for Sinar Project partners in Southeast Asia participating in the iMap Regional Workshop.
As part of this workshop, Maria provided a theoretical overview of OONI Probe and OONI Run, a live demo of using OONI Probe for measuring internet censorship, a live demo for using OONI Run for coordinating censorship testing, and facilitated several hands-on exercises based on real-world scenarios.
### OONI Community Meeting
On 31st January 2022, we hosted the monthly OONI Community Meeting on our Slack channel (https://slack.ooni.org/), during which we discussed RAACT (Resistance Against Automated Content Takedown): a new project led by Tracking Exposed (https://tracking.exposed/) to measure content takedowns on social media platforms (Facebook, Instagram, TikTok, Youtube). As part of the meeting, we discussed how the OONI community could get involved with the RAACT project.
In January 2022, 39,215,688 OONI Probe measurements were collected from 2,634 AS networks in 171 countries around the world.
This information can also be found through our measurement stats on OONI Explorer (see chart on “monthly coverage worldwide”): https://explorer.ooni.org/
~ OONI team.