[tor-commits] [ooni-probe/master] Update docs

art at torproject.org art at torproject.org
Sat May 2 13:32:54 UTC 2015


commit cafa4becca177422108ba6a94d01a2e8917cc5a7
Author: Arturo Filastò <art at fuffa.org>
Date:   Sat May 2 13:49:24 2015 +0200

    Update docs
---
 docs/source/api/ooni.lib.rst       |   10 -
 docs/source/api/ooni.rst           |    4 +-
 docs/source/api/ooni.templates.rst |    4 +-
 docs/source/api/ooni.utils.rst     |  140 -------------
 docs/source/architecture.rst       |   12 +-
 docs/source/conf.py                |    2 +-
 docs/source/index.rst              |  407 +++++++++++++++++++++++++-----------
 docs/source/nettests/modules.rst   |    4 +-
 8 files changed, 296 insertions(+), 287 deletions(-)

diff --git a/docs/source/api/ooni.lib.rst b/docs/source/api/ooni.lib.rst
deleted file mode 100644
index 7ba586d..0000000
--- a/docs/source/api/ooni.lib.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-lib Package
-===========
-
-:mod:`lib` Package
-------------------
-
-.. automodule:: ooni.lib
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/source/api/ooni.rst b/docs/source/api/ooni.rst
index cb79525..3ff1ddb 100644
--- a/docs/source/api/ooni.rst
+++ b/docs/source/api/ooni.rst
@@ -1,5 +1,5 @@
-ooni Package
-============
+Measurement Developer API
+=========================
 
 :mod:`inputunit` Module
 -----------------------
diff --git a/docs/source/api/ooni.templates.rst b/docs/source/api/ooni.templates.rst
index d9172dd..d2ef927 100644
--- a/docs/source/api/ooni.templates.rst
+++ b/docs/source/api/ooni.templates.rst
@@ -1,5 +1,5 @@
-templates Package
-=================
+Test Templates
+==============
 
 :mod:`ooni.templates.httpt` Module
 ----------------------------------
diff --git a/docs/source/api/ooni.utils.rst b/docs/source/api/ooni.utils.rst
deleted file mode 100644
index 1b0ca03..0000000
--- a/docs/source/api/ooni.utils.rst
+++ /dev/null
@@ -1,140 +0,0 @@
-utils Package
-=============
-
-.. automodule:: ooni.utils
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-..
-    :mod:`assertions` Module
-    ------------------------
-    .. automodule:: ooni.utils.assertions
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-:mod:`geodata` Module
----------------------
-
-.. automodule:: ooni.utils.geodata
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-:mod:`hacks` Module
--------------------
-
-.. automodule:: ooni.utils.hacks
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-..
-    :mod:`legacy` Module
-    --------------------
-    .. automodule:: ooni.utils.legacy
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-:mod:`log` Module
------------------
-
-.. automodule:: ooni.utils.log
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-:mod:`logo` Module
-------------------
-
-.. automodule:: ooni.utils.logo
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-..
-    :mod:`meta` Module
-    ------------------
-    .. automodule:: ooni.utils.meta
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-..
-    :mod:`net` Module
-    -----------------
-..
-    .. automodule:: ooni.utils.net
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-..
-    :mod:`onion` Module
-    -------------------
-    .. automodule:: ooni.utils.onion
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-..
-    :mod:`otime` Module
-    -------------------
-    .. automodule:: ooni.utils.otime
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-:mod:`txscapy` Module
----------------------
-
-.. automodule:: ooni.utils.txscapy
-    :members:
-    :undoc-members:
-    :show-inheritance:
-..
-    XXX this is commented out because it triggers this error
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.CustomCircuit.circuit_failed:1: ERROR: Unknown interpreted
-    text role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.CustomCircuit.circuit_failed:5: ERROR: Unknown interpreted
-    text role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.CustomCircuit.waiting_on:5: ERROR: Unknown interpreted
-    text role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_filter_nodes:1: ERROR: Unknown interpreted text
-    role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_filter_nodes:22: ERROR: Unexpected indentation.
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_filter_nodes_with_timer:1: ERROR: Unknown
-    interpreted text role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_filter_nodes_with_timer:26: ERROR: Unexpected
-    indentation.
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_with_timer:1: ERROR: Unknown interpreted text
-    role "ivar".
-    gcooni/utils/onion.py:docstring of
-    ooni.utils.onion.start_tor_with_timer:24: ERROR: Unexpected indentation.
-    :mod:`process` Module
-    ---------------------
-    .. automodule:: ooni.utils.process
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
-..
-    XXX this is commented out because the indentation of the docstrings is
-    wrong.
-    :mod:`timer` Module
-    -------------------
-    .. automodule:: ooni.utils.timer
-        :members:
-        :undoc-members:
-        :show-inheritance:
-
diff --git a/docs/source/architecture.rst b/docs/source/architecture.rst
index ac1e7ae..d72a75c 100644
--- a/docs/source/architecture.rst
+++ b/docs/source/architecture.rst
@@ -1,8 +1,5 @@
 Architecture
 ============
-:Author: Arturo Filastò
-:Contact: art at torproject.org
-:Copyright: This document has been placed in the public domain.
 
 The goal of this document is provide an overview of how ooni works, what are
 it's pieces and how they interact with one another.
@@ -161,7 +158,7 @@ Report collector
 
 
 An ooniprobe run
-================
+----------------
 
 Here we describe how an ooniprobe run should look like:
 
@@ -183,7 +180,10 @@ Here we describe how an ooniprobe run should look like:
 
 
 ooniprobe API
-=============
+-------------
+
+Note: This is currently not under active development, but we are looking for
+people interested in hacking on it!
 
 The goals of the ooniprobe API is that of allowing applications to interact
 with an ooniprobe.
@@ -304,7 +304,7 @@ Like so for example
 
 
 Implementation status
-=====================
+---------------------
 
 ooniprobe
 .........
diff --git a/docs/source/conf.py b/docs/source/conf.py
index f12deba..8bc48ad 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -124,7 +124,7 @@ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-# html_static_path = ['_static']
+html_static_path = ['static']
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 53d5b44..ae0db6b 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,23 +1,27 @@
 .. OONI documentation master file.
 
-Welcome to the OONI developer documentation
-===========================================
+OONI: Open Observatory of Network Interference
+==============================================
 
-ooniprobe is tool for performing internet censorship measurements. Our goal is
-to achieve a command data format and set of methodologies for conducting
-censorship related research.
+OONI, the Open Observatory of Network Interference, is a global observation
+network which aims is to collect high quality data using open methodologies,
+using Free and Open Source Software (FL/OSS) to share observations and data
+about the various types, methods, and amounts of network tampering in the
+world.
 
-If you are a user interesting in running the ooniprobe command line tool see:
 
-    https://gitweb.torproject.org/ooni-probe.git/blob/HEAD:/README.rst
-
-The two main software components of ooniprobe are ooniprobe and oonib.
+    "The Net interprets censorship as damage and routes around it."
+                - John Gilmore; TIME magazine (6 December 1993)
 
 ooniprobe
 *********
 
-Is the tool that volunteers and researches interested in contributing data to
-the project should be running.
+ooniprobe is the first program that users run to probe their network and to
+collect data for the OONI project. Are you interested in testing your network
+for signs of surveillance and censorship? Do you want to collect data to share
+with others, so that you and others may better understand your network? If so,
+please read this document and we hope ooniprobe will help you to gather
+network data that will assist you with your endeavors!
 
 ooniprobe allows the user to select what test should be run and what backend
 should be used for storing the test report and/or assisting them in the running
@@ -35,38 +39,8 @@ component for running the test.
 blocked from the probes network point of view. As such they usually require to
 have specified an input list for running the test.
 
-Threat Model
-------------
-
-Our adversary is capable of doing country wide network surveillance and 
-manipulation of network traffic.
-
-The goals of our adversary are:
-
-  * Restrict access to certain content, while not degrading overall quality of 
-    the network
-  * Monitor the network in a way that they are able to identify misuse of it in
-    real time
-
-More specifc to the running of network filtering detection tests:
-
-1. Detect actors performing censorship detection tests
-2. Fool people running such tests into believing that the network is 
-   unrestricted
-
-*Note* that while 2) => 1) it is not true that 1) => 2) as the identification of 
-such actors does not necessarily have to happen in real time.
-While our intention is to minimize the risk of users running OONI probe to be 
-identified, this comes with a tradeoff in accuracy. It is therefore necessary in 
-certain tests to trade-off fingerprintability in favour of tests accuracy.
-
-This is why we divide tests based on what risk the user running it can face, 
-allowing the user to freely choose what threat model they wish to adere to.
-
-Installation
-------------
-
-**Read this before running ooniprobe!**
+Read this before running ooniprobe!
+-----------------------------------
 
 Running ooniprobe is a potentially risky activity. This greatly depends on the
 jurisdiction in which you are in and which test you are running. It is
@@ -79,81 +53,140 @@ Futhermore, ooniprobe takes no precautions to protect the install target machine
 from forensics analysis.  If the fact that you have installed or used ooni
 probe is a liability for you, please be aware of this risk.
 
-Debian based systems
-....................
+OONI in 5 minutes
+=================
 
-`sudo sh -c 'echo "deb http://deb.ooni.nu/ooni wheezy main" >> /etc/apt/sources.list'`
+On debian testing or unstable::
 
-`gpg --keyserver pgp.mit.edu --recv-key 0x49B8CDF4`
+    sudo apt-get install ooniprobe
 
-`gpg --export 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | sudo apt-key add -`
+If you are running debian stable you can get it from backports via::
 
-`sudo apt-get update && sudo apt-get install ooniprobe`
+    sudo sh -c 'echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list'
+    sudo apt-get update && sudo apt-get install ooniprobe
 
-Linux
-.....
+On unix systems::
 
-We believe that ooniprobe runs reasonably well on Debian GNU/Linux wheezy as
-well as versions of Ubuntu such as natty and later releases. Running ooniprobe
-without installing it is supported with the following commands:
+    sudo pip install ooniprobe
 
-`git clone https://git.torproject.org/ooni-probe.git`
+To install it from the current master run::
 
-`cd ooni-probe`
+    sudo pip install https://github.com/TheTorProject/ooni-probe/archive/master.zip
 
-`./setup-dependencies.sh`
+Then run::
 
-`python setup.py install`
+    mkdir my_decks
+    sudo ooniresources --update-inputs --update-geoip
+    oonideckgen -o my_decks/
 
-Setting up development environment
-..................................
+**BUG** Note:
+ooniprobe version 1.2.2 when installed from the debian repository will not
+properly create the ooni home folder and if you run into an error in accessing
+`~/.ooni/` run::
 
-On debian based systems this can be done with:
+    ooniprobe -n blocking/http_requests -u http://google.com/
 
-`Vsudo apt-get install libgeoip-dev python-virtualenv virtualenvwrapper`
+This should generate the home and allow you to run oonideckgen.
 
-`mkvirtualenv ooniprobe`
+The output from the last command will tell you how to run ooniprobe to perform
+the measurement.
 
-`python setup.py install`
+If you would like to contribute measurements to OONI daily you can also add
+this to your crontab::
 
-`pip install -r requirements-dev.txt`
+    @daily ooniprobe $THE_OONI_COMMAND
 
-Other platforms (with Vagrant)
-..............................
+Run this command to automatically update your crontab:: 
 
-`Install Vagrant <https://www.vagrantup.com/downloads.html>`_ 
-and `Install Virtualbox <https://www.virtualbox.org/wiki/Downloads>`_
+      (crontab -l 2>/dev/null; echo "@daily ooniprobe $THE_OONI_COMMAND") | crontab -
 
-**On OSX:**
+Installation
+============
 
-If you don't have it install `homebrew <http://mxcl.github.io/homebrew/>`_
+Debian based systems
+--------------------
 
-`brew install git`
+If you are running Debian testing or Debian unstable you can install ooniprobe
+simply with::
+    
+    apt-get install ooniprobe
 
-**On debian/ubuntu:**
+If you are running Debian stable you can get it from backports via::
 
-`sudo apt-get install git`
+    sudo sh -c 'echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list'
+    sudo apt-get update && sudo apt-get install ooniprobe
 
-1. Open a Terminal and run:
+If you are running Ubuntu 14.04 LTS you can install it from the PPA
+(https://launchpad.net/~irl/+archive/ubuntu/ooni/)::
 
-`git clone https://git.torproject.org/ooni-probe.git`
+    sudo add-apt-repository ppa:irl/ooni
+    sudo apt-get update && sudo apt-get install ooniprobe
 
-`cd ooni-probe/`
+You will be warned that the packages are unauthenticated. This is due to the
+PPA not being signed and is normal behaviour. If you would prefer to verify the
+integrity of the package, use our private Debian repository below.
 
-`vagrant up`
+Mac OS X
+--------
 
-2. Login to the box with:
+You can install ooniprobe on OSX if you have installed homebrew (http://mxcl.github.io/homebrew) with::
 
-`vagrant ssh`
+    brew install ooniprobe
 
-ooniprobe will be installed in `/ooni`.
+Unix systems (with pip)
+-----------------------
 
-3. You can run tests with:
+Make sure you have installed the following depedencies:
 
-`ooniprobe blocking/http_requests -f /ooni/inputs/input-pack/alexa-top-1k.txt`
+  * build-essential
+  * python (>=2.7)
+  * python-dev
+  * pip
+  * libgeoip-dev
+  * libdumbnet-dev
+  * libpcap-dev
+  * libssl-dev
+  * libffi-dev
+  * tor (>=0.2.5.1 to run all the tor related tests)
+
+Then you should be able to install ooniprobe by running::
+
+    sudo pip install ooniprobe
+
+
+Other platforms (with Vagrant)
+------------------------------
+
+1. Install Vagrant (https://www.vagrantup.com/downloads.html) and Install Virtualbox (https://www.virtualbox.org/wiki/Downloads)
+
+2. On OSX:
+
+If you don't have it install homebrew http://mxcl.github.io/homebrew/::
+
+    brew install git
+
+On debian/ubuntu::
+
+    sudo apt-get install git
+
+3. Open a Terminal and run::
+
+    git clone https://git.torproject.org/ooni-probe.git
+    cd ooni-probe/
+    vagrant up
+
+4. Login to the box with::
+
+    vagrant ssh
+
+ooniprobe will be installed in ``/ooni``.
+
+5. You can run tests with::
+
+    ooniprobe blocking/http_requests -f /ooni/example_inputs/alexa-top-1k.txt
 
 Using ooniprobe
----------------
+===============
 
 **Net test** is a set of measurements to assess what kind of internet censorship is occurring.
 
@@ -166,83 +199,125 @@ Using ooniprobe
 **Bouncer** is a service used to discover the addresses of test helpers and collectors.
 
 Configuring ooniprobe
-.....................
+---------------------
 
 You may edit the configuration for ooniprobe by editing the configuration file
-found inside of `~/.ooni/ooniprobe.conf`.
+found inside of ``~/.ooni/ooniprobe.conf``.
 
 By default ooniprobe will not include personal identifying information in the
 test result, nor create a pcap file. This behavior can be personalized.
 
+
+Updating resources
+------------------
+
+To generate decks you will have to update the input resources of ooniprobe.
+
+This can be done with::
+
+    ooniresources --update-inputs
+
+If you get a permission error, you may have to run the command as root or
+change the ooniprobe data directory inside of `ooniprobe.conf`.
+
+On some platforms, for example debian contrib, you will not get all the geoip
+related files needed. In that case it is possible to manually download them
+with ``ooniresources``::
+
+    ooniresources --update-geoip
+
+Generating decks
+----------------
+
+You can generate decks for your country thanks to the oonideckgen command.
+
+If you wish, for example, to generate a deck to be run in the country of Italy,
+you can do so (be sure to have updated the input resources first) by running::
+
+    oonideckgen --country-code IT --output ~/
+
+You will now have in your home a folder called `deck-it`, containing the ooni
+deck (ends with .deck) and the inputs.
+Note: that you should not move the `deck-*` directory once it has been
+generated as the paths to the inputs referenced by the test in the deck are
+absolute. If you want your deck to live in another directory you must
+regenerated it.
+
+
 Running decks
-.............
+-------------
+
+You will find all the installed decks inside of ``/usr/share/ooni/decks``.
 
-You will find all the installed decks inside of `/usr/share/ooni/decks`.
+You may then run a deck by using the command line option ``-i``:
 
-You may then run a deck by using the command line option `-i`:
+As root::
 
-As root:
+    ooniprobe -i /usr/share/ooni/decks/mlab.deck
 
-`ooniprobe -i /usr/share/ooni/decks/mlab.deck`
 
-Or as a user:
+Or as a user::
+
+    ooniprobe -i /usr/share/ooni/decks/mlab_no_root.deck
 
-`ooniprobe -i /usr/share/ooni/decks/mlab_no_root.deck`
 
 Or:
 
-As root:
+As root::
+
+    ooniprobe -i /usr/share/ooni/decks/complete.deck
 
-`ooniprobe -i /usr/share/ooni/decks/complete.deck`
 
-Or as a user:
+Or as a user::
+
+    ooniprobe -i /usr/share/ooni/decks/complete_no_root.deck
 
-`ooniprobe -i /usr/share/ooni/decks/complete_no_root.deck`
 
 The above tests will require around 20-30 minutes to complete depending on your network speed.
 
 If you would prefer to run some faster tests you should run:
-As root:
+As root::
+
+    ooniprobe -i /usr/share/ooni/decks/fast.deck
 
-`ooniprobe -i /usr/share/ooni/decks/fast.deck`
 
-Or as a user:
+Or as a user::
+
+    ooniprobe -i /usr/share/ooni/decks/fast_no_root.deck
 
-`ooniprobe -i /usr/share/ooni/decks/fast_no_root.deck`
 
 Running net tests
-.................
+-----------------
+
+You may list all the installed stable net tests with::
+
+
+    ooniprobe -s
+
 
-You may list all the installed stable net tests with:
+You may then run a nettest by specifying its name for example::
 
-`ooniprobe -s`
 
-You may then run a nettest by specifying its name for example:
+    ooniprobe manipulation/http_header_field_manipulation
 
-`ooniprobe manipulation/http_header_field_manipulation`
 
-It is also possible to specify inputs to tests as URLs:
+It is also possible to specify inputs to tests as URLs::
 
 
-`ooniprobe blocking/http_requests -f httpo://ihiderha53f36lsd.onion/input/37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1`
+    ooniprobe blocking/http_requests -f httpo://ihiderha53f36lsd.onion/input/37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1
+
 
 You can find the result of the test in your current working directory.
 
 By default the report result will be collected by the default ooni collector
 and the addresses of test helpers will be obtained from the default bouncer.
 
-You may also specify your own collector or bouncer with the options `-c` and
-`-b`.
+You may also specify your own collector or bouncer with the options ``-c`` and
+``-b``.
 
-(Optional) Install obfsproxy
-----------------------------
-
-Install the latest version of obfsproxy for your platform.
-
-`Download Obfsproxy <https://www.torproject.org/projects/obfsproxy.html.en>`_
 
 Bridges and obfsproxy bridges
------------------------------
+=============================
 
 ooniprobe submits reports to oonib report collectors through Tor to a hidden
 service endpoint. By default, ooniprobe uses the installed system Tor, but can
@@ -254,12 +329,68 @@ used in torrc, and as returned by https://bridges.torproject.org). If obfsproxy
 bridges are to be used, the path to the obfsproxy binary must be configured.
 See option advanced.obfsproxy_binary, in ooniprobe.conf.
 
+(Optional) Install obfsproxy
+----------------------------
+
+Install the latest version of obfsproxy for your platform.
+
+Download Obfsproxy: https://www.torproject.org/projects/obfsproxy.html.en
+
 Setting capabilities on your virtualenv python binary
------------------------------------------------------
+=====================================================
+
+If your distributation supports capabilities you can avoid needing to run OONI as root::
+
 
-If your distributation supports capabilities you can avoid needing to run OONI as root:
+    setcap cap_net_admin,cap_net_raw+eip /path/to/your/virtualenv's/python
+
+
+Reporting bugs
+==============
+
+You can report bugs and issues you find with ooni-probe on The Tor Projec issue
+tracker filing them under the "Ooni" component: https://trac.torproject.org/projects/tor/newticket?component=Ooni.
+
+You can either register an account or use the group account "cypherpunks" with
+password "writecode".
+
+Contributing
+============
+
+You can download the code for ooniprobe from the following git repository::
+
+
+    git clone https://git.torproject.org/ooni-probe.git
+
+
+It is also viewable on the web via: https://gitweb.torproject.org/ooni-probe.git.
+
+You should then submit patches for review as pull requests to this github repository: 
+
+https://github.com/TheTorProject/ooni-probe
+
+Read this article to learn how to create a pull request on github (https://help.github.com/articles/creating-a-pull-request).
+
+If you prefer not to use github (or don't have an account), you may also submit
+patches as attachments to tickets.
+
+Be sure to format the patch (given that you are working on a feature branch
+that is different from master) with::
+
+
+    git format-patch master --stdout > my_first_ooniprobe.patch
+
+
+Setting up development environment
+----------------------------------
+
+On debian based systems this can be done with::
+
+    sudo apt-get install libgeoip-dev python-virtualenv virtualenvwrapper
+    mkvirtualenv ooniprobe
+    python setup.py install
+    pip install -r requirements-dev.txt
 
-`setcap cap_net_admin,cap_net_raw+eip /path/to/your/virtualenv's/python`
 
 Core ooniprobe Tests
 --------------------
@@ -339,6 +470,35 @@ The currently implemented test helpers are the following:
   * `DNS Test Helpers
     <https://gitweb.torproject.org/oonib.git/blob/HEAD:/oonib/testhelpers/dns_helpers.py>`_
 
+Threat Model
+************
+
+Our adversary is capable of doing country wide network surveillance and 
+manipulation of network traffic.
+
+The goals of our adversary are:
+
+  * Restrict access to certain content, while not degrading overall quality of 
+    the network
+  * Monitor the network in a way that they are able to identify misuse of it in
+    real time
+
+More specifc to the running of network filtering detection tests:
+
+1. Detect actors performing censorship detection tests
+2. Fool people running such tests into believing that the network is 
+   unrestricted
+
+*Note* that while 2) => 1) it is not true that 1) => 2) as the identification of 
+such actors does not necessarily have to happen in real time.
+While our intention is to minimize the risk of users running OONI probe to be 
+identified, this comes with a tradeoff in accuracy. It is therefore necessary in 
+certain tests to trade-off fingerprintability in favour of tests accuracy.
+
+This is why we divide tests based on what risk the user running it can face, 
+allowing the user to freely choose what threat model they wish to adere to.
+
+
 More developer documentation
 ****************************
 
@@ -346,11 +506,10 @@ More developer documentation
     :maxdepth: 2
     :glob:
 
-    architecture
-    oonib
-    reports
     tutorial
     writing_tests
-    api/*
+    reports
     nettests/modules
+    api/*
+    architecture
     glossary
diff --git a/docs/source/nettests/modules.rst b/docs/source/nettests/modules.rst
index 408bbad..357e664 100644
--- a/docs/source/nettests/modules.rst
+++ b/docs/source/nettests/modules.rst
@@ -1,5 +1,5 @@
-nettests
-========
+Implemented NetTests
+====================
 
 .. toctree::
    :glob:





More information about the tor-commits mailing list