Update GSoC authored by Gaba's avatar Gaba
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
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)
--- ---
... ...
......