The following is a page to help with GSoC / SoP / Outreachy coordination.
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