Author: atagar Date: 2012-02-26 22:01:45 +0000 (Sun, 26 Feb 2012) New Revision: 25478
Modified: website/trunk/getinvolved/en/volunteer.wml Log: Stem PathSupport project idea
Adding a project that I'd really like to mentor this GSoC: a stem port for TorCtl's PathSupport module. Hopefully this idea will get a few interested students...
Modified: website/trunk/getinvolved/en/volunteer.wml =================================================================== --- website/trunk/getinvolved/en/volunteer.wml 2012-02-25 21:04:13 UTC (rev 25477) +++ website/trunk/getinvolved/en/volunteer.wml 2012-02-26 22:01:45 UTC (rev 25478) @@ -524,6 +524,11 @@ testing, documentation, and API. This project is not yet feature complete. </p>
+ <p> + <b>Project Ideas:</b><br /> + <i><a href="#stemPathsupport">Stem PathSupport Capabilities</a></i> + </p> + <a id="project-metrics"></a> <h3><a href="https://metrics.torproject.org/">Metrics</a> (code: <a href="https://gitweb.torproject.org/metrics-db.git">db</a>, <a @@ -820,6 +825,63 @@ robustness.</p> </li>
+ <a id="stemPathsupport"></a> + <li> + <b>Stem PathSupport Capabilities</b> + <br> + Priority: <i>Medium</i> + <br> + Effort Level: <i>High</i> + <br> + Skill Level: <i>Medium</i> + <br> + Likely Mentors: <i>Damian (atagar)</i> + <p><a + href="https://trac.torproject.org/projects/tor/wiki/doc/stem%22%3EStem</a> is a + python controller library for tor. Like it's predecessor, <a + href="#project-torctl">TorCtl</a>, it uses tor's <a + href="https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt%22%3Ec... + protocol</a> to help developers program against the tor process, enabling + them to build things similar to <a href="#project-vidalia">Vidalia</a> and + <a href="#project-arm">arm</a>.</p> + + <p>While TorCtl provided a fine first draft for this sort of functionality, + it has not proved to be extensible nor maintainable. Stem is a rewrite of + TorCtl with a heavy focus on testing, documentation, and providing a + developer friendly API.</p> + + <p>At the moment stem is still very much incomplete, missing several pieces + of functionality that TorCtl provides. This is a project to fix that by + porting TorCtl's <a + href="https://gitweb.torproject.org/pytorctl.git/blob/HEAD:/PathSupport.py%22%3EPa... + module</a> to stem, writing tests for it, and migrate a couple clients to + use it.</p> + + <p>PathSupport provides applications with programmatic control over how + tor's circuits are built, for instance letting you exit from particular + relays. This is used by projects like <a href="#project-torbel">TorBEL</a>, + <a href="#project-torflow">the Bandwidth Scanners, and SoaT</a>.</p> + + <p>This project can be broken into three parts...</p> + + <ol style="list-style-type: decimal"> + <li><p>Look at PathSupport's clients to figure out how it is used and + come up with the API that we will use for stem. Note that the goal if + this project is <b>not</b> to simply copy PathSupport, but to make it + better. This task would ideally be done as part of writing the GSoC + application.</p></li> + <li><p>Implement the PathSupport counterpart for stem. This should be + done in an incremental fashion, writing the feature, tests, and going + through a code review before moving on. I'll be pretty anal about making + it as good as we can during these code reviews so plan for this to take a + while. ;)</p></li> + <li><p>The real test of the API that you've developed will come when we + use it in some real applications. Try to migrate a TorCtl client or two + to stem, filling in functionality that we're missing and improving our + API as we discover issues. A particularly good client to start with would + be TorBEL.</p></li> + </ol> + <a id="geoIPUpgrade"></a> <li> <b>Improve our GeoIP file format</b>