Browse code

Add 'Stem Descriptors' project idea

Adding a project of my own to mentor this summer.

Damian Johnson authored on02/02/2017 19:05:21
Showing1 changed files
... ...
@@ -568,6 +568,11 @@ meetings around the world.</li>
568 568
     Tor.
569 569
     </p>
570 570
 
571
+    <p>
572
+    <b>Project Ideas:</b><br />
573
+    <i><a href="#stemDescriptors">Stem Descriptors</a></i>
574
+    </p>
575
+
571 576
     <a id="project-txtorcon"></a>
572 577
     <h3><a href="https://txtorcon.readthedocs.io/en/latest/">Txtorcon</a> (<a
573 578
     href="https://github.com/meejah/txtorcon">code</a>, <a
... ...
@@ -901,6 +906,39 @@ ideas.
901 906
     </p>
902 907
     </li>
903 908
 
909
+    <a id="stemDescriptors"></a>
910
+    <li>
911
+    <b>Stem Descriptors</b>
912
+    <br>
913
+    Language: <i>Python</i>
914
+    <br>
915
+    Likely Mentors: <i>Damian Johnson (atagar)</i>
916
+    <p>
917
+    <a href="https://stem.torproject.org/">Stem</a> is a Python library for working with tor. With it you can build applications on tor as well as learn information about the relay network. This project concerns this second capability.
918
+    </p>
919
+
920
+    <p>
921
+    Information about relays are published hourly in documents called <a href="https://stem.torproject.org/tutorials/mirror_mirror_on_the_wall.html">descriptors</a>. With Stem you can download, parse, and validate all kinds of descriptor documents.
922
+    </p>
923
+
924
+    <p>
925
+    Ideas welcome! You're encouraged to brainstorm improvements we can make to this space but here's a few to get you started...
926
+    </p>
927
+
928
+  <ul>
929
+    <li><p><b><a href="https://trac.torproject.org/projects/tor/ticket/11045">Validate signatures in the consensus</a></b>. Stem has the ability to validate cryptographic signatures in several descriptor types but not the consensus.</p></li>
930
+    <li><p><b><a href="https://trac.torproject.org/projects/tor/ticket/21086">Migrate from pycrypto to a supported library</a></b>. Stem presently uses pycrypto for signature validation but it's no longer maintained. We should evaluate options and move to whatever whavever the cool kids are using nowadays.</p></li>
931
+    <li><p><b><a href="https://trac.torproject.org/projects/tor/ticket/18856">Retrieve descriptors over tor's ORPort</a></b>. Tor relays commonly provide two ports, an <b>ORPort</b> which is used by clients and a <b>DirPort</b> which is obsolete nowadays but in the past was used by tor to download descriptors. Stem still uses tor's DirPort to retrieve descriptors, but it would be neat if we could download from the ORPort instead.</p>
932
+      <p>This requires implementing part of tor's communication protocol. Depending how complicated this is it might be neat to expand this task to allow the full construction of circuits, allowing client usage of tor without the C executable. Keep in mind though that this later bit hasn't been investigated and might be a pipe dream. ;P</p></li>
933
+    <li><p><b>Improve performance of reading descriptors</b>. Stem <a href="https://stem.torproject.org/tutorials/mirror_mirror_on_the_wall.html#are-there-any-other-parsing-libraries">isn't the only descriptor parsing library</a> and sadly is the slowest. Tricks like lazy loading have substantially improved our performance but no doubt a dedicated effort to profile Stem would find more low hanging fruit.</p></li>
934
+  </ul>
935
+
936
+
937
+    <p>
938
+    <b>As part of applying for this project please get your hands wet with the codebase by contributing some patches for <a href="https://stem.torproject.org/faq.html#how-do-i-get-started">Stem</a>!</b>
939
+    </p>
940
+    </li>
941
+
904 942
     <a id="stegotorus"></a>
905 943
     <li>
906 944
     <b>Make Stegotorus deployment ready</b>