The Open Observatory of Network Interference (OONI) is a non-profit free software project that aims to empower decentralized efforts in documenting Internet censorship around the world.
This repository contains core OONI tools written in Go:
-
the CLI client (cmd/ooniprobe);
-
the test helper server (internal/cmd/oohelperd);
-
the mobile library (pkg/oonimkall);
-
the OONI Probe engine (inside internal).
Every top-level directory in this repository contains an explanatory README file. You
may also notice that some internal packages live under internal/engine
while most others are top-level. This is part of a long-standing refactoring started when we merged
https://github.com/ooni/probe-engine into this repository. We'll slowly
ensure that all packages inside engine
are moved out of it and inside internal
.
The mobile library is a public package for technical reasons. Go mobile tools require
a public package to build from. Yet, we don't consider API breakages happening in
such a package to be sufficient to bump our major version number. For us, the mobile
library is just a mean to implement OONI Probe Android and OONI Probe iOS. We'll
only bump the major version number if we change ./cmd/ooniprobe
's CLI.
SPDX-License-Identifier: GPL-3.0-or-later
Please, follow the instructions at ooni.org/install/cli
to install ooniprobe
. If we do not support your use case, please let us know. Once
ooniprobe
is installed, try ooniprobe help
to get interactive help.
Report issues at github.com/ooni/probe.
Please, make sure you add the ooni/probe-cli
label.
Be sure you have:
-
the golang version mentioned inside the GOVERSION file;
-
a C compiler (Mingw-w64 for Windows).
As of 2022-08-22, building with go1.19 will not include Psiphon as a dependency. Fixing this issue is TODO(ooni/probe#2222).
Ooniprobe is the official CLI client. Compile using:
go build -v -ldflags "-s -w" ./cmd/ooniprobe
This will generate a binary called ooniprobe
in the current directory.
Miniooni is the experimental OONI client used for research. Compile using:
go build -v -ldflags "-s -w" ./internal/cmd/miniooni
This will generate a binary called miniooni
in the current directory.
Oohelperd is the test helper server. Compile using:
go build -v -ldflags "-s -w" ./internal/cmd/oohelperd
This will generate a binary called oohelperd
in the current directory.
Every nettest (aka experiment) implemented in this repository has a companion spec in ooni/spec.
Please, see CONTRIBUTING.md.
go get -t -u -v ./... && go mod tidy
Create an issue according to the routine release template and perform any item inside the check-list.
We build releases using Makefile, which requires GNU make. Run
make help
for detailed usage.