Use this command to install OONI Probe with WinGet:
winget install --id=OONI.OONI-Probe -e
OONI Probe is a free and open-source software designed to measure internet censorship and other forms of network interference. It serves as a desktop application, enabling users to assess connectivity issues and identify potential censorship or throttling by internet service providers.
Key features of OONI Probe include:
Cross-platform Support: Available on macOS, Windows, and Linux, ensuring broad accessibility for users across different operating systems.
Integration with CLI Tools: Seamlessly integrates with command-line tools like probe-cli, enhancing its functionality for advanced users.
Tor Integration: Utilizes the Tor network to provide anonymity and privacy while conducting measurements, crucial for sensitive research or activism.
This tool is ideal for researchers, activists, journalists, and anyone concerned about digital rights. By providing actionable insights into network conditions, OONI Probe helps identify censorship and promote internet freedom. It supports real-time data sharing with the broader community, fostering collaboration in understanding global internet health.
OONI Probe can be installed via winget, making it easy to set up on compatible systems.
README
OONI Probe Multiplatform App
Multiplatform (Android, iOS and Desktop) version of the Probe app.
Releases
CI Status
Project structure
composeApp is for code that will be shared across your Compose Multiplatform applications.
It contains several subfolders:
commonMain is for code that’s common for all targets.
androidMain Android-specific code
iosMain iOS-specific code written in Kotlin
desktopMain Desktop-specific code
dwMain News Media Scan specific Branding and customization
ooniMain OONI Probe specific Branding and customization
See docs/Distribution.md for a full comparison of
the ooni/dw organizations, the desktop distribution channels, and the
Apple App Store-specific restrictions.
iosApp contains the iOS application configuration and the engine integration written in Swift
.github contains the Continuous Integration configuration for Github
gradle/libs.versions.toml specifies the versions of the plugins and dependencies used across
the different modules.
Build, Install, and Run
To build, install, and run your application, use the following commands:
For OONI Probe:
./gradlew runDebug -Porganization=ooni
For News Media Scan:
./gradlew runDebug -Porganization=dw
There is a custom gradle task(copyBrandingToCommonResources) that is used to copy brand specific
resources to the common resources folder. This task is called before the preBuild task.
Creating Run Configurations in Android Studio
Configure run configurations for easy execution within Android Studio:
OONI Probe Android Configuration
Click the Plus (+) sign in the top left corner of the "Run/Debug Configurations" dialog.
Choose 'Gradle'.
Configure with the following:
Name: OONI_Probe
Run: :composeApp:runDebug -Porganization=ooni
News Media Scan Android Configuration
Repeat the steps for creating a new configuration.
Configure with the following:
Name: News_Media_Scan
Run: :composeApp:runDebug -Porganization=dw
OONI Probe iOS Configuration
The "Run/Debug Configurations" already has the proper configuration and you just need to select the
XCode Project Scheme OONIProbe and run it.
News Media Scan iOS Configuration
The "Run/Debug Configurations" already has the proper configuration and you just need to select the
XCode Project Scheme NewsMediaScan and run it.
Switching between OONI Probe and News Media Scan
Ensure you can run clean and build the project successfully.
Run pod install in the iosApp directory.
Testing
Common tests (tests inside commonTest) only run on the iOS Simulator.
Choosing the option android (local) won't work. This is a current
issue with
the official testing library.
Important Note: Any Pull Request that introduces new strings into the app should be
reviewed by @agrabeli. The Pull Request should include screenshots showing the strings in context.
New or updated strings on the default version of the strings-common.xml and
strings-organization.xml files are automatically uploaded to Weblate when a Pull Request is
merged into the main branch.
Weblate automatically creates Pull Requests with the latest translation changes to keep the app
up-to-date.
Metadata
Metadata such as Store Listing copy and screenshots are located in the metadata root folder.
Weblate also maintains those translations automatically.
Inside fastlane/metadata are only symbolic links mapping the locales supported by Google Play or
Apple App Store to the Weblate locales. Changes should only be made to the root metadata folder.