[tor-project] [TSoP] stem.client - status report #2

Dave Rolek dmr-x at riseup.net
Wed Jun 13 20:22:21 UTC 2018


Hey everyone!

This is my second status report for the stem.client TSoP project [1].
My previous report was posted to the tor-project ml last month. [2]

This report comes a few days late - sorry about that!


# Updates

## stem.client

The last few weeks I focused heavily on code review [3], and a bit on
stem.client architecture [4].

The outputs of the code review are comments in the Trac ticket [5][6]
and stem's first pull request on GitHub [7], including various bug fixes
[8][9][10][11][12][13][14] and other improvements [just see 7 for all
other commits].

The outputs from the architecture task are currently on a private pad.
They'll be shared more widely after some discussion with atagar and
teor.

These two tasks have taken more time than I anticipated, so there hasn't
been much else I've done.

## tor protocol, general

For stem.client, I looked at leveraging existing binary
serialization/deserialization libraries. At this time, I've decided none
of them fit well in the scope of stem.client, but I've taken some notes
on them to share later. They may be useful to the wider tor dev
community.

Kaitai Struct [15] looked the most promising, having a YAML-based
language that helps produce deserialization code in a number of
programming languages. Unfortunately it doesn't presently support
serialization, but it does seem to be a goal of that project.

If time allows for this TSoP project, I'll write up a .ksy definition
just to try it out.

(I also looked a bit at trunnel. Cool stuff!)


# What's next

## stem.client

I'll be waiting on atagar for a bit of feedback, but then probably
implementing some of the architectural changes. I'm excited to do them!

In the interim, I'll be taking care of some of the
not-so-architecture-dependent changes. I'll also be filing and fixing a
few 'dev' tickets, to make development easier.


## tor-spec, readability updates

I started this project work (pre-proposal) diving into the tor-spec [16]
but admittedly didn't read the tor-design paper [17][18][19] beyond a
glance in the past. So some of the higher-level organization of
communication designs was lost on me.

When I finally realized from the spec that all of a RELAY_CELL payload
is encrypted, not just the data portion, I noted this in IRC, and Roger
pointed me to the paper. Oops! I should've read that long ago.

So I'll be catching up on that while doing further stem.client
implementation.

Because of this roundabout intro to the communication protocol, I have
some insight into how various tor-spec sections could be improved so
that high-level context is clearer when someone jumps into reading
specific sections of the spec. I'll be collecting this feedback and
submitting clarification patches for review. (As a side note, you can
see I've done this sort of readability improvements on Wikipedia in the
past [20].)

Pre-project, Roger suggested I collect spec updates and submit them for
review en-batch, so I'll plan to do that over the course of the project.


# Other Tor things

Cryptoparty Ann Arbor held a workshop at the local library on Saturday
[21]. It went pretty well! I'm participating in the community meeting
today (happening now in #tor-meeting), so more specific updates will be
therein.

I've also welcomed a few new developers to the community, mostly within
#tor-dev. One of them posted to the tor-dev list [22], so I encourage
you to check it out, if you haven't gotten in touch with Simon off-list
already.


# Closing

As with before, I've been active and reachable over IRC, where my nick
is dmr. Please don't hesitate to reach out to me via IRC or email!


Thanks,
Dave


[1]
https://lists.torproject.org/pipermail/tor-dev/2018-April/013090.html
[2]
https://lists.torproject.org/pipermail/tor-project/2018-May/001811.html
[3] https://trac.torproject.org/projects/tor/ticket/26227
[4] https://trac.torproject.org/projects/tor/ticket/26226
[5] https://trac.torproject.org/projects/tor/ticket/26227#comment:4
[6] https://trac.torproject.org/projects/tor/ticket/26227#comment:5
[7] https://github.com/torproject/stem/pull/1
[8]
https://github.com/torproject/stem/pull/1/commits/9ce64fc2baf0f5032e9fb76d9d55d506e23b6e27
[9]
https://github.com/torproject/stem/pull/1/commits/3afe3c1b8ae49275e2586f76fc64b1656ce0beda
[10]
https://github.com/torproject/stem/pull/1/commits/912769c4c1e5bd14e6f053aba69a48fdf6c6746e
[11]
https://github.com/torproject/stem/pull/1/commits/3fa2d718147c761375d3b21dc09150b617b38908
[12]
https://github.com/torproject/stem/pull/1/commits/e899aae0eea7ff39f67a62cf0de3cb068956a029
[13]
https://github.com/torproject/stem/pull/1/commits/ba275219bd50dfc408befca81ef4d3116008dbcc
[14]
https://github.com/torproject/stem/pull/1/commits/476b57a5aabf0c0d31998a0888e28f6ce3416c3e
[15] https://kaitai.io/
[16] https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt
[17] https://www.torproject.org/docs/documentation.html.en#DesignDoc
[18] https://svn.torproject.org/svn/projects/design-paper/tor-design.pdf
[19]
https://svn.torproject.org/svn/projects/design-paper/tor-design.html
[20] https://en.wikipedia.org/wiki/Special:Contributions/David_Rolek
[21] https://aadl.org/node/372209
[22]
https://lists.torproject.org/pipermail/tor-dev/2018-June/013205.html

p.s. I get quite a chuckle out of this commit - gotta have some fun
while developing:
https://github.com/dmr-x/stem/commit/ba275219bd50dfc408befca81ef4d3116008dbcc


More information about the tor-project mailing list