
Dave Rolek <dmr-x@riseup.net> writes:
Hi everyone!
Hi Dave, Congratulations on your project/acceptance!
In particular, I'll be working on expanding stem's support to act as a Tor client, aka stem.client, speaking with Tor's ORPort. You can see more about stem in general [1], and read concepts for stem.client [2], but at the end of this email I list my high-level plan for the summer project.
I don't know if you've gotten far enough to discuss code layout/design, but it would be really cool if you follow the "sans-IO" approach for the design of the actual "OR protocol" part of the project. A great example of this is the Hyper/H2 libraries by Cory Benfield for the HTTP2 protocol -- this what drives Twisted HTTP2 support as well as threaded (blocking I/O) servers. https://github.com/python-hyper/hyper-h2 There are several advantages to this approach: - makes for a nice and clean separation between core "protocol stuff" and the I/O. - the above makes testing easier and cleaner (e.g. end-to-end tests that don't use any "real networking", all in-memory) - allows use in blocking / threaded implementations but also async (event-based) implementations (for example, someone could then leverage the bulk of your work to make an asyncio binding without having to re-write all the parsing and state-machine code) - it's the new hotness I'm usually idling in #tor-dev as meejah, ping me any time Good luck with your project, sounds interesting! -- meejah