# README.1st

## In this directory

This directory has helpful information about what you need to know to
hack on Tor!

First, read `GettingStarted.md` and `GettingStartedRust.md`
to learn how to get a start in Tor development.

If you've decided to write a patch, `CodingStandards.md` and
`CodingStandardsRust.md` will give you a bunch of information
about how we structure our code.

It's important to get the code right!  Reading `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` can tell you how to use them
with Tor.

If it's your job to put out Tor releases, see `ReleasingTor.md` so
that you don't miss any steps!

## Additional Information

For full information on how Tor is supposed to work, look at the files in
[Tor specification](https://gitweb.torproject.org/torspec.git/tree).

For an explanation of how to change Tor's design to work differently, look at
[the Tor proposal process](https://gitweb.torproject.org/torspec.git/plain/proposals/001-process.txt).

For the latest version of the code, get a copy of git, and

```console
$ git clone https://git.torproject.org/git/tor
```

For a copy of Tor's original design paper, see
[here](https://spec.torproject.org/tor-design). Note that Tor has changed in
many ways since 2004.

For a large collection of security papers, many of which are related to Tor,
see [Anonbib's Selected Papers in Anonymity](https://www.freehaven.net/anonbib/).

## Stay in touch

We talk about Tor on the `tor-talk` mailing list.  Design proposals and
discussion belong on the `tor-dev` mailing list.  We hang around on
irc.oftc.net, with general discussion happening on `#tor` and development
happening on `#tor-dev`.

The other files in this `HACKING` directory may also be useful as you
get started working with Tor.

Happy hacking!
