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/9ce64fc2baf0f5032e9fb76d9d... [9] https://github.com/torproject/stem/pull/1/commits/3afe3c1b8ae49275e2586f76fc... [10] https://github.com/torproject/stem/pull/1/commits/912769c4c1e5bd14e6f053aba6... [11] https://github.com/torproject/stem/pull/1/commits/3fa2d718147c761375d3b21dc0... [12] https://github.com/torproject/stem/pull/1/commits/e899aae0eea7ff39f67a62cf0d... [13] https://github.com/torproject/stem/pull/1/commits/ba275219bd50dfc408befca81e... [14] https://github.com/torproject/stem/pull/1/commits/476b57a5aabf0c0d31998a0888... [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/ba275219bd50dfc408befca81ef4d3116008dbc...