Besides meeting every week on IRC for status update and team discussions, our
team also uses the following mechanisms to organize our work:
*[Team rotations](./NetworkTeam/TeamRotations): Our rotation calendar - we rotate some 'duties' like bug triage, here you will find all rotation schedule and more information on the work that has to be done.
*[Core Tor Releases](./NetworkTeam/CoreTorReleases): Here is more information about **tor** release schedules, guidelines for release planning and ideas of how we can improve this process.
*[Filing a ticket](./NetworkTeam/FilingTicketNetworkTeam) for **Core Tor**.
[proposals](https://gitweb.torproject.org/torspec.git/tree/proposals/001-process.txt) - normally we discuss them on [tor-dev@ mailing
list](https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev) and try to
finalize the discussions on [IRC meetings](./NetworkTeam/MeetingSchedule).
### How to find us
We have what we call 'patch parties' meetings, they are for any volunteer to
come with patches they want to discuss or need review for. [Check out the
meetings information above for more
details](#MeetingsSchedule).
If you want to reach someone from the team between these meetings to ask a
development-related question, just go to **#tor-dev** IRC channel, and somebody
from the team might either be around or appear later and get back to you.
Our asynchronous medium of communication is the [tor-dev@ mailing
list](https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev). This list
is public in the sense that anyone can subscribe, send emails and read
archives. Feel free to subscribe and just listen if you want, and feel free to
post if you have a question that you think is on topic.
## Becoming a volunteer
Thanks for volunteering with us! This part of our wiki is a collection of
information we believe might be useful for you who wants to help us develop our
tools.
### Getting started
You could start by submitting a patch! Patches can help you learn our code and
how our team work.
### Tips on finding a patch to work on
[We have people on rotation triaging bugs every week](./NetworkTeam/TeamRotations), you could look for one of them online and ask for suggestions of what to work on.
Or you can dig it yourself! You are welcome to just create new tickets on
https://gitlab.torproject.org if there is something in particular that you want
to help with or a bug you found and has a patch for.
### Tips on finding your way around our code
For the past couple years we spent great amount of our time documenting our
code to help people understand it. Here are some links for documentation that
has helpful information about what you need to know to hack on Tor!
* First, read [GettingStarted.md](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/GettingStarted.md) to learn how to get a start in Tor development.
* If you've decided to write a patch, [CodingStandards.txt](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/CodingStandards.md) will give you a bunch of information about how we structure our code.
* It's important to get code right! Reading [WritingTests.md](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/WritingTests.md) will tell you how to write and run tests in the Tor codebase.
* There are a bunch of other programs we use to help maintain and develop the codebase: [HelpfulTools.md](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/HelpfulTools.md) can tell you how to use them with Tor.
* If it's your job to put out Tor releases, see [ReleasingTor.md](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/ReleasingTor.md) so that you don't miss any steps!
* A very important part of our development is code review, if you would like to collaborate with this part or want to sharp your skills in this front, check [HowToReview.md](https://gitweb.torproject.org/tor.git/tree/doc/HACKING/HowToReview.md).
#### tor-guts:
The core Tor development team created
[tor-guts](https://gitweb.torproject.org/user/nickm/torguts.git/tree/), a
compilation of chapters that aims to explain the general structure of the Tor
codebase, how it fits together, what functionality is available for extending
Tor, and gives some notes on how Tor got that way.
Some of the things we cover with this documentation:
*[Chapter 01e-os-compat.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01e-os-compat.md) covers networking and filesystems functions that helps us wrap differences between various operating systems we support.
*[Chapter 01d-crypto.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01d-crypto.md) is dedicated to Lower-level cryptography functionality in Tor, in general Tor code shouldn't be calling crypto library directly (e.g. OpenSSL), this documentation helps developers understand the functions available in src/common/crypto\*.c or src/common/tortls.c that they can use these libraries indirectly.
*[Chapter 01c-time.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01c-time.md) cover Tor’s time-related functions, they exist to help developers parse time, or access cached time for when you have to do thousands of call and don’t want to overload the system, or information on how to schedule things.
*[Chapter 01g-strings.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01g-strings.md) it's full of functions for manipulating the C string abstraction. It contains some often-missed highlights that will be helpful for developers who learning the ‘tor way’ of doing things in order to collaborate with our code base.
*[Chapter 01b-collections.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01b-collections.md) talks about the different collections we have available and how these resources are useful when writing code for Tor.
*[Chapter 01a-memory.md](https://gitweb.torproject.org/user/nickm/torguts.git/tree/01a-memory.md) describes Tor’s functions for memory management. We advise developers to never use 'malloc', 'calloc', 'realloc, or 'free' on their own; always use the variants prefixed with 'tor_'. We also explain Tor’s convention for when the developer is writing their own functions, and some other choices we have made to help collaborators understand them.
#### Modules and functions:
We use doxygen to generate documentation in html out of our comments on the
code. With that we have documentation for all the modules in Tor, their data
flows, their intended interactions, and their actual behaviors. As well as
nearly all the functions.
You will find this documentation in two places:
1. In the source code, at the start of each C file.
1. When you click on individual C files under https://people.torproject.org/~nickm/tor-auto/doxygen/files.html (scroll down to "detailed description").
*[Bug Smash Fund Description](https://blog.torproject.org/tors-bug-smash-fund-86k-raised) -> [Bug Smash Fund Tickets](https://trac.torproject.org/projects/tor/query?keywords=~BugSmashFund&component=%5ECore+Tor&col=id&col=summary&col=status&col=type&col=priority&col=milestone&col=component&order=priority)
#### Priorities
1. security fixes for medium/high severity bugs [No sponsor]
1. Regular releases [no sponsor] - Nick with help from Team
1. sbws - Alex [No sponsor for Network Team, but sponsored for Juga] (support from Georg/GeKo )
1. IPv6 Support [S55] - Nick, David
1. Walking Onions specs [S69] - Nick
1. Supporting S30 and S28 (anticensorship) work - Alex
1. HS DoS defenses [No sponsor, yet?] - George & David (with a little Nick?)
1. Library size reduction [No sponsor] - Alex & David (with a little Nick?)
1. Google Summer of Code & Outreachy - Nickm, Alex
Other priorities (everybody):
* community handling:
* volunteers
* relay operators
* answering email lists (tor-dev@, tor-relays@)
* do support on irc? (#tor-dev, #tor, etc.)
* fixing bugs for each release
* release blockers
* what else does other teams ask us for?
* liaison with network health team (usually 1-2 hours a week for dgoulet)
* Fixing bugs for android and iOS for the guardian project [see #33522 and #33837 for ios issues]
* ongoing tech-debt reduction
* Fixing windows bugs (ahf / ... others?):
* [UTF-8/16 names in filepaths makes Tor unable to start: #10416]
* Issues with mmap on some platform
* issues with mmap leading to relays spinning on consdiffcache [#24857 #24857]
* condition variable issue with 100% cpu [#30187 #30187]
* Windows DLL load order (possibly a Tor Browser packaging bug) reproducible in CI [#33702, #33643]
* Writing more grant proposals
* Miscelaneous onion service tasks that require our attention
* Onionbalance. Standardizing Onion-Location with the IETF. HTTPS-E
* Ricochet Refresh support
* Gitlab transition stuff for network-team related projects (ahf / gaba):
* CI?
* Code base movements: chutney, tor.git, fallback-scripts.git on Github and git.torproject.org, torsocks, trunnel