|
|
The following is a page to help with GSoC / SoP / Outreachy coordination.
|
|
|
|
|
|
# GOOGLE SUMMER OF CODE'S PROJECTS FOR 2022
|
|
|
# GOOGLE SUMMER OF CODE'S PROJECTS FOR 2023
|
|
|
|
|
|
The following 4 projects are the ones we have in 2022 for students from Google Summer of Code. You can[ read about how to contact us and apply](https://gitlab.torproject.org/tpo/team/-/wikis/How-To-Apply-to-Google-Summer-of-Code).
|
|
|
|
|
|
## 1. Tor Weather
|
|
|
|
|
|
- Mentor: Geko
|
|
|
- Hours required: 175 hours
|
|
|
- Skills required: python
|
|
|
- Skills preferred: knowledge on databases
|
|
|
- Expected outcome: A service "Tor Weather" ready to be deployed
|
|
|
- Difficulty: medium
|
|
|
|
|
|
### Problem
|
|
|
|
|
|
If a relay disappears today, it is unlikely that anyone will notice or even send an email to the operator.
|
|
|
|
|
|
The entire Tor network would benefit from a "Tor Weather" service to notify relay and bridge operators when the state of their relays has changed. This has a number of benefits, including:
|
|
|
|
|
|
- increasing the likelihood that relay operators notice problems and actually mitigate them.
|
|
|
- showing relay operators that someone actually cares if their relays go down or become outdated or have other problems
|
|
|
- giving relay operators information about best-practices, e.g not running outdated versions, fixing their DNS, etc...
|
|
|
|
|
|
Right now, there is very little direct feedback given to relay operators. This can mean that operators become discouraged and stop running relays.
|
|
|
|
|
|
### Proposal
|
|
|
|
|
|
This project would involve the implementation of an email notification service that relay operators can subscribe to and choose which notifications they want to receive about their relay.
|
|
|
|
|
|
This project already existed and was known as "Tor Weather". It was unfortunately discontinued due to lack of maintenance and resources to keep the project alive. However, we think that this is still a great idea and the most efficient way to achieve and maintain a healthy Tor network on the long run. The resulting service should conform to our current [styleguide](https://styleguide.torproject.org/).
|
|
|
|
|
|
There is a repository, maintained independently from the Tor project, with code that we could think about reusing and expanding upon for implementing this proposal. It's at <https://github.com/thingless/torweather/>. There are additional resources below which should get evaluated to find the right design choice for a new Tor Weather service.
|
|
|
|
|
|
This notification service should support subscribing via single relay fingerprint or MyFamily groups. Additionally, it should not need any subscription change if a new relay gets added to the family. As this service would store email addresses of potential tor relay operators, they should be kept private and safeguarded. However, a passive observer can collect them by watching outbound email traffic if no TLS is used. As such, this service should suggest using a dedicated email address for this service.
|
|
|
|
|
|
Once a basic email notification service is implemented, these are some ideas for potential notification types that could be implemented within it:
|
|
|
|
|
|
```plaintext
|
|
|
Email me when my node is down - Here we should decide how long before we send a notification?
|
|
|
Email me when my relay is affected by a security vulnerability
|
|
|
Email me when my relay runs an end-of-life version of tor
|
|
|
Email me when my relay runs an outdated tor version
|
|
|
Email me when my exit relay fails to resolve hostnames (DNS failure)
|
|
|
Email me when my relay loses the stable/guard/exit flag
|
|
|
Email me when my MyFamily configuration is broken
|
|
|
Email me when you detect issues with my relay
|
|
|
Email me with suggestions for configuration improvements for my relay
|
|
|
Email me when my relay is on the top 20/50/100 relays list
|
|
|
Email me with monthly/quarterly status information, e.g what is my position in the overall relay list, how much traffic did my relay do during the last month, etc...
|
|
|
Email me about new relay requirements
|
|
|
Email me about tor relay operator events
|
|
|
```
|
|
|
|
|
|
For each notification implemented, there should be a corresponding specification written to describe the meaning of each notification type.
|
|
|
|
|
|
### Resources:
|
|
|
|
|
|
- Current issue in our bug tracker: https://gitlab.torproject.org/tpo/network-health/team/-/issues/107
|
|
|
- Another Tor Weather code base: <https://github.com/meejah/tor-weather>
|
|
|
- Old Tor Weather experience: <https://web.archive.org/web/20141004055709/https://weather.torproject.org/subscribe/>
|
|
|
- Our old code base: <https://gitweb.torproject.org/weather.git/>
|
|
|
|
|
|
|
|
|
## 2 **OONI Probe Network Experiments**
|
|
|
|
|
|
- Mentor: Simone
|
|
|
- Expected outcomes: New or improved network experiments.
|
|
|
- Skills required/preferred: Knowledge of the network programming.
|
|
|
- Expected size of project: 350 hours
|
|
|
- Difficulty: hard
|
|
|
|
|
|
### Background
|
|
|
|
|
|
The [Open Observatory of Network
|
|
|
Interference](https://ooni.org/) (OONI) is a free software
|
|
|
project that aims to empower decentralized efforts in increasing
|
|
|
transparency of internet censorship around the world. We develop a
|
|
|
software, called [OONI Probe](https://ooni.org/install/),
|
|
|
that users can run to measure:
|
|
|
|
|
|
- blocking of websites;
|
|
|
|
|
|
- blocking of instant messaging apps (WhatsApp, Facebook Messenger and Telegram);
|
|
|
|
|
|
- blocking of censorship circumvention tools (such as Tor);
|
|
|
|
|
|
- presence of systems (middleboxes) in your network that might be
|
|
|
responsible for censorship and/or surveillance;
|
|
|
|
|
|
- speed and performance of your network.
|
|
|
|
|
|
By running OONI Probe, users can collect data that can potentially serve
|
|
|
as evidence of internet censorship since it shows how, when, where, and
|
|
|
by whom it is implemented.
|
|
|
|
|
|
### Proposal
|
|
|
|
|
|
*Prerequisites:* Knowledge of network programming.
|
|
|
|
|
|
This project idea is about researching and developing new network
|
|
|
experiments to be integrated inside the [OONI Probe
|
|
|
CLI](https://github.com/ooni/probe-cli/). The candidate
|
|
|
will write network measurements code and unit/integration tests for
|
|
|
OONI's [measurement
|
|
|
engine](https://github.com/ooni/probe-cli/tree/master/internal).
|
|
|
|
|
|
Here are some issues that candidates could consider for proposing
|
|
|
projects:
|
|
|
|
|
|
- [im: rewrite using primitives from websteps](https://github.com/ooni/probe/issues/1761)
|
|
|
|
|
|
- [test-lists: design prototype gardener for maintaining the
|
|
|
lists](https://github.com/ooni/probe/issues/1748)
|
|
|
|
|
|
- [tlstool: implement iterative network
|
|
|
tracing](https://github.com/ooni/probe/issues/1559)
|
|
|
|
|
|
- [httphostheader: implement comparison with
|
|
|
control](https://github.com/ooni/probe/issues/1560)
|
|
|
|
|
|
- [fbmessenger: measure HTTPS endpoints](https://github.com/ooni/probe/issues/1611)
|
|
|
|
|
|
- [ssh: write experiment to detect blocking](https://github.com/ooni/probe/issues/1663)
|
|
|
|
|
|
- [middlebox: HTTP PURGE middle box detection](https://github.com/ooni/probe/issues/1671)
|
|
|
|
|
|
- [whatsapp: measure WebSocket endpoints](https://github.com/ooni/probe/issues/1587)
|
|
|
|
|
|
### Resources
|
|
|
|
|
|
- [A brief introduction to OONI](https://ooni.org/post/brief-introduction-to-ooni/)
|
|
|
|
|
|
- The [ooni/probe-cli](https://github.com/ooni/probe-cli) repository at GitHub
|
|
|
|
|
|
- The [ooni/spec](https://github.com/ooni/spec) repository at GitHub
|
|
|
|
|
|
- [Tutorials on writing new experiments](https://github.com/ooni/probe-cli/tree/master/internal/tutorial)
|
|
|
|
|
|
- [All the issues marked as GSoC + methodology](https://github.com/ooni/probe/issues?page=1&q=is%3Aopen+is%3Aissue+label%3AGSoC+label%3Amethodology)
|
|
|
|
|
|
## 3. **OONI Probe CLI Improvements**
|
|
|
|
|
|
- Mentor: Simone
|
|
|
- Expected outcomes: Improved OONI Probe CLI codebase.
|
|
|
- Skills required/preferred: Knowledge of the Go programming language.
|
|
|
- Expected size of project: 350 hours
|
|
|
- Difficulty: hard
|
|
|
|
|
|
|
|
|
### Background
|
|
|
|
|
|
The [Open Observatory of Network Interference](https://ooni.org/) (OONI) is a free software
|
|
|
project that aims to empower decentralized efforts in increasing
|
|
|
transparency of internet censorship around the world. We develop a
|
|
|
software, called [OONI Probe](https://ooni.org/install/),
|
|
|
that users can run to measure:
|
|
|
|
|
|
- blocking of websites;
|
|
|
|
|
|
- blocking of instant messaging apps (WhatsApp, Facebook Messenger and Telegram);
|
|
|
|
|
|
- blocking of censorship circumvention tools (such as Tor);
|
|
|
|
|
|
- presence of systems (middleboxes) in your network that might be
|
|
|
responsible for censorship and/or surveillance;
|
|
|
|
|
|
- speed and performance of your network.
|
|
|
|
|
|
By running OONI Probe, users can collect data that can potentially serve
|
|
|
as evidence of internet censorship since it shows how, when, where, and
|
|
|
by whom it is implemented.
|
|
|
|
|
|
### Proposal
|
|
|
|
|
|
*Prerequisites:* Knowledge of the Go programming language.
|
|
|
|
|
|
This project idea is about implementing improvements in the [OONI Probe
|
|
|
CLI](https://github.com/ooni/probe-cli). The candidate will
|
|
|
research how to implement improvements, refactor existing code, extend
|
|
|
or rewrite existing functionality, and write unit/integration tests for
|
|
|
the CLI.
|
|
|
|
|
|
Here are some issues that candidates could consider for proposing
|
|
|
projects:
|
|
|
|
|
|
- [probe-cli: reduce the complexity of database interactions](https://github.com/ooni/probe/issues/2024)
|
|
|
|
|
|
- [engine: submit compressed measurements](https://github.com/ooni/probe/issues/2014)
|
|
|
|
|
|
- [https://github.com/ooni/probe/issues/1692](https://github.com/ooni/probe/issues/1692)
|
|
|
|
|
|
- [cli: add support for using proxy settings](https://github.com/ooni/probe/issues/1488)
|
|
|
|
|
|
- [miniooni\'s CLI runnable from probe-cli\'s CLI](https://github.com/ooni/probe/issues/1546)
|
|
|
|
|
|
- [cli: fallback to Psiphon when using OONI services are blocked](https://github.com/ooni/probe/issues/1519)
|
|
|
|
|
|
### Resources
|
|
|
|
|
|
- [A brief introduction to OONI](https://ooni.org/post/brief-introduction-to-ooni/)
|
|
|
|
|
|
- The [ooni/probe-cli](https://github.com/ooni/probe-cli) repository at GitHub
|
|
|
|
|
|
- [The OONI Probe CLI\'s user guide](https://ooni.org/support/ooni-probe-cli)
|
|
|
|
|
|
- [All the issues marker as GSoC + ooni/probe-cli](https://github.com/ooni/probe/issues?q=is%3Aopen+is%3Aissue+label%3AGSoC+label%3Aooni%2Fprobe-cli)
|
|
|
|
|
|
## 4. **OONI Explorer Improvements**
|
|
|
|
|
|
- Mentor: Arturo
|
|
|
- Expected outcomes: Improved country pages to display more forms of blocking at a country level
|
|
|
- Skills required/preferred: Javascript development and ideally familiarity with React and next.js
|
|
|
- Expected size of project: 175 hours
|
|
|
- Difficulty: medium
|
|
|
|
|
|
### **Background**
|
|
|
|
|
|
The [Open Observatory of Network
|
|
|
Interference](https://ooni.org/) (OONI) is a free software
|
|
|
project that aims to empower decentralized efforts in increasing
|
|
|
transparency of internet censorship around the world. We develop a
|
|
|
software, called [OONI Probe](https://ooni.org/install/),
|
|
|
that users can run to measure:
|
|
|
|
|
|
- blocking of websites;
|
|
|
|
|
|
- blocking of instant messaging apps (WhatsApp, Facebook Messenger and Telegram);
|
|
|
|
|
|
- blocking of censorship circumvention tools (such as Tor);
|
|
|
|
|
|
- presence of systems (middleboxes) in your network that might be
|
|
|
responsible for censorship and/or surveillance;
|
|
|
|
|
|
- speed and performance of your network.
|
|
|
|
|
|
By running OONI Probe, users can collect data that can potentially serve
|
|
|
as evidence of internet censorship since it shows how, when, where, and
|
|
|
by whom it is implemented.
|
|
|
|
|
|
### **Proposal**
|
|
|
|
|
|
*Prerequisites:* Knowledge of Javascript and ideally React.
|
|
|
|
|
|
As part of this project you would help us to improve OONI Explorer.
|
|
|
Specifically you will work on improving the OONI Explorer country pages
|
|
|
to enrich them with data coming from new experiments and make use of new
|
|
|
backend API calls to display more rich information about blocking.
|
|
|
Moreover this work will entail modernizing the code base, improving the
|
|
|
user interface, fixing usability issues, and writing more
|
|
|
unit/integration tests.
|
|
|
|
|
|
### **Resources**
|
|
|
|
|
|
- [A brief introduction to OONI](https://ooni.org/post/brief-introduction-to-ooni/)
|
|
|
|
|
|
- The [ooni/explorer](https://github.com/ooni/explorer) repository at GitHub
|
|
|
|
|
|
- The [explorer.ooni.org](https://explorer.ooni.org/) website
|
|
|
|
|
|
- Open issues: [https://github.com/ooni/explorer/issues](https://github.com/ooni/explorer/issues)
|
|
|
|
|
|
---
|
|
|
|
... | ... | |