[tor-project] OONI Monthly Report: July 2023

Hello,

This email shares OONI’s monthly report for July 2023.

# OONI Monthly Report: July 2023

Throughout July 2023, the OONI team worked on the following sprints:

  • Sprint 95 (3rd - 16th July 2023)
  • Sprint 96 (17th - 30th July 2023)

Our work can be tracked through the various OONI GitHub repositories: https://github.com/ooni

Highlights are shared in this report below.

## New partnership

We are excited to have formed a new partnership with Digital Rights Lab Sudan (https://twitter.com/DRLab_Sudan)!

The goal of the partnership is to collaborate on the study of internet censorship in Sudan. We published a dedicated partner page for Digital Rights Lab Sudan, highlighting their important work: https://ooni.org/partners/drlab/

## Published report on China blocking OONI

In July 2023, China started blocking access to our website (ooni.org) and censorship measurement app (OONI Probe).

We published a report documenting the blocking of OONI in China with OONI data: https://ooni.org/post/2023-china-blocks-ooni/

The block appears to be implemented by means of DNS injection and TLS interference. This is the first time that we’re observing a large and persistent drop in OONI measurement coverage as a result of OONI Probe blocking. The report also includes advice for circumventing the blocking of OONI Probe in China. However, running OONI Probe in China is now probably riskier.

## OONI Probe Mobile

Throughout July 2023, we worked towards the release of OONI Probe Mobile 3.8.3. As part of this, we worked on extensive QA testing for both Android (https://github.com/ooni/probe/issues/2504) and iOS (https://github.com/ooni/probe/issues/2509).

Based on community feedback, we worked on adding functionality to OONI Probe Android to automatically test new networks (https://github.com/ooni/probe/issues/900).

We also worked on improvements to a new Android app (“News Media Scan”) that we have been developing in collaboration with Deutsche Welle over the past months.

## OONI Probe Desktop

In July 2023, we released OONI Probe Desktop 3.9.1 (https://github.com/ooni/probe-desktop/releases/tag/v3.9.1) with the latest version of OONI Probe CLI and updated dependencies.

## OONI Run

### Building OONI Run v.2

In July 2023, we added experimental support to the OONI Probe Engine for invoking the fetch API allowing a client to obtain OONI Run v2 descriptors (https://github.com/ooni/probe-cli/pull/1176). This functionality allows the OONI Probe mobile app to start implementing OONI Run v2 (https://github.com/ooni/probe-android/pull/582). We then worked towards adding support for running OONI Run v2 links in the OONI Probe mobile app (https://github.com/ooni/probe/issues/2474). The general idea for this first iteration is to implement minimal functionality into the Engine and let the app do most of the work.

Notably, we reached a first milestone where we have an experimental version of the OONI Probe Android app where it is possible to:

  • Inspect and install an OONI Run v2 link into the OONI Probe Android app dashboard;
  • Run such a link directly or together with other nettests;
  • See the results it produced reusing the view used for experimental nettests.

Subsequent development milestones will focus on implementing the missing functionality (e.g., updating OONI Run v2 links) and on optimizing the implementation.

We continued working on the UI improvements for the OONI Run v2 web editor (https://github.com/ooni/run/pull/131). We also added backend support for separating the versioning of the copy (included in translations) from the nettest data (https://github.com/ooni/backend/issues/694), and we added localization support to OONI Run v.2 (https://github.com/ooni/backend/pull/699). To enable the development of the OONI Run platform, we allowed login redirection for more domains on the API (https://github.com/ooni/backend/pull/697).

### Launch of OONI Run supporting localization

In July 2023, we launched OONI Run (https://run.ooni.io/) with support for 9 languages (beyond English): Farsi, Russian, Thai, Turkish, Chinese (Taiwan), Chinese (China), German, Portuguese (Brazil), Spanish. This work is available here: https://github.com/ooni/run/pull/132/files

We thank the Localization Lab community (https://www.localizationlab.org/) for making OONI Run available in so many languages, and for their ongoing OONI Run localization efforts (https://explore.transifex.com/otf/ooni-run/).

## OONI Probe CLI

We started preparing the release of OONI Probe CLI 3.18.1, which should include (a) better support for measuring throttling with Web Connectivity LTE; (b) updated dependencies and assets.

We also continued to make progress towards OONI Probe CLI v3.19.0. Following up from the work done in previous sprints, we have continued to take advantage of the netem QA framework and we have started migrating some nettests to use it for QA purposes. By using netem, we are able to exercise more censorship conditions in an easier way compared to the previous framework we used (Jafar, based on Linux and iptables).

For now, we have migrated the following experiments to netem:

As a result, the availability of better QA tests opens up the possibility of being more confident in rewriting these experiments to use the DSL introduced as part of the richer input error.

## Expanding OONI’s testing model to support richer testing input

We continued to work on supporting richer testing input (https://github.com/ooni/ooni.org/issues/1291). In previous months, we worked towards writing a DSL (https://en.wikipedia.org/wiki/Domain-specific_language) to support richer testing input (https://github.com/ooni/probe/issues/2494) in the context of our richer testing prototype (https://github.com/ooni/2023-05-richer-input). We completed this task in early July 2023 (https://github.com/ooni/2023-05-richer-input/pull/7, https://github.com/ooni/2023-05-richer-input/pull/8).

We now have a DSL that is both external and internal. The internal DSL is executable code but can also be serialized to JSON. We can read the JSON and execute it as an external DSL. We basically use the same code for both DSLs. The internal DSL uses Go generics and each stage in the measurement pipelines has specific input and output types. The external DSL wraps each internal DSL stage with a stage that performs type checking at runtime.

The final DSL (https://github.com/ooni/2023-05-richer-input/releases/tag/v0.3.0) is not Turing complete and only supports stage composition. We have primitive stages (e.g., DNS lookups, TCP connect, TLS handshake, QUIC handshake, HTTP transactions). We have stages for composing together measurement pipelines (e.g., we can compose a TCP connect operation and a TLS handshake operation). And we have primitives to compose pipelines that perform DNS lookups with pipelines that perform endpoint measurements (e.g., TCP connect, TLS handshake).

Now that we have finished researching, we have also reached a better degree of clarity on what we can potentially achieve by expressing richer input using this DSL:

  1. We can run code directly (internal DSL) or we can generate JSON that we can serve to OONI Probes (external DSL). By serving code to probes, we can update the definition of nettests. So, in the future, we would need less emergency releases when IM apps (such as Signal) change their testing requirements (e.g., they change the CA they use).

  2. We can incrementally roll out better implementations of experiments without making new OONI Probe releases. For example, we can (easily!) add support for TLS handshakes to the Facebook Messenger nettest and run this extended version of the nettest only in a subset of probes, closely monitoring whether everything is working as intended, ready to back out the changes in case of issues, or roll out the functionality more extensively if all looks good.

  3. We can support the use case of using OONI Probe for research. We (or anyone else concerned) will potentially be able to feed a specific measurement DSL pipeline to OONI Probe consisting of the operations that matter for research. For example, we can imagine serving extra follow-up tests that would run as part of the experimental suite on an opt-in basis in case there is a need to further investigate some censorship findings.

To investigate the suitability of the DSL, we reimplemented the Facebook Messenger (https://github.com/ooni/2023-05-richer-input/pull/7) and RiseupVPN (https://github.com/ooni/2023-05-richer-input/pull/12) experiments. The latter, in particular, seems a good candidate to start upgrading production code to use the DSL since it is currently disabled due to concerns involving false positives. For this reason, we also sketched out an initial plan to upgrade it to use the DSL (https://github.com/ooni/probe/issues/2502).

In subsequent months, we will continue to investigate this topic, refine our implementation, engage in internal discussions, work on streamlining possible use cases and on defining a path to start rolling this feature out in production. In the meanwhile, we have started to feel more confident about the DSL implementation, as we started adding integration testing using netem (https://github.com/ooni/netem) to it (https://github.com/ooni/2023-05-richer-input/pull/7, https://github.com/ooni/2023-05-richer-input/pull/9).

## Creating a throttling measurement methodology

Regarding measuring throttling (https://github.com/ooni/ooni.org/issues/1296), we finished improving support for measuring the download speed (https://github.com/ooni/probe/issues/2493). As Web Connectivity LTE now implements collecting download speed samples during a download, we started preparing for making it the default Web Connectivity implementation and for retiring version v0.4. To this end, we started adding support for netem-based integration testing (https://github.com/ooni/probe-cli/pull/1170) and we backported the patch to collect download speed samples (https://github.com/ooni/probe-cli/pull/1166) to the release/3.18 branch so that we can include this functionality in the upcoming 3.18.1 OONI Probe release.

## OONI Explorer

In July 2023, we released OONI Explorer in the following 2 additional languages:

Beyond English, OONI Explorer now supports 10 languages!

We thank the Localization Lab (https://www.localizationlab.org/) community for making OONI Explorer – and real-time open data on internet censorship worldwide – available in additional languages!

## Creating a Social Media Censorship Alert System

We continued to make progress towards building a Social Media Censorship Alert System (https://github.com/ooni/backend/pull/651). Based on internal review of the code, we updated the internal design document for further review.
We added support for real-time notifications on Slack in the Social Media blocking event detector, along with a summary HTML page. We also created a dedicated Jupyter notebook to show a summary of recent events flagged as social media blocking alerts by our system.

## Creating a Censorship Incident Reporting Platform

In July 2023, we continued working on the UI implementation of the (new) Censorship Incident Reporting Platform (https://github.com/ooni/explorer/pull/862). Specifically, we added form validations, we improved the layouts (also) by further expanding our component library (https://github.com/ooni/design-system/pull/163), and we added the report index view.

## Automating censorship detection and characterization based on OONI measurements

Improvements were made to how errors are handled while writing observations to the database. Specifically, support was added to dump failing rows to file and retry writing the affected row in the event of a failure (https://github.com/ooni/data/pull/33). Through this we were able to identify some bugs in the processing of certain types of measurements and implement fixes for them.

We started reaching out to third party researchers interested in using this new observation database and training them on how to use it. As part of this, we came up with a setup that allows independent researchers to connect to the database used by the OONI data analysis tool (https://github.com/ooni/data) and run queries on the platform.

## OONI backend

We improved our Jupyter notebook that tracks test helper failures grouped by datacenter location. It detected a 1-hour long event impacting 0.th.ooni.org. The event was investigated and found to be benign.

We continued ongoing work to predict the amount of incoming measurements on a per-country basis using basic machine learning in order to send alarms to the team in the event of a sudden loss of measurements.

## Published OONI Outreach Kit printing materials

In July 2023, we updated the OONI Outreach Kit to include materials designed for printing (https://github.com/ooni/ooni.org/pull/1394).

The updated OONI Outreach Kit (including printing materials) is available here: https://ooni.org/support/ooni-outreach-kit/

## Interviewed Project Manager candidates

In July 2023, we reviewed the final applications and we completed the second round of interviews for the OONI Project Manager position (https://ooni.org/post/2023-job-opening-ooni-project-manager/). Based on these interviews, we reached a hiring decision and followed up with candidates.

## FOCI 2023 Community Award

On 10th July 2023, OONI’s Maria received the Free and Open Communications on the Internet (FOCI) 2023 Community Award, recognizing the impact of her work in the field of Internet freedom on the wider community.

We dedicate this award to the whole OONI community, without whom this work would not be possible (https://twitter.com/agrabeli_/status/1678722087953760256).

## Community use of OONI data

### Report of the Tehran Electronic Commerce Association

In July 2023, the Tehran Electronic Commerce Association published a report on the low quality of the Internet in Iran, citing OONI in many pages (pages 4, 5, 6, 16, 20, 35, 37). Their report is available here: https://etchamber.ir/wp-content/uploads/2023/07/Iran-Internet-v0.9.pdf

OONI was also cited in an article by Peivast (one of Iran’s largest tech outlets), discussing the findings of the report of the Tehran Electronic Commerce Association: https://peivast.com/p/170337

### Blocking of satirical news website in Jordan

Our partner, JOSA (https://ooni.org/partners/josa/), reported on the blocking of a satirical news media website (AlHudood) in Jordan, citing OONI data: https://twitter.com/jo_osa/status/1677041740107198465

### TEDIC’s research report examining internet shutdowns in Northern Paraguay

Our partner, TEDIC (https://ooni.org/partners/tedic/), published a new research report investigating potential disruptions to internet access in the northern zone of Paraguay. We supported this study by providing relevant OONI data analysis.

Their report was published in:

TEDIC also published a blog post about the study in:

### Sinar Project’s report on the blocking of MalaysiaNow

Our partner, Sinar Project, published a report documenting the blocking of MalaysiaNow in Malaysia, through the use of OONI tools and data. Their report is available here: https://imap.sinarproject.org/news/blocking-of-malaysianow-website

### Sinar Project’s report on the blocking of a website of a former Malaysian MP

Sinar Project published a report documenting the blocking of a website (weechookeong.com) which belongs to a former Malaysian Member of Parliament. Their report makes use of OONI data, and is available here: https://imap.sinarproject.org/news/internet-censorship-update-blocking-of-weechookeong-com-website

This report received press coverage from MalaysiaNow: https://www.malaysianow.com/news/2023/07/28/online-freedom-monitor-confirms-mcmc-behind-latest-site-block

### EngageMedia’s Advocacy Toolkit for Civil Society Organizations

In July 2023, EngageMedia published “Addressing Internet Censorship and Content Filtering: An Advocacy Toolkit for Civil Society Organizations” which features OONI tools and resources (https://engagemedia.org/2023/toolkit-internet-censorship/).

Their toolkit is available here: https://engagemedia.org/wp-content/uploads/2023/07/GIF-Regional-Toolkit-Addressing-Internet-Censorship-and-Content-Filtering.pdf

### PhD thesis on modeling and characterizing internet censorship technologies

In July 2023, a PhD thesis (titled “Modeling and Characterization of Internet Censorship Technologies”) by Alexander Master was published (making use of OONI data): https://www.doi.org/10.25394/PGS.23666784

### FOCI 2023 academic paper studying worldwide view of nation-state Internet censorship

In July 2023, an academic paper studying a worldwide view of nation-state Internet censorship was published and presented at FOCI 2023. This paper makes use of OONI data for its analysis.

The paper is available here: https://www.petsymposium.org/foci/2023/foci-2023-0008.pdf

### Other FOCI 2023 papers citing OONI

OONI was also cited in the following FOCI 2023 papers:

## Community activities

### FOCI 2023

On 10th July 2023, OONI’s Arturo attended the Free and Open Communications on the Internet (FOCI) 2023 in Lausanne, Switzerland. Information about the workshop is available here: https://foci.community/

### Keynote at HotPETs 2023

On 14th July 2023, OONI’s Maria delivered a keynote (titled “The Power of Community Participation in Shaping Digital Rights Tech”) at HotPETs 2023 in Lausanne, Switzerland.

Information about the workshop is available here: https://petsymposium.org/2023/hotpets.php

### OONI workshop for Legal Resource Center in South Africa

On 24th July 2023, OONI’s Elizaveta facilitated an online OONI workshop for the team members of South Africa’s Legal Resource Center (https://lrc.org.za/). The goal of the workshop was to introduce lawyers to the use of OONI tools and data.

### OONI workshop for civil society in Zimbabwe

On 31st July 2023, OONI’s Elizaveta facilitated an online OONI workshop for civil society groups in Zimbabwe, in preparation for the country’s upcoming elections (which may trigger censorship events).

### OONI Community Meeting

On 25th July 2023, we hosted the monthly OONI Community Meeting on our Slack channel (https://slack.ooni.org/), during which we discussed the following topics:

  1. Updates from the OONI team
  2. IODA Update: Design Standards and Outage Severity Map (https://ioda.inetintel.cc.gatech.edu/reports/ioda-update-designstandards-outagemap/)
  3. Community feedback on the thematic presentation of censorship findings on OONI Explorer
  4. Community feedback on push notifications: How should OONI utilize them going forward? What would be most useful?

## Measurement coverage

In July 2023, 62,256,645 OONI Probe measurements were collected from 3,135 networks in 172 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.