I would like to write a new BridgeDB Distributor. Bridge distribution via Twitter direct messages would be a new channel with high collateral damage upon censorship. I would therefore write a Twitter bot implemented as a BridgeDB Distributor, with an optional rate control mechanism. I would also prepare the way for other distributors by writing reusable code, and hopefully starting work on another bot-like distributor.

1. What project would you like to work on?

I would like to write a new BridgeDB Distributor: a distributor that would act as a Twitter bot, responding to direct messages sent by Twitter users. We have been discussing this project with isis and sysrqb a bit, and I think I have a realistic plan for a useful new distributor, as well as ideas for possible further expansion, should the critical deliverables be met in good time.

The main plan is:

Further expansion plans would be (at least a subset of these is very desirable, but outside of critical deliverable scope, unless we decide otherwise):

In terms of general code architecture, the idea would be to write a new generic bridgedb.Dist.Distributor with a hashring for 'handles'. (IRC would reuse most of this, XMPP / other federated communications systems might inherit and expand/override to have subrings per domain/network, etc. (this can also be done for Twitter - do we need it? Probably not; but worth discussing/thinking a bit.))

Twitter distributor would subclass this handle-based distributor, and implement actual bot functionality via Twisted. Parts of existing code can be reused.

Discussion points:

Rough timeline (to be discussed later on / made more concrete as needed):

2. Point us to a code sample:

Working PoC for a bridge-distributor-twitter-bot: https://github.com/wfn/twidibot (as of now, it can be interacted with here: https://twitter.com/wfntestacct)

torsearch backend code from last year is at https://github.com/wfn/torsearch. (Probably most / a lot of work at the nasty bottleneck solutions (in the *.sql scripts) and in the onionoo_api query logic.) But more code samples possible.

3. Why do you want to work with the Tor Project in particular?

I would like to continue with my efforts to help the Tor community, and to develop for the Tor Project.

4. Tell us about your experiences in free software development environments.

Besides Tor, nothing substantial in terms of free software development. Active free software user and supporter. Experience in using tools of the (open source) trade.

5. Will you be working full-time on the project for the summer?

My plan is (and I have spent time making sure this is possible) to be able to devote as much time to GSoC this summer as last summer (if not more.) I will be doing a "0.3"-time (basically quarter-time) job (which is mostly remote) for my faculty (light sysadmin/programming.) No academic obligations throughout the whole coding period, though.

6. Will your project need more work and/or maintenance after the summer ends? What are the chances you will stick around and help out with that and other related projects?

Yes, I think so. It should become a natural part of the BridgeDB codebase, but if all goes well, it will get deployed and actually used. First $x months will probably require at least some (if not continuous) attention. In addition, further work on BridgeDB definitely possible. In any case, no plans on disappearing!

7. What is your ideal approach to keeping everybody informed of your progress, problems, and questions over the course of the project?

Bi-weekly reports to @tor-dev, further discussion on @tor-dev (or with wider community, e.g. @tor-talk) or privately. Problems, etc. discussed via email; also via IRC for more synchronous discussion.

8. What school are you attending? What year are you, and what's your major/degree/focus? If you're part of a research group, which one?

Vilnius University, philosophy undergraduate, 3rd year.

9. Is there anything else we should know that will make us like your project more?

I would be very excited to be able to focus my efforts on Tor once again! I hope to continue to be involved.

This is the only GSoC project I am applying to.