[tor-commits] r25478: {website} Stem PathSupport project idea Adding a project that I'd real (website/trunk/getinvolved/en)

Damian Johnson atagar1 at gmail.com
Sun Feb 26 22:01:45 UTC 2012


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">Stem</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">control
+    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">PathSupport
+    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>



More information about the tor-commits mailing list