[tor-project] OONI Monthly Report: October 2023

Hello,

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

# OONI Monthly Report: October 2023

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

  • Sprint 101 (1st - 8th October 2023)
  • Sprint 102 (9th-22nd October 2023)
  • Sprint 103 (24th-31st October 2023)

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

Highlights are shared in this report below.

## Launch of News Media Scan app

In collaboration with Deutsche Welle (DW), we developed an OONI Probe-based app (“News Media Scan”) designed to measure the blocking of news media websites. Similarly to OONI Probe, News Media Scan app test results are published by OONI as open data in real-time (https://ooni.org/data/).

On 5th October 2023, Deutsche Welle and OONI launched the News Media Scan app for Android, which is available in the Google Play Store: https://play.google.com/store/apps/details?id=com.dw.ooniprobe&pli=1

Deutsche Welle published a press statement, announcing the launch: https://corporate.dw.com/en/news-media-scan-by-dw-deutsche-welle-and-ooni-launch-new-app/a-66996347

The app also received press coverage by turi2: https://www.turi2.de/aktuell/dw-und-ooni-bringen-app-zur-erkennung-von-internet-zensur-auf-den-markt/

We are excited about this launch, as we expect that it will help boost news media censorship measurement worldwide, supporting efforts to defend press freedom around the world.

## New partnership

We are excited to have established a new partnership with Digitally Right (https://digitallyright.org/), a digital rights organization in Bangladesh. We aim to collaborate on the study of internet censorship in Bangladesh.

We also published a page to feature our new research collaboration (established in September 2023) with the GLITCH Research Interest Group at the Oxford Internet Institute, a department of the University of Oxford. This page is available here: https://ooni.org/partners/glitch/

## Published OONI Community Interview with Siti Nurliza

On 16th October 2023, we published an interview with Siti Nurliza: a talented data analyst and technologist with Sinar Project, one of our most dedicated and long-term partners who have led OONI censorship measurement efforts in Southeast Asia for more than 6 years!

Siti’s interview (which we published on the OONI YouTube channel) can be viewed here: https://www.youtube.com/watch?v=DOTjOR7zA2Y

This interview is part of our “OONI Community Interviews” series, through which we highlight the important work of OONI community members.

We also published a blog post to share the interview and information about Sinar Project and their work: https://ooni.org/post/2023-interview-with-siti-nurliza/

## OONI Probe user guides available in Vietnamese

As of October 2023, the OONI Probe user guides are available in Vietnamese!

The Vietnamese user guides can be found below:

We thank Nathan Tran for the translation!

## OONI Explorer available in Arabic, Burmese and Portuguese

In October 2023, we released OONI Explorer in Arabic, Burmese, and Portuguese.

We thank the Localization Lab community for these translations!

## OONI Outreach Kit available in Russian

We are excited to share that the OONI Outreach Kit is now available in Russian!

The Russian version of the OONI Outreach Kit can be found here: https://ooni.org/ru/support/ooni-outreach-kit/

## OONI Probe Mobile

In October 2023, we released OONI Probe Mobile 3.8.4 for both Android (https://github.com/ooni/probe-android/releases/tag/v3.8.4) and iOS (https://github.com/ooni/probe-ios/releases/tag/v3.8.4), which includes a series of improvements.

Notably, OONI Probe 3.8.4 includes support for Vietnamese and Burmese.

## OONI Run

As part of our work on creating the next generation version of OONI Run (“OONI Run v2”), we continued to iterate on the user interface designs for the web and mobile applications.

We started updating the OONI Run UI on OONI Probe Mobile from v1 to v2, (https://github.com/ooni/probe-android/pull/626). This included updating the test overview view, implementing new components (https://github.com/ooni/probe-android/pull/629), updating the dashboard view (https://github.com/ooni/probe-android/pull/631), and updating the choose websites view (https://github.com/ooni/probe-android/pull/630).

## OONI Probe CLI

In October 2023, we released OONI Probe CLI 3.19.0: https://github.com/ooni/probe-cli/releases/tag/v3.19.0

Below are some highlights from this release:

  1. We improved support for measuring throttling by integrating code that takes periodic download speed snapshots while fetching websites in Web Connectivity LTE (the currently-experimental next-generation Web Connectivity implementation). This data collection process will further enrich the measurements we collect and allow spotting throttling across the whole web page download, as opposed to limiting the analysis to spotting throttling during the TLS handshake and the beginning of the download (which is what 3.18 was capable of doing).

  2. We introduced the concept of OONI Probe Bridges. A bridge is an IP address that we can use to communicate with the OONI backend and for which we are confident that we can use any Server Name Indication during the TLS handshake without errors. We believe this functionality will improve the reliability under some censorship conditions.

  3. We improved measurement scrubbing to remove any string that looks like an IP address or a TCP/UDP endpoint from the HTTP response bodies and headers. We are still scrubbing known IP addresses (e.g., the one used by OONI Probe) from the whole measurement. By adding this extra scrubbing step, we further increase OONI Probe’s safety.

  4. We started using the netemx integration testing framework in the codebase. This framework combines GVisor (https://gvisor.dev/), an emulated internet topology, and deep packet inspection, to allow us to write complex and realistic censorship scenarios. We migrated many of the most important nettests to use this framework for testing. Going forward, this capability will allow us to replace the implementation of experiments knowing that key properties related to detecting censorship continue to hold.

  5. We added support to the OONI Probe Engine for fetching OONI Run v2 descriptors, which is a precondition for implementing OONI Run v2 in mobile applications.

  6. Taking advantage of netemx, we migrated all the tests run by go test -short ./... to use netemx rather than the host network. This means that, from this release onwards, one does not need to have access to an uncensored network to develop OONI Probe. In fact, all the key unit and integration tests only rely on GVisor and on the emulated network topology described above, meaning that no traffic is actually sent to or received from actual network interface cards.

  7. We fixed the bootstrap of OONI Probe in a case where the timeouts configuration conflicted with the bootstrap being successful. While version 3.19 only includes a hotfix, we plan on refactoring this part of OONI Probe and fixing some fundamental issues we identified (https://github.com/ooni/probe/issues/2545).

  8. We fixed a data quality issue in Web Connectivity v0.4 where Android’s getaddrinfo resolver conflicted with the analysis logic in the presence of NXDOMAIN-based censorship. Android has a getaddrinfo implementation that always returns EAI_NODATA when there is any error. This happens because getaddrinfo is actually a proxy for a DNS lookup service and there is no support for passing errors along. The OONI Probe engine did already identify this specific error condition as android_dns_cache_no_data. What changed in version 3.19 is that we say that there is a measurement anomaly if this error appears and the test helper, instead, says that the domain for the website we’re measuring successfully resolves to IP addresses.

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

After months of research on richer input, we were able to draft a plan that describes exactly how we are going to implement it and for which experiments. You can read the whole plan here: https://github.com/ooni/ooni.org/issues/1295

Below are some highlights:

  1. We will implement richer input by enriching the existing /api/v1/check-in response (i.e., the response from the check-in API used to deliver measurement targets to OONI Probe).

  2. The check-in API client in the OONI Probe Engine will cache specific bits of the check-in response using the disk or memory. Some information will be cached on disk with a pretty long expiry time. Other information is cached for a short timeframe or kept in memory.

  3. We will modify how we run experiments by moving around a pure-data structure that contains the experiment name, the experiment options, and the experiment inputs. (The whole point of richer input is indeed to move options around and honor them when running experiments.)

  4. We will need to refactor how ooniprobe, the miniooni research client, and the mobile apps execute experiments by replacing code that create instances of “Experiment” with code that moves around this pure data structure and defers the actual instantiation and execution of the experiment deep inside of the OONI Engine.

  5. The ooniprobe, miniooni, and mobile apps codebase will prepare pure-data structures and submit them to the engine for execution. In the common case of running experiments like we currently do, ooniprobe, miniooni, and the mobile apps will not fill any option. Instead, the engine would do that based on the cached check-in content.

In October 2023, we also started writing code to implement this plan, but the bulk of the work is going to happen in subsequent weeks and months. Obviously, the plan is tentative and possibly poised to change as we learn more and flesh out the implementation.

## Creating a throttling measurement methodology

As mentioned above when discussing OONI Probe CLI 3.19.0 release notes, there is better support for detecting throttling only in Web Connectivity LTE. As you may remember from previous reports, Web Connectivity LTE is currently experimental and only enabled for a small subset of our users. This situation begs the question of how to bring these extra throttling improvements to all experiments. For example, it would be nice if the OONI Probe Telegram test measures throttling when testing web.telegram.org.

To make this possible, we need to switch the underlying engine used by other experiments from the old legacy/netx to the new mesurexlite engine. The reason why we need to do this change is that the measurexlite engine uses a different methodology for collecting OONI measurements called tracing. This methodology is more flexible than the one used by the legacy/netx engine, called wrapping, and enables us to collect more data – including data relevant for throttling – in a more flexible way.

Currently, Web Connectivity LTE is the only experiment using measurexlite. But switching the engine requires rewriting large swaths of code. Thus, we spent time polishing the netemx testing framework and rewriting unit and integration testing code to use it. This work occurred in previous reporting periods and was released in version 3.19. Hence, now we start being well positioned to initiate the migration to the measurexlite engine.

However, measurexlite is a low-level engine and writing code for it directly has proven to be difficult. For writing Web Connectivity LTE, in fact, we used a code generator. However, we were not completely satisfied with this approach and we introduced dslx, which allows composing measurement primitives in an easy way and which is based on measurexlite.

Therefore, the plan is now to rewrite existing experiments using dslx.

To make this possible, in October 2023 we applied fixes that allow writing more compact and expressive code, based on our several-months-long experience in using dslx. (To make sure dslx was up to the task, we used it extensively when experimenting with richer input; this means that we already know about some pain points.)

More specifically, below are the changes we applied to dslx:

  1. https://github.com/ooni/probe/issues/2580
  2. https://github.com/ooni/probe/issues/2582
  3. https://github.com/ooni/probe/issues/2611
  4. https://github.com/ooni/probe/issues/2612
  5. https://github.com/ooni/probe/issues/2613
  6. https://github.com/ooni/probe/issues/2614
  7. https://github.com/ooni/probe/issues/2615
  8. https://github.com/ooni/probe/issues/2617
  9. https://github.com/ooni/probe/issues/2618

With these changes implemented, we’re now well positioned to move forward with measuring throttling.

## Creating a Social Media Censorship Alert System

We made progress on the research side of the Social Media Censorship Alert System by polishing a design document and updating the relevant pull request (https://github.com/ooni/backend/pull/651) based on feedback. We also started to reach out to members of the research community to collect input on how we might improve upon the design of the alert system.

## Creating a Censorship Incident Reporting Platform

We continued working towards launching the Censorship Incident Reporting Platform. Our focus was on testing, making improvements and UI tweaks (https://github.com/ooni/explorer/pull/878) to ensure that everything works smoothly. We also updated our component library as needed (https://github.com/ooni/design-system/). On the backend side, we added support for displaying the author’s email address in the admin UI of the incident reporting platform (https://github.com/ooni/backend/pull/732).

We wrote most of the censorship reports for the platform, and we started publishing them as part of our internal testing process. As part of this testing and publication process, we documented feedback for improvements (https://github.com/ooni/explorer/issues/879). All of the reports (along with the platform itself) will be accessible from the OONI Explorer menu navigation bar when the platform is publicly launched.

## OONI backend

In order to improve the effectiveness in circumventing the blocking of the traffic between probes and the API, we deployed a second ooni bridge using a different provider than Hetzner: Greenhost.

We fixed a previously identified bug in the probe registration API entry point affecting the authentication JWT. The bug did not impact the live/production API because it uses Orchestrate for this (https://github.com/ooni/backend/issues/731, https://github.com/ooni/backend/pull/727).

Based on a request from a user, we investigated the generation of test lists in Georgia and created a monitoring script and a dashboard. This is an initial stepping stone to better understand how frequently the URLs in test lists are “reordered” by the prioritization algorithm.

We detected a client scraping the aggregation API. The increase in load did not impact the performance of the API to the point of disrupting the service, however it increased the CPU load enough to be clearly noticeable on performance dashboards. We improved an existing Jupyter notebook to extract the heaviest queries.

We also investigated using traffic quotas in ClickHouse but encountered a bug in the current version of the database that required postponing the implementation. After noticing high database load due to the measurement uploader tool and the database backup tool we investigated how to lower the query priorities to decrease the impact.

We performed initial end-to-end tests for a custom STUN server using probe VPSs as vantage points. The STUN server is meant to be used for circumvention and potentially to measure latency between the probe and the server.

We continued carrying out security updates in the OS on our servers (https://github.com/ooni/backend/issues/740). We updated the monitoring host to Debian Bookworm. As part of this Grafana and ClickHouse have been upgraded to newer and more performant versions. We also worked on improving the existing documentation for the backend infrastructure.

## Automating censorship detection and characterization based on OONI measurements

We continued to make progress on automating censorship detection and characterization based on OONI measurements. Specifically, we worked on improving the performance of the observation generation for older buckets, which are currently affected by a bug that makes them not be compressed.

As part of this work, we implemented a different parallelization strategy which allows us to reprocess a bucket of measurements in a day in around 5 minutes (whereas previously it was in the range of 30-40 minutes).

We also added support for storing statistics in the database about how long it took to process a given batch of measurements, allowing us to more accurately assess how we are doing on the performance front. This work is documented here: https://github.com/ooni/data/pull/37

## Scoping upcoming research reports

Throughout October 2023, we worked towards scoping some of our upcoming research reports. This involved analyzing OONI data to identify interesting censorship cases, writing internal documents with relevant research questions, plans, and timelines, and coordinating with relevant research partners.

## Created surveys for upcoming OONI training in the DRC

In preparation for a week-long OONI training that we will be facilitating in Kinshasa (DRC) in November 2023, we created two surveys for the participants. The first survey will be shared with the participants at the start of the training, while the second survey will be shared at the end. The goal of these surveys is to evaluate how effective the training will be, and to collect relevant participant feedback. We shared these surveys with the training organizers for French translation.

## Created the agenda for the OONI Team Meeting 2023

Between 8th-10th November 2023, we will host our annual OONI Team Meeting in Nairobi, Kenya. This 3-day meeting will provide our team the opportunity to discuss roadmaps, strategic priorities, and projects in person.

In preparation for our annual OONI Team Meeting, we solicited team feedback for the agenda. Based on team feedback and session proposals, we worked on creating and finalizing the detailed agenda for our 3-day team meeting.

We also coordinated on other relevant logistics pertaining to travel to Nairobi for our upcoming meeting.

## Test Lists updates

In October 2023, we reviewed test list updates contributed by community members.

These include:

## Rapid response

## Azerbaijan unblocked access to TikTok

On 31st October 2023, Azerbaijan unblocked access to TikTok! Azerbaijan had previously been blocking access to TikTok since 19th September 2023 (during the military offensive in Nagorno-Karabakh). We shared OONI data and reported on the unblocking of TikTok in Azerbaijan on X: https://twitter.com/OpenObservatory/status/1719742224940859674

## Community use of OONI data

### iMAP 2023 Internet Censorship Reports

On 13th October 2023, the iMAP project (https://imap.sinarproject.org/) published 10 new research reports on internet censorship in the following Asian countries: Malaysia, Myanmar, Thailand, Vietnam, Cambodia, Hong Kong (China), India, Indonesia, Timor-Leste, and the Philippines. These reports are based on the analysis of OONI data collected from these 10 countries.

The iMAP 2023 Internet Censorship Reports are available here: https://imap.sinarproject.org/reports/2023

Specifically, they include the following reports:

  1. Cambodia: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-cambodia-2023-internet-censorship-report

  2. Hong Kong (China): 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-hong-kong-2023-internet-censorship-report

  3. India: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-indonesia-2023-internet-censorship-report-1/imap-india-2023-internet-censorship-report.pdf

  4. Indonesia: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-indonesia-2023-internet-censorship-report

  5. Malaysia: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-malaysia-2023-internet-censorship-report

  6. Myanmar: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-myanmar-2023-internet-censorship-report

  7. Philippines: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-philippines-2023-internet-censorship-report

  8. Thailand: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-thailand-2023-internet-censorship-report

  9. Timor-Leste: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-timor-leste-2023-internet-censorship-report

  10. Vietnam: 2023 Internet Censorship Report: https://imap.sinarproject.org/reports/2023/imap-vietnam-2023-internet-censorship-report

The launch and presentation of these reports was live-streamed here: https://www.youtube.com/watch?v=YkFQxzvJrMs

### Freedom on the Net 2023 reports

Freedom House published their annual Freedom on the Net report (https://freedomhouse.org/report/freedom-net/2023/repressive-power-artificial-intelligence), which includes numerous country reports (https://freedomhouse.org/countries/freedom-net/scores).

OONI data is cited in the following 38 (out of 70 in total) country-specific Freedom on the Net 2023 country reports:

## Community activities

### OONI training in Thailand for participants from South Asia

Between 2nd-4th October 2023, OONI’s Maria co-facilitated a 3-day training programme in Thailand in collaboration with IODA’s Amanda. This was an OPTIMA training programme for human rights defenders from South Asia, designed to share skills and knowledge around measuring internet shutdowns.

As part of this training programme, Maria facilitated the following OONI workshops:

  • Introduction to OONI
  • Using OONI Probe and OONI Run for measuring internet censorship
  • Updating test lists to improve website censorship testing
  • Using OONI Explorer to investigate internet censorship based on real-time open data

The above workshops included a combination of presentations, live demos, and hands-on exercises (through which participants made use of the tools based on real-world scenarios).

In addition to the above, Maria collaborated with Amanda on presenting a case study (“Internet censorship in Myanmar”) that combines both OONI and IODA data for investigating internet shutdowns (involving both outages and blocks). Maria and Amanda also collaborated on facilitating a day-long workshop through which participants worked on group projects aimed at investigating internet censorship based on both OONI and IODA data. At the end of this workshop, participants presented their projects.

### OONI training in Tbilisi for media managers from Turkey

On 5th October 2023, OONI’s Elizaveta facilitated a workshop on OONI tools as part of the training organized by Internews for Turkish media managers. As part of this workshop, managers learned how to use OONI Run to coordinate measurement campaigns, how to collect evidence on the blocking of media tools, and how to use OONI Explorer to investigate the blocking of news media websites in Turkey.

### Hackathon at Internet Measurement Conference (IMC) 2023

On 23rd October 2023, OONI collaborated with ISOC, Censored Planet, and M-Lab on co-hosting an internet measurement hackathon right before the Internet Measurement Conference (IMC) 2023. Information about the hackathon is available here: https://ooni.org/post/2023-imc-hackathon/

As part of the hackathon 3 teams worked on projects which made use of OONI data. The teams which made use of OONI data worked on the following:

  • Using OONI data to investigate IPv6 connectivity, where they used OONI data to investigate differences and evolution in IPv6 connectivity worldwide and disaggregated by network type.
  • Data triangulation, where they extracted signals for internet shutdowns by comparing multiple different datasets, including OONI.
  • ARIMA based anomaly detection, where they developed a statistical anomaly detection model to identify anomalous signals in various datasets, including OONI.

All in all, it was great to see how much was accomplished in such a short period of time and we hope that these researchers will have learned more about OONI data and continue to make use of it in the future.

In addition to hosting the hackathon, OONI’s Arturo also attended IMC 2023 (https://conferences.sigcomm.org/imc/2023/).

### OONI Community Meeting

On 31st October 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 OONI and the OONI community

  2. Community feedback for the naming of OONI’s upcoming new “Censorship Incident Reporting Platform”

  3. Community feedback related to re-designing the OONI website

  4. Community feedback on OONI’s educational resources: Which are most useful, and which are missing/needed?

  5. IODA updates on internet outages in Gaza

## Measurement coverage

In October 2023, 63,123,792 OONI Probe measurements were collected from 3,112 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.