$Id$
Legend:
SPEC!!  - Not specified
SPEC    - Spec not finalized
N       - nick claims
R       - arma claims
P       - phobos claims
S       - Steven claims
E       - Matt claims
M       - Mike claims
J       - Jeff claims
I       - ioerror claims
W       - weasel claims
K       - Karsten claims
C       - coderman claims
        - Not done
        * Top priority
        . Partially done
        o Done
        d Deferrable
        D Deferred
        X Abandoned

=======================================================================

External constraints:

For June/July:
NR  - Work more on Paul's NRL research problem.

For March 22:
I   * Email auto-responder
      * teach gettor how to ask for (and attach) split files.

K   . Metrics.
      . With Mike's help, use Torflow to start doing monthly rudimentary
        performance evaluations:
        . Circuit throughput and latency
        - Measure via Broadband and dialup
      . Publish a report addressing key long-term metrics questions:
        . What metrics should we present?
        . What data are available for these metrics?
        . What data are missing, and can collect them safely? Can we
          publish them safely?
        . What systems are available to present this data?

E   . Vidalia improvements
      o Vidalia displays by-country user summary for bridge operators
?       - write a help page for vidalia, "what is this"

For mid August:

Section 0, items that didn't make it into the original roadmap:

0.1, installers and packaging
C . i18n for the msi bundle files
P . more consistent TBB builds
IC- get a buildbot up again. Have Linux and BSD build machines.
    (Windows would be nice but realistically will come later.)
E - Get Tor to work properly on the iPhone.

3.1, performance work. [Section numbers in here are from performance.pdf]
  - High-priority items from performance.pdf
RS  - 1.2, new circuit window sizes. make the default package window lower.
R+  - 2.1, squeeze loud circuits
      - Evaluate the code to see what stats we can keep about circuit use.
      - Write proposals for various meddling. Look at the research papers
        that Juliusz pointed us to. Ask our systems friends. Plan to put
        a lot of the parameters in the consensus, so we can tune it with
        short turnaround times.
E+  - 2.5, Change Vidalia's default exit policy to not click "other
      protocols". Or choose not to. Think this through first.
R+  - 2.6, Tell users not to file-share.
      - Put statement on the Tor front page
      - Put statement on the download pages too
      - And the FAQ
    - 3.1.2, Tor weather
I     - Implement time-to-notification (immediate, a day, a week)
I     - Get a relay operator mailing list going, with a plan and supporting
        scripts and so on.
R     - Link to them from the Tor relay page
R     - and the torrc.sample?
SM  - 4.1, balance traffic better
      - Steven and Mike should decide if we should do Steven's plan
        (rejigger the bandwidth numbers at the authorities based on
        Steven's algorithm), or Mike's plan (relay scanning to identify
        the unbalanced relays and fix them on the fly), or both.
      - Figure out how to actually modify bandwidths in the consensus. We
        may need to change the consensus voting algorithm to decide what
        bandwidth to advertise based on something other than median:
        if 7 authorities provide bandwidths, and 2 are doing scanning,
        then the 5 that aren't scanning will outvote any changes. Should
        all 7 scan? Should only some vote? Extra points if it doesn't
        change all the numbers every new consensus, so consensus diffing
        is still practical.
?   - 4.5, Older entry guards are overloaded
      - Pick a conservative timeout like a month, and implement.
M   - 5.2, better timeouts for giving up on circuits/streams
      - clients gather data about circuit timeouts, and then abandon
        circuits that take more than a std dev above that.

4.1, IOCP / libevent / windows / tor
N - get it working for nick
N - put out a release so other people can start testing it.
N - both the libevent buffer abstraction, and the
    tor-uses-libevent-buffer-abstraction. Unless we think that's
    unreachable for this milestone?

4.2.1, risks from becoming a relay
S - Have a clear plan for how users who become relays will be safe,
    and be confident that we can build this plan.
    - evaluate all the various attacks that are made possible by relaying.
      specifically, see "relaying-traffic attacks" in 6.6.
    - identify and evaluate ways to make them not a big deal
      - setting a low RelayBandwidth
      - Nick Hopper's FC08 paper suggesting that we should do a modified
        round-robin so we leak less about other circuits
      - instructing clients to disable pings in their firewall, etc
    - pick the promising ones, improve them so they're even better, and
      spec them out so we know how to build them and how much effort is
      involved in building them.

4.5, clients download less directory info
N * deploy proposal 158.
N - decide whether to do proposal 140. if so, construct an implementation
    plan for how we'll do it. if not, explain why not.

5.1, Normalize TLS fingerprint
N o write a draft list of possible attacks for this section, with
    estimates about difficulty of attack, difficulty of solution, etc
N - revisit the list and revise our plans as needed
NR- put up a blog post about the two contradictory conclusions: we can
    discuss the theory of arms races, and our quandry, without revealing
    any specific vulnerabilities. (or decide not to put up a blog post,
    and explain why not.)

5.5, email autoresponder
I . maintenance and keeping it running

5.7.2, metrics

XXX.

6.2, Vidalia work
E - add breakpad support or similar for windows debugging
E o let vidalia change languages without needing a restart
E - Implement the status warning event interface started for the
    phase one deliverables.
E - Work with Steve Tyree on building a Vidalia plugin API to enable
    building Herdict and TBB plugins.

6.3, Node scanning
M - Steps toward automation
    - Set up email list for results
    - Map failure types to potential BadExit lines
M - Improve the ability of SoaT to mimic various real web browsers
    - randomizing user agents and locale strings
    - caching, XMLHTTPRequest, form posting, content sniffing
    - Investigate ideas like running Chrome/xulrunner in parallel
M - Other protocols
    - SSH, IMAPS, POPS, SMTPS
M - Add ability to geolocalize exit selection based on scanner location
    - Use this to rescan dynamic urls filtered by the URL filter

6.4, Torbutton development
M - Resolve extension conflicts and other high priority bugs
M - Fix or hack around ugly firefox bugs, especially Timezone issue.
    Definitely leaning towards "hack around" unless we see some
    level of love from Mozilla.
M - Vidalia New Nym Integration
    - Implement for Torbutton to pick up on Vidalia's NEWNYM and clear
      cookies based on FoeBud's source
    - Do this in such a way that we could adapt polipo to purge cache
      if we were so inclined
M - Write up a summary of our options for dealing with the google
    you-must-solve-a-captcha-to-search problem, and pick one as our
    favorite option.

6.6, Evaluate new anonymity attacks
S - relaying-traffic attacks
    - original murdoch-danezis attack
    - nick hopper's latency measurement attack
    - columbia bandwidth measurement attack
    - christian grothoff's long-circuit attack
S - client attacks
    - website fingerprinting

7.1, Tor VM Research, analysis, and prototyping
C . Get a working package out, meaning other people are testing it.

7.2, Tor Browser Bundle
I - Port to one of OS X or Linux, and start the port to the other.
I . Make it the recommended Tor download on Windows
I - Make sure it's easy to un-brand TBB in case Firefox asks us to
I - Evaluate CCC's Freedom Stick

