I never cease to be amazed at how fast a month sweeps by. This March I fell in love, fell out of love, got ill with a horrible stomach bug, and wrote a bunch of python code. My favorite was the last one and this is just about that.
My time developing stem this month was almost entirely dedicated to writing a python counterpart for metrics-lib. Most of the effort here went into reader concurrency, server descriptor validation, and lots of testing. For my part this project has the following goals…
- provide the server descriptor, network status, and microdescriptor parsing needed by the controller
- validate that new tor versions comply with the spec and don’t break our parsing
- replace the java metrics-lib so we have a single codebase with multiple maintainers (in other words, persuade Karsten to hack on stem)
- allow applications that just need descriptor data (such as the consensus tracker script) to use cached descriptor data so they don’t require an open control port
At present stem’s implementation just handles server descriptors. A lot more work will be needed to cover the rest of what metrics-lib does.
In other stem news Ravi Padmala, a contributor to several of our projects and a GSoC applicant, made multiple fixes to stem’s version parsing. I never cease to be amazed at how error prone something that sounds as simple as ‘parse the tor version’ can be. Guess that’s why we’re writing a library…
Sathyanarayanan also took the first stab at porting arm’s ExitPolicy class to stem, though more work is still needed there.
Besides stem, roughly an equal amount of my time has gone into this year’s GSoC (for anyone living under a rock we were accepted, yay!). With my org admin hat on I revised our application, made lots ‘o revisions to our volunteer page, and helped to respond to general GSoC inquiries.
With my mentor hat on I reviewed Ravi’s proposal and decided afterward that I dislike the fire-and-forget approach that we usually take with GSoC projects. We give students isolated projects where they can work independently because it is less work for us. On occasion we end the summer with a new core contributor or something we can use, but in general it fails on both counts. I want to try something a little different this year and actually work on the tasks with my applicant. Maybe it’ll work, maybe it’ll drive them mad. We’ll see…
Other random things that I did this month included…
- Attending local presentations by Bruce Schneier and Dan Kaminsky.
- Looking over meejah’s txtorcon, a python controller lib using twisted. It’s impressive that he got this up so quickly and it’s neat to see what a twisted implementation looks like. However, it is missing large and very basic controller functionality (such as parsing controller replies), and what parsing it does do is hacky (
if "COOKIE" in protocolinfo_reply: do cookie authwhich will obviously fail with replies like ‘SAFECOOKIE’). With work though this could be a nice alternative implementation. Meejah is obviously very capable and it’ll be interesting to see where he goes with it. (Correction: mistake on my part, txtorcon actually does have parsing for GETINFO and GETCONF responses)
- Discussed with Norman and Karsten the possibility of Weslayan students working with us again this year on either Stem or Onionoo. It will be a smaller scope than last year’s project if it materializes (just a couple students) which in my opinion is a good thing. Large groups are hard to manage.