Karsten Loesing commited on 2009-03-12 22:25:48
Zeige 1 geänderte Dateien mit 515 Einfügungen und 515 Löschungen.
| ... | ... |
@@ -113,34 +113,59 @@ idea which often results in the best applications. |
| 113 | 113 |
|
| 114 | 114 |
<ol> |
| 115 | 115 |
|
| 116 |
-<!-- Mike is already working on this. |
|
| 117 | 116 |
<li> |
| 118 |
-<b>Tor Node Scanner improvements</b> |
|
| 117 |
+<b>Tor Browser Bundle for Linux/Mac OS X</b> |
|
| 119 | 118 |
<br /> |
| 120 |
-Similar to the SoaT exit scanner (or perhaps even during exit scanning), |
|
| 121 |
-statistics can be gathered about the reliability of nodes. Nodes that |
|
| 122 |
-fail too high a percentage of their circuits should not be given |
|
| 123 |
-Guard status. Perhaps they should have their reported bandwidth |
|
| 124 |
-penalized by some ratio as well, or just get marked as Invalid. In |
|
| 125 |
-addition, nodes that exhibit a very low average stream capacity but |
|
| 126 |
-advertise a very high node bandwidth can also be marked as Invalid. |
|
| 127 |
-Much of this statistics gathering is already done, it just needs to be |
|
| 128 |
-transformed into something that can be reported to the Directory |
|
| 129 |
-Authorities to blacklist/penalize nodes in such a way that clients |
|
| 130 |
-will listen. |
|
| 119 |
+Priority: <i>High</i> |
|
| 131 | 120 |
<br /> |
| 132 |
-In addition, these same statistics can be gathered about the traffic |
|
| 133 |
-through a node. Events can be added to the <a |
|
| 134 |
-href="https://svn.torproject.org/svn/torctl/trunk/doc/howto.txt">Tor Control |
|
| 135 |
-Protocol</a> to |
|
| 136 |
-report if a circuit extend attempt through the node succeeds or fails, and |
|
| 137 |
-passive statistics can be gathered on both bandwidth and reliability |
|
| 138 |
-of other nodes via a node-based monitor using these events. Such a |
|
| 139 |
-scanner would also report information on oddly-behaving nodes to |
|
| 140 |
-the Directory Authorities, but a communication channel for this |
|
| 141 |
-currently does not exist and would need to be developed as well. |
|
| 121 |
+Effort Level: <i>High</i> |
|
| 122 |
+<br /> |
|
| 123 |
+Skill Level: <i>Medium</i> |
|
| 124 |
+<br /> |
|
| 125 |
+Likely Mentors: <i>Steven, Andrew</i> |
|
| 126 |
+<br /> |
|
| 127 |
+The Tor Browser bundle incorporates Tor, Firefox, and the Vidalia user |
|
| 128 |
+interface (and optionally Pidgin IM). Components are pre-configured to |
|
| 129 |
+operate in a secure way, and it has very few dependencies on the |
|
| 130 |
+installed operating system. It has therefore become one of the most |
|
| 131 |
+easy to use, and popular, ways to use Tor on Windows. |
|
| 132 |
+<br /> |
|
| 133 |
+However, there is currently no comparable package for Linux and Mac OS |
|
| 134 |
+X, so this project would be to implement Tor Browser Bundle for these |
|
| 135 |
+platforms. This will involve modifications to Vidalia (C++), possibly |
|
| 136 |
+Firefox (C) then creating and testing the launcher on a range of |
|
| 137 |
+operating system versions and configurations to verify portability. |
|
| 138 |
+<br /> |
|
| 139 |
+Students should be familiar with application development on one or |
|
| 140 |
+preferably both of Linux and Mac OS X, and be comfortable with C/C++ |
|
| 141 |
+and shell scripting. |
|
| 142 |
+<br /> |
|
| 143 |
+Part of this project could be usability testing of Tor Browser Bundle, |
|
| 144 |
+ideally amongst our target demographic. |
|
| 145 |
+That would help a lot in knowing what needs to be done in terms of bug |
|
| 146 |
+fixes or new features. We get this informally at the moment, but a more |
|
| 147 |
+structured process would be better. |
|
| 148 |
+</li> |
|
| 149 |
+ |
|
| 150 |
+<li> |
|
| 151 |
+<b>Translation wiki for our website</b> |
|
| 152 |
+<br /> |
|
| 153 |
+Priority: <i>High</i> |
|
| 154 |
+<br /> |
|
| 155 |
+Effort Level: <i>Medium</i> |
|
| 156 |
+<br /> |
|
| 157 |
+Skill Level: <i>Medium</i> |
|
| 158 |
+<br /> |
|
| 159 |
+Likely Mentors: <i>Jacob</i> |
|
| 160 |
+<br /> |
|
| 161 |
+The Tor Project has been working over the past year to set up web-based |
|
| 162 |
+tools to help volunteers translate our applications into other languages. |
|
| 163 |
+We finally hit upon Pootle, and we have a fine web-based translation engine |
|
| 164 |
+in place for Vidalia, Torbutton, and Torcheck. However, Pootle only |
|
| 165 |
+translates strings that are in the "po" format, and our website uses wml |
|
| 166 |
+files. This project is about finding a way to convert our wml files into po |
|
| 167 |
+strings and back, so they can be handled by Pootle. |
|
| 142 | 168 |
</li> |
| 143 |
---> |
|
| 144 | 169 |
|
| 145 | 170 |
<li> |
| 146 | 171 |
<b>Help track the overall Tor Network status</b> |
| ... | ... |
@@ -172,52 +197,6 @@ kept separate. Speaking of the Tor Status pages, take a look at Roger's |
| 172 | 197 |
Status wish list</a>. |
| 173 | 198 |
</li> |
| 174 | 199 |
|
| 175 |
-<!-- Is this still a useful project? If so, move it to another section. |
|
| 176 |
-<li> |
|
| 177 |
-<b>Better Debian/Ubuntu Packaging for Tor+Vidalia</b> |
|
| 178 |
-<br /> |
|
| 179 |
-Vidalia currently doesn't play nicely on Debian and Ubuntu with the |
|
| 180 |
-default Tor packages. The current Tor packages automatically start Tor |
|
| 181 |
-as a daemon running as the debian-tor user and (sensibly) do not have a |
|
| 182 |
-<a href="<svnsandbox>doc/spec/control-spec.txt">ControlPort</a> defined |
|
| 183 |
-in the default torrc. Consequently, Vidalia will try |
|
| 184 |
-to start its own Tor process since it could not connect to the existing |
|
| 185 |
-Tor, and Vidalia's Tor process will then exit with an error message |
|
| 186 |
-the user likely doesn't understand since Tor cannot bind its listening |
|
| 187 |
-ports — they're already in use by the original Tor daemon. |
|
| 188 |
-<br /> |
|
| 189 |
-The current solution involves either telling the user to stop the |
|
| 190 |
-existing Tor daemon and let Vidalia start its own Tor process, or |
|
| 191 |
-explaining to the user how to set a control port and password in their |
|
| 192 |
-torrc. A better solution on Debian would be to use Tor's ControlSocket, |
|
| 193 |
-which allows Vidalia to talk to Tor via a Unix domain socket, and could |
|
| 194 |
-possibly be enabled by default in Tor's Debian packages. Vidalia can |
|
| 195 |
-then authenticate to Tor using filesystem-based (cookie) authentication |
|
| 196 |
-if the user running Vidalia is also in the debian-tor group. |
|
| 197 |
-<br /> |
|
| 198 |
-This project will first involve adding support for Tor's ControlSocket |
|
| 199 |
-to Vidalia. The student will then develop and test Debian and Ubuntu |
|
| 200 |
-packages for Vidalia that conform to Debian's packaging standards and |
|
| 201 |
-make sure they work well with the existing Tor packages. We can also |
|
| 202 |
-set up an apt repository to host the new Vidalia packages. |
|
| 203 |
-<br /> |
|
| 204 |
-The next challenge would be to find an intuitive usable way for Vidalia |
|
| 205 |
-to be able to change Tor's configuration (torrc) even though it is |
|
| 206 |
-located in <code>/etc/tor/torrc</code> and thus immutable. The best |
|
| 207 |
-idea we've come up with so far is to feed Tor a new configuration via |
|
| 208 |
-the ControlSocket when Vidalia starts, but that's bad because Tor starts |
|
| 209 |
-each boot with a different configuration than the user wants. The second |
|
| 210 |
-best idea |
|
| 211 |
-we've come up with is for Vidalia to write out a temporary torrc file |
|
| 212 |
-and ask the user to manually move it to <code>/etc/tor/torrc</code>, |
|
| 213 |
-but that's bad because users shouldn't have to mess with files directly. |
|
| 214 |
-<br /> |
|
| 215 |
-A person undertaking this project should have prior knowledge of |
|
| 216 |
-Debian package management and some C++ development experience. Previous |
|
| 217 |
-experience with Qt is helpful, but not required. |
|
| 218 |
-</li> |
|
| 219 |
---> |
|
| 220 |
- |
|
| 221 | 200 |
<li> |
| 222 | 201 |
<b>Improving Tor's ability to resist censorship</b> |
| 223 | 202 |
<br /> |
| ... | ... |
@@ -253,74 +232,83 @@ resist an adversary even after the adversary knows the design, and |
| 253 | 232 |
then trading off censorship resistance with usability and robustness. |
| 254 | 233 |
</li> |
| 255 | 234 |
|
| 256 |
-<!-- This should be mostly done. |
|
| 257 | 235 |
<li> |
| 258 |
-<b>Tor/Polipo/Vidalia Auto-Update Framework</b> |
|
| 236 |
+<b>Tuneup Tor!</b> |
|
| 259 | 237 |
<br /> |
| 260 |
-We're in need of a good authenticated-update framework. |
|
| 261 |
-Vidalia already has the ability to notice when the user is running an |
|
| 262 |
-outdated or unrecommended version of Tor, using signed statements inside |
|
| 263 |
-the Tor directory information. Currently, Vidalia simply pops |
|
| 264 |
-up a little message box that lets the user know they should manually |
|
| 265 |
-upgrade. The goal of this project would be to extend Vidalia with the |
|
| 266 |
-ability to also fetch and install the updated Tor software for the |
|
| 267 |
-user. We should do the fetches via Tor when possible, but also fall back |
|
| 268 |
-to direct fetches in a smart way. Time permitting, we would also like |
|
| 269 |
-to be able to update other |
|
| 270 |
-applications included in the bundled installers, such as Polipo and |
|
| 271 |
-Vidalia itself. |
|
| 238 |
+Priority: <i>Medium to High</i> |
|
| 272 | 239 |
<br /> |
| 273 |
-To complete this project, the student will first need to first investigate |
|
| 274 |
-the existing auto-update frameworks (e.g., Sparkle on OS X) to evaluate |
|
| 275 |
-their strengths, weaknesses, security properties, and ability to be |
|
| 276 |
-integrated into Vidalia. If none are found to be suitable, the student |
|
| 277 |
-will design their own auto-update framework, document the design, and |
|
| 278 |
-then discuss the design with other developers to assess any security |
|
| 279 |
-issues. The student will then implement their framework (or integrate |
|
| 280 |
-an existing one) and test it. |
|
| 240 |
+Effort Level: <i>Medium to High</i> |
|
| 281 | 241 |
<br /> |
| 282 |
-A person undertaking this project should have good C++ development |
|
| 283 |
-experience. Previous experience with Qt is helpful, but not required. One |
|
| 284 |
-should also have a good understanding of common security |
|
| 285 |
-practices, such as package signature verification. Good writing ability |
|
| 286 |
-is also important for this project, since a vital step of the project |
|
| 287 |
-will be producing a design document to review and discuss |
|
| 288 |
-with others prior to implementation. |
|
| 242 |
+Skill Level: <i>High</i> |
|
| 243 |
+<br /> |
|
| 244 |
+Likely Mentors: <i>Nick, Roger, Mike, Karsten</i> |
|
| 245 |
+<br /> |
|
| 246 |
+Right now, Tor relays measure and report their own bandwidth, and Tor |
|
| 247 |
+clients choose which relays to use in part based on that bandwidth. |
|
| 248 |
+This approach is vulnerable to |
|
| 249 |
+<a href="http://freehaven.net/anonbib/#bauer:wpes2007">attacks where |
|
| 250 |
+relays lie about their bandwidth</a>; |
|
| 251 |
+to address this, Tor currently caps the maximum bandwidth |
|
| 252 |
+it's willing to believe any relay provides. This is a limited fix, and |
|
| 253 |
+a waste of bandwidth capacity to boot. Instead, |
|
| 254 |
+Tor should possibly measure bandwidth in a more distributed way, perhaps |
|
| 255 |
+as described in the |
|
| 256 |
+<a href="http://freehaven.net/anonbib/author.html#snader08">"A Tune-up for |
|
| 257 |
+Tor"</a> paper |
|
| 258 |
+by Snader and Borisov. One could use current testing code to |
|
| 259 |
+double-check this paper's findings and verify the extent to which they |
|
| 260 |
+dovetail with Tor as deployed in the wild, and determine good ways to |
|
| 261 |
+incorporate them into their suggestions Tor network without adding too |
|
| 262 |
+much communications overhead between relays and directory |
|
| 263 |
+authorities. |
|
| 289 | 264 |
</li> |
| 290 |
---> |
|
| 291 | 265 |
|
| 292 | 266 |
<li> |
| 293 |
-<b>An Improved and More Usable Network Map in Vidalia</b> |
|
| 267 |
+<b>Improving Polipo on Windows</b> |
|
| 294 | 268 |
<br /> |
| 295 |
-Priority: <i>Low to Medium</i> |
|
| 269 |
+Priority: <i>Medium to High</i> |
|
| 296 | 270 |
<br /> |
| 297 | 271 |
Effort Level: <i>Medium</i> |
| 298 | 272 |
<br /> |
| 299 | 273 |
Skill Level: <i>Medium</i> |
| 300 | 274 |
<br /> |
| 301 |
-Likely Mentors: <i>Matt</i> |
|
| 275 |
+Likely Mentors: <i>Martin</i> |
|
| 302 | 276 |
<br /> |
| 303 |
-One of Vidalia's existing features is a network map that shows the user |
|
| 304 |
-the approximate geographic location of relays in the Tor network and |
|
| 305 |
-plots the paths the user's traffic takes as it is tunneled through the |
|
| 306 |
-Tor network. The map is currently not very interactive and has rather |
|
| 307 |
-poor graphics. Instead, we implemented KDE's Marble widget such |
|
| 308 |
-that it gives us a better quality map and enables improved interactivity, |
|
| 309 |
-such as allowing the user to click on individual relays or circuits to |
|
| 310 |
-display additional information. We want to add the ability |
|
| 311 |
-for users to click on a particular relay or a country containing one or |
|
| 312 |
-more Tor exit relays and say, "I want my connections to exit |
|
| 313 |
-from here." |
|
| 277 |
+Help port <a |
|
| 278 |
+href="http://www.pps.jussieu.fr/~jch/software/polipo/">Polipo</a> to |
|
| 279 |
+Windows. Example topics to tackle include: |
|
| 280 |
+1) the ability to asynchronously |
|
| 281 |
+query name servers, find the system nameservers, and manage netbios |
|
| 282 |
+and dns queries. |
|
| 283 |
+2) manage events and buffers |
|
| 284 |
+natively (i.e. in Unix-like OSes, Polipo defaults to 25% of ram, in |
|
| 285 |
+Windows it's whatever the config specifies). 3) some sort of GUI config |
|
| 286 |
+and reporting tool, bonus if it has a systray icon with right clickable |
|
| 287 |
+menu options. Double bonus if it's cross-platform compatible. |
|
| 288 |
+4) allow the software to use the Windows Registry and handle proper Windows directory locations, such as "C:\Program Files\Polipo" |
|
| 289 |
+</li> |
|
| 290 |
+ |
|
| 291 |
+<li> |
|
| 292 |
+<b>Implement a torrent-based scheme for downloading Thandy packages</b> |
|
| 314 | 293 |
<br /> |
| 315 |
-This project will first involve getting familiar with Vidalia |
|
| 316 |
-and the Marble widget's API. One will then integrate the widget |
|
| 317 |
-into Vidalia and customize Marble to be better suited for our application, |
|
| 318 |
-such as making circuits clickable, storing cached map data in Vidalia's |
|
| 319 |
-own data directory, and customizing some of the widget's dialogs. |
|
| 294 |
+Priority: <i>Medium to High</i> |
|
| 320 | 295 |
<br /> |
| 321 |
-A person undertaking this project should have good C++ development |
|
| 322 |
-experience. Previous experience with Qt and CMake is helpful, but not |
|
| 323 |
-required. |
|
| 296 |
+Effort Level: <i>High</i> |
|
| 297 |
+<br /> |
|
| 298 |
+Skill Level: <i>Medium to High</i> |
|
| 299 |
+<br /> |
|
| 300 |
+Likely Mentors: <i>Martin, Nick</i> |
|
| 301 |
+<br /> |
|
| 302 |
+<a |
|
| 303 |
+href="http://git.torproject.org/checkout/thandy/master/specs/thandy-spec.txt">Thandy</a> |
|
| 304 |
+is a relatively new software to allow assisted updates of Tor and related |
|
| 305 |
+software. Currently, there are very few users, but we expect Thandy to be |
|
| 306 |
+used by almost every Tor user in the future. To avoid crashing servers on |
|
| 307 |
+the day of a Tor update, we need new ways to distribute new packages |
|
| 308 |
+efficiently, and using libtorrent seems to be a possible solution. If you |
|
| 309 |
+think of other good ideas, great - please do let us know!<br /> |
|
| 310 |
+We also need to investigate how to include our mirrors better. If possible, |
|
| 311 |
+there should be an easy way for them to help distributing the packages. |
|
| 324 | 312 |
</li> |
| 325 | 313 |
|
| 326 | 314 |
<li> |
| ... | ... |
@@ -366,31 +354,399 @@ be understandable by non-technical users. Bonus points for some graphic |
| 366 | 354 |
design/Photoshop fu, since we might want/need some shiny new icons too. |
| 367 | 355 |
</li> |
| 368 | 356 |
|
| 369 |
-<!-- Jake already did most of this. |
|
| 370 | 357 |
<li> |
| 371 |
-<b>Improvements on our active browser configuration tester</b> - |
|
| 372 |
-<a href="https://check.torproject.org/">https://check.torproject.org/</a> |
|
| 358 |
+<b>Improve our unit testing process</b> |
|
| 373 | 359 |
<br /> |
| 374 |
-We currently have a functional web page to detect if Tor is working. It |
|
| 375 |
-has a few places where it falls short. It requires improvements with |
|
| 376 |
-regard to default languages and functionality. It currently only responds |
|
| 377 |
-in English. In addition, it is a hack of a perl script that should have |
|
| 378 |
-never seen the light of day. It should probably be rewritten in python |
|
| 379 |
-with multi-lingual support in mind. It currently uses the <a |
|
| 380 |
-href="http://exitlist.torproject.org/">Tor DNS exit list</a> |
|
| 381 |
-and should continue to do so in the future. It currently result in certain |
|
| 382 |
-false positives and these should be discovered, documented, and fixed |
|
| 383 |
-where possible. Anyone working on this project should be interested in |
|
| 384 |
-DNS, basic perl or preferably python programming skills, and will have |
|
| 385 |
-to interact minimally with Tor to test their code. |
|
| 360 |
+Priority: <i>Medium</i> |
|
| 386 | 361 |
<br /> |
| 387 |
-If you want to make the project more exciting |
|
| 388 |
-and involve more design and coding, take a look at <a |
|
| 389 |
-href="<svnsandbox>doc/spec/proposals/131-verify-tor-usage.txt">proposal |
|
| 390 |
-131-verify-tor-usage.txt</a>. |
|
| 391 |
-</li> |
|
| 392 |
---> |
|
| 393 |
- |
|
| 362 |
+Effort Level: <i>Medium</i> |
|
| 363 |
+<br /> |
|
| 364 |
+Skill Level: <i>Medium</i> |
|
| 365 |
+<br /> |
|
| 366 |
+Likely Mentors: <i>Nick, Roger</i> |
|
| 367 |
+<br /> |
|
| 368 |
+Tor needs to be far more tested. This is a multi-part effort. To start |
|
| 369 |
+with, our unit test coverage should rise substantially, especially in |
|
| 370 |
+the areas outside the utility functions. This will require significant |
|
| 371 |
+refactoring of some parts of Tor, in order to dissociate as much logic |
|
| 372 |
+as possible from globals. |
|
| 373 |
+<br /> |
|
| 374 |
+Additionally, we need to automate our performance testing. We've got |
|
| 375 |
+buildbot to automate our regular integration and compile testing already |
|
| 376 |
+(though we need somebody to set it up on Windows), |
|
| 377 |
+but we need to get our network simulation tests (as built in <a |
|
| 378 |
+href="https://svn.torproject.org/svn/torflow/trunk/README">TorFlow</a>) |
|
| 379 |
+updated for more recent versions of Tor, and designed to launch a test |
|
| 380 |
+network either on a single machine, or across several, so we can test |
|
| 381 |
+changes in performance on machines in different roles automatically. |
|
| 382 |
+</li> |
|
| 383 |
+ |
|
| 384 |
+<li> |
|
| 385 |
+<b>Help revive an independent Tor client implementation</b> |
|
| 386 |
+<br /> |
|
| 387 |
+Priority: <i>Medium</i> |
|
| 388 |
+<br /> |
|
| 389 |
+Effort Level: <i>High</i> |
|
| 390 |
+<br /> |
|
| 391 |
+Skill Level: <i>Medium to High</i> |
|
| 392 |
+<br /> |
|
| 393 |
+Likely Mentors: <i>Karsten, Nick</i> |
|
| 394 |
+<br /> |
|
| 395 |
+Reanimate one of the approaches to implement a Tor client in Java, |
|
| 396 |
+e.g. the <a href="http://onioncoffee.sourceforge.net/">OnionCoffee |
|
| 397 |
+project</a>, and make it run on <a |
|
| 398 |
+href="http://code.google.com/android/">Android</a>. The first step |
|
| 399 |
+would be to port the existing code and execute it in an Android |
|
| 400 |
+environment. Next, the code should be updated to support the newer Tor |
|
| 401 |
+protocol versions like the <a href="<svnsandbox>doc/spec/dir-spec.txt">v3 |
|
| 402 |
+directory protocol</a>. Further, support for requesting or even |
|
| 403 |
+providing Tor hidden services would be neat, but not required. |
|
| 404 |
+<br /> |
|
| 405 |
+A prospective developer should be able to understand and write new Java |
|
| 406 |
+code, including |
|
| 407 |
+a Java cryptography API. Being able to read C code would be helpful, |
|
| 408 |
+too. One should be willing to read the existing documentation, |
|
| 409 |
+implement code based on it, and refine the documentation |
|
| 410 |
+when things are underdocumented. This project is mostly about coding and |
|
| 411 |
+to a small degree about design. |
|
| 412 |
+</li> |
|
| 413 |
+ |
|
| 414 |
+<li> |
|
| 415 |
+<b>New Torbutton Features</b> |
|
| 416 |
+<br /> |
|
| 417 |
+Priority: <i>Medium</i> |
|
| 418 |
+<br /> |
|
| 419 |
+Effort Level: <i>High</i> |
|
| 420 |
+<br /> |
|
| 421 |
+Skill Level: <i>High</i> |
|
| 422 |
+<br /> |
|
| 423 |
+Likely Mentors: <i>Mike</i> |
|
| 424 |
+<br/> |
|
| 425 |
+There are several <a |
|
| 426 |
+href="https://bugs.torproject.org/flyspray/index.php?tasks=all&project=5&type=2">good |
|
| 427 |
+feature requests</a> on the Torbutton Flyspray section. In particular, <a |
|
| 428 |
+href="https://bugs.torproject.org/flyspray/index.php?do=details&id=523">Integrating |
|
| 429 |
+'New Identity' with Vidalia</a>, |
|
| 430 |
+<a href="https://bugs.torproject.org/flyspray/index.php?do=details&id=940">ways of |
|
| 431 |
+managing multiple cookie jars/identities</a>, <a |
|
| 432 |
+href="https://bugs.torproject.org/flyspray/index.php?do=details&id=637">preserving |
|
| 433 |
+specific cookies</a> when cookies are cleared, |
|
| 434 |
+<a |
|
| 435 |
+href="https://bugs.torproject.org/flyspray/index.php?do=details&id=524">better |
|
| 436 |
+referrer spoofing</a>, <a |
|
| 437 |
+href="https://bugs.torproject.org/flyspray/index.php?do=details&id=564">correct |
|
| 438 |
+Tor status reporting</a>, and <a |
|
| 439 |
+href="https://bugs.torproject.org/flyspray/index.php?do=details&id=462">"tor://" |
|
| 440 |
+and "tors://" urls</a> are all interesting |
|
| 441 |
+features that could be added. |
|
| 442 |
+<br /> |
|
| 443 |
+This work would be independent coding in Javascript and the fun world of <a |
|
| 444 |
+href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">XUL</a>, |
|
| 445 |
+with not too much involvement in the Tor internals. |
|
| 446 |
+</li> |
|
| 447 |
+ |
|
| 448 |
+<li> |
|
| 449 |
+<b>New Thandy Features</b> |
|
| 450 |
+<br /> |
|
| 451 |
+Priority: <i>Medium</i> |
|
| 452 |
+<br /> |
|
| 453 |
+Effort Level: <i>Medium</i> |
|
| 454 |
+<br /> |
|
| 455 |
+Skill Level: <i>Medium to High</i> |
|
| 456 |
+<br /> |
|
| 457 |
+Likely Mentors: <i>Martin</i> |
|
| 458 |
+<br /> |
|
| 459 |
+Additional capabilities are needed for assisted updates of all the Tor |
|
| 460 |
+related software for Windows and other operating systems. Some of the |
|
| 461 |
+features to consider include: |
|
| 462 |
+1) Integration of the <a |
|
| 463 |
+href="http://chandlerproject.org/Projects/MeTooCrypto">MeTooCrypto |
|
| 464 |
+Python library</a> |
|
| 465 |
+for authenticated HTTPS downloads. 2) Adding a level of indirection |
|
| 466 |
+between the timestamp signatures and the package files included in an |
|
| 467 |
+update. See the "Thandy attacks / suggestions" thread on or-dev. |
|
| 468 |
+3) Support locale specific installation and configuration of assisted |
|
| 469 |
+updates based on preference, host, or user account language settings. |
|
| 470 |
+Familiarity with Windows codepages, unicode, and other character sets |
|
| 471 |
+is helpful in addition to general win32 and posix API experience and |
|
| 472 |
+Python proficiency. |
|
| 473 |
+</li> |
|
| 474 |
+ |
|
| 475 |
+<li> |
|
| 476 |
+<b>Simulator for slow Internet connections</b> |
|
| 477 |
+<br /> |
|
| 478 |
+Priority: <i>Medium</i> |
|
| 479 |
+<br /> |
|
| 480 |
+Effort Level: <i>Medium</i> |
|
| 481 |
+<br /> |
|
| 482 |
+Skill Level: <i>Medium</i> |
|
| 483 |
+<br /> |
|
| 484 |
+Likely Mentors: <i>Steven</i> |
|
| 485 |
+<br /> |
|
| 486 |
+Many users of Tor have poor-quality Internet connections, giving low |
|
| 487 |
+bandwidth, high latency, and high packet loss/re-ordering. User |
|
| 488 |
+experience is that Tor reacts badly to these conditions, but it is |
|
| 489 |
+difficult to improve the situation without being able to repeat the |
|
| 490 |
+problems in the lab. |
|
| 491 |
+<br /> |
|
| 492 |
+This project would be to build a simulation environment which |
|
| 493 |
+replicates the poor connectivity so that the effect on Tor performance |
|
| 494 |
+can be measured. Other components would be a testing utility to |
|
| 495 |
+establish what are the properties of connections available, and to |
|
| 496 |
+measure the effect of performance-improving modifications to Tor. |
|
| 497 |
+<br /> |
|
| 498 |
+The tools used would be up to the student, but dummynet (for FreeBSD) |
|
| 499 |
+and nistnet (for Linux) are two potential components on which this |
|
| 500 |
+project could be built. Students should be experienced with network |
|
| 501 |
+programming/debugging and TCP/IP, and preferably familiar with C and a |
|
| 502 |
+scripting language. |
|
| 503 |
+</li> |
|
| 504 |
+ |
|
| 505 |
+<li> |
|
| 506 |
+<b>An Improved and More Usable Network Map in Vidalia</b> |
|
| 507 |
+<br /> |
|
| 508 |
+Priority: <i>Low to Medium</i> |
|
| 509 |
+<br /> |
|
| 510 |
+Effort Level: <i>Medium</i> |
|
| 511 |
+<br /> |
|
| 512 |
+Skill Level: <i>Medium</i> |
|
| 513 |
+<br /> |
|
| 514 |
+Likely Mentors: <i>Matt</i> |
|
| 515 |
+<br /> |
|
| 516 |
+One of Vidalia's existing features is a network map that shows the user |
|
| 517 |
+the approximate geographic location of relays in the Tor network and |
|
| 518 |
+plots the paths the user's traffic takes as it is tunneled through the |
|
| 519 |
+Tor network. The map is currently not very interactive and has rather |
|
| 520 |
+poor graphics. Instead, we implemented KDE's Marble widget such |
|
| 521 |
+that it gives us a better quality map and enables improved interactivity, |
|
| 522 |
+such as allowing the user to click on individual relays or circuits to |
|
| 523 |
+display additional information. We want to add the ability |
|
| 524 |
+for users to click on a particular relay or a country containing one or |
|
| 525 |
+more Tor exit relays and say, "I want my connections to exit |
|
| 526 |
+from here." |
|
| 527 |
+<br /> |
|
| 528 |
+This project will first involve getting familiar with Vidalia |
|
| 529 |
+and the Marble widget's API. One will then integrate the widget |
|
| 530 |
+into Vidalia and customize Marble to be better suited for our application, |
|
| 531 |
+such as making circuits clickable, storing cached map data in Vidalia's |
|
| 532 |
+own data directory, and customizing some of the widget's dialogs. |
|
| 533 |
+<br /> |
|
| 534 |
+A person undertaking this project should have good C++ development |
|
| 535 |
+experience. Previous experience with Qt and CMake is helpful, but not |
|
| 536 |
+required. |
|
| 537 |
+</li> |
|
| 538 |
+ |
|
| 539 |
+<li> |
|
| 540 |
+<b>Bring moniTor to life</b> |
|
| 541 |
+<br /> |
|
| 542 |
+Priority: <i>Low</i> |
|
| 543 |
+<br /> |
|
| 544 |
+Effort Level: <i>Medium</i> |
|
| 545 |
+<br /> |
|
| 546 |
+Skill Level: <i>Low to Medium</i> |
|
| 547 |
+<br /> |
|
| 548 |
+Likely Mentors: <i>Karsten, Jacob</i> |
|
| 549 |
+<br /> |
|
| 550 |
+Implement a <a href="http://www.ss64.com/bash/top.html">top-like</a> |
|
| 551 |
+management tool for Tor relays. The purpose of such a tool would be |
|
| 552 |
+to monitor a local Tor relay via its control port and include useful |
|
| 553 |
+system information of the underlying machine. When running this tool, it |
|
| 554 |
+would dynamically update its content like top does for Linux processes. |
|
| 555 |
+<a href="http://archives.seul.org/or/dev/Jan-2008/msg00005.html">This |
|
| 556 |
+or-dev post</a> might be a good first read. |
|
| 557 |
+<br /> |
|
| 558 |
+A person interested in this should be familiar |
|
| 559 |
+with or willing to learn about administering a Tor relay and configuring |
|
| 560 |
+it via its control port. As an initial prototype is written in Python, |
|
| 561 |
+some knowledge about writing Python code would be helpful, too. This |
|
| 562 |
+project is one part about identifying requirements to such a |
|
| 563 |
+tool and designing its interface, and one part lots of coding. |
|
| 564 |
+</li> |
|
| 565 |
+ |
|
| 566 |
+<li> |
|
| 567 |
+<b>Torbutton equivalent for Thunderbird</b> |
|
| 568 |
+<br /> |
|
| 569 |
+Priority: <i>Low</i> |
|
| 570 |
+<br /> |
|
| 571 |
+Effort Level: <i>High</i> |
|
| 572 |
+<br /> |
|
| 573 |
+Skill Level: <i>High</i> |
|
| 574 |
+<br /> |
|
| 575 |
+Likely Mentors: <i>Mike</i> |
|
| 576 |
+<br /> |
|
| 577 |
+We're hearing from an increasing number of users that they want to use |
|
| 578 |
+Thunderbird with Tor. However, there are plenty of application-level |
|
| 579 |
+concerns, for example, by default Thunderbird will put your hostname in |
|
| 580 |
+the outgoing mail that it sends. At some point we should start a new |
|
| 581 |
+push to build a Thunderbird extension similar to Torbutton. |
|
| 582 |
+</li> |
|
| 583 |
+ |
|
| 584 |
+<li> |
|
| 585 |
+<b>Intermediate Level Network Device Driver</b> |
|
| 586 |
+<br /> |
|
| 587 |
+Priority: <i>Low</i> |
|
| 588 |
+<br /> |
|
| 589 |
+Effort Level: <i>High</i> |
|
| 590 |
+<br /> |
|
| 591 |
+Skill Level: <i>High</i> |
|
| 592 |
+<br /> |
|
| 593 |
+Likely Mentors: <i>Martin</i> |
|
| 594 |
+<br /> |
|
| 595 |
+The WinPCAP device driver used by Tor VM for bridged networking does |
|
| 596 |
+not support a number of wireless and non-Ethernet network adapters. |
|
| 597 |
+Implementation of a intermediate level network device driver for win32 |
|
| 598 |
+and 64bit would provide a way to intercept and route traffic over such |
|
| 599 |
+networks. This project will require knowledge of and experience with |
|
| 600 |
+Windows kernel device driver development and testing. Familiarity with |
|
| 601 |
+Winsock and Qemu would also be helpful. |
|
| 602 |
+</li> |
|
| 603 |
+ |
|
| 604 |
+<li> |
|
| 605 |
+<b>Bring up new ideas!</b> |
|
| 606 |
+<br /> |
|
| 607 |
+Don't like any of these? Look at the <a |
|
| 608 |
+href="<svnsandbox>doc/roadmaps/2008-12-19-roadmap-full.pdf">Tor development |
|
| 609 |
+roadmap</a> for more ideas. |
|
| 610 |
+Some of the <a href="<svnsandbox>doc/spec/proposals/">current proposals</a> |
|
| 611 |
+might also be short on developers. |
|
| 612 |
+</li> |
|
| 613 |
+ |
|
| 614 |
+<!-- Mike is already working on this. |
|
| 615 |
+<li> |
|
| 616 |
+<b>Tor Node Scanner improvements</b> |
|
| 617 |
+<br /> |
|
| 618 |
+Similar to the SoaT exit scanner (or perhaps even during exit scanning), |
|
| 619 |
+statistics can be gathered about the reliability of nodes. Nodes that |
|
| 620 |
+fail too high a percentage of their circuits should not be given |
|
| 621 |
+Guard status. Perhaps they should have their reported bandwidth |
|
| 622 |
+penalized by some ratio as well, or just get marked as Invalid. In |
|
| 623 |
+addition, nodes that exhibit a very low average stream capacity but |
|
| 624 |
+advertise a very high node bandwidth can also be marked as Invalid. |
|
| 625 |
+Much of this statistics gathering is already done, it just needs to be |
|
| 626 |
+transformed into something that can be reported to the Directory |
|
| 627 |
+Authorities to blacklist/penalize nodes in such a way that clients |
|
| 628 |
+will listen. |
|
| 629 |
+<br /> |
|
| 630 |
+In addition, these same statistics can be gathered about the traffic |
|
| 631 |
+through a node. Events can be added to the <a |
|
| 632 |
+href="https://svn.torproject.org/svn/torctl/trunk/doc/howto.txt">Tor Control |
|
| 633 |
+Protocol</a> to |
|
| 634 |
+report if a circuit extend attempt through the node succeeds or fails, and |
|
| 635 |
+passive statistics can be gathered on both bandwidth and reliability |
|
| 636 |
+of other nodes via a node-based monitor using these events. Such a |
|
| 637 |
+scanner would also report information on oddly-behaving nodes to |
|
| 638 |
+the Directory Authorities, but a communication channel for this |
|
| 639 |
+currently does not exist and would need to be developed as well. |
|
| 640 |
+</li> |
|
| 641 |
+--> |
|
| 642 |
+ |
|
| 643 |
+<!-- Is this still a useful project? If so, move it to another section. |
|
| 644 |
+<li> |
|
| 645 |
+<b>Better Debian/Ubuntu Packaging for Tor+Vidalia</b> |
|
| 646 |
+<br /> |
|
| 647 |
+Vidalia currently doesn't play nicely on Debian and Ubuntu with the |
|
| 648 |
+default Tor packages. The current Tor packages automatically start Tor |
|
| 649 |
+as a daemon running as the debian-tor user and (sensibly) do not have a |
|
| 650 |
+<a href="<svnsandbox>doc/spec/control-spec.txt">ControlPort</a> defined |
|
| 651 |
+in the default torrc. Consequently, Vidalia will try |
|
| 652 |
+to start its own Tor process since it could not connect to the existing |
|
| 653 |
+Tor, and Vidalia's Tor process will then exit with an error message |
|
| 654 |
+the user likely doesn't understand since Tor cannot bind its listening |
|
| 655 |
+ports — they're already in use by the original Tor daemon. |
|
| 656 |
+<br /> |
|
| 657 |
+The current solution involves either telling the user to stop the |
|
| 658 |
+existing Tor daemon and let Vidalia start its own Tor process, or |
|
| 659 |
+explaining to the user how to set a control port and password in their |
|
| 660 |
+torrc. A better solution on Debian would be to use Tor's ControlSocket, |
|
| 661 |
+which allows Vidalia to talk to Tor via a Unix domain socket, and could |
|
| 662 |
+possibly be enabled by default in Tor's Debian packages. Vidalia can |
|
| 663 |
+then authenticate to Tor using filesystem-based (cookie) authentication |
|
| 664 |
+if the user running Vidalia is also in the debian-tor group. |
|
| 665 |
+<br /> |
|
| 666 |
+This project will first involve adding support for Tor's ControlSocket |
|
| 667 |
+to Vidalia. The student will then develop and test Debian and Ubuntu |
|
| 668 |
+packages for Vidalia that conform to Debian's packaging standards and |
|
| 669 |
+make sure they work well with the existing Tor packages. We can also |
|
| 670 |
+set up an apt repository to host the new Vidalia packages. |
|
| 671 |
+<br /> |
|
| 672 |
+The next challenge would be to find an intuitive usable way for Vidalia |
|
| 673 |
+to be able to change Tor's configuration (torrc) even though it is |
|
| 674 |
+located in <code>/etc/tor/torrc</code> and thus immutable. The best |
|
| 675 |
+idea we've come up with so far is to feed Tor a new configuration via |
|
| 676 |
+the ControlSocket when Vidalia starts, but that's bad because Tor starts |
|
| 677 |
+each boot with a different configuration than the user wants. The second |
|
| 678 |
+best idea |
|
| 679 |
+we've come up with is for Vidalia to write out a temporary torrc file |
|
| 680 |
+and ask the user to manually move it to <code>/etc/tor/torrc</code>, |
|
| 681 |
+but that's bad because users shouldn't have to mess with files directly. |
|
| 682 |
+<br /> |
|
| 683 |
+A person undertaking this project should have prior knowledge of |
|
| 684 |
+Debian package management and some C++ development experience. Previous |
|
| 685 |
+experience with Qt is helpful, but not required. |
|
| 686 |
+</li> |
|
| 687 |
+--> |
|
| 688 |
+ |
|
| 689 |
+<!-- This should be mostly done. |
|
| 690 |
+<li> |
|
| 691 |
+<b>Tor/Polipo/Vidalia Auto-Update Framework</b> |
|
| 692 |
+<br /> |
|
| 693 |
+We're in need of a good authenticated-update framework. |
|
| 694 |
+Vidalia already has the ability to notice when the user is running an |
|
| 695 |
+outdated or unrecommended version of Tor, using signed statements inside |
|
| 696 |
+the Tor directory information. Currently, Vidalia simply pops |
|
| 697 |
+up a little message box that lets the user know they should manually |
|
| 698 |
+upgrade. The goal of this project would be to extend Vidalia with the |
|
| 699 |
+ability to also fetch and install the updated Tor software for the |
|
| 700 |
+user. We should do the fetches via Tor when possible, but also fall back |
|
| 701 |
+to direct fetches in a smart way. Time permitting, we would also like |
|
| 702 |
+to be able to update other |
|
| 703 |
+applications included in the bundled installers, such as Polipo and |
|
| 704 |
+Vidalia itself. |
|
| 705 |
+<br /> |
|
| 706 |
+To complete this project, the student will first need to first investigate |
|
| 707 |
+the existing auto-update frameworks (e.g., Sparkle on OS X) to evaluate |
|
| 708 |
+their strengths, weaknesses, security properties, and ability to be |
|
| 709 |
+integrated into Vidalia. If none are found to be suitable, the student |
|
| 710 |
+will design their own auto-update framework, document the design, and |
|
| 711 |
+then discuss the design with other developers to assess any security |
|
| 712 |
+issues. The student will then implement their framework (or integrate |
|
| 713 |
+an existing one) and test it. |
|
| 714 |
+<br /> |
|
| 715 |
+A person undertaking this project should have good C++ development |
|
| 716 |
+experience. Previous experience with Qt is helpful, but not required. One |
|
| 717 |
+should also have a good understanding of common security |
|
| 718 |
+practices, such as package signature verification. Good writing ability |
|
| 719 |
+is also important for this project, since a vital step of the project |
|
| 720 |
+will be producing a design document to review and discuss |
|
| 721 |
+with others prior to implementation. |
|
| 722 |
+</li> |
|
| 723 |
+--> |
|
| 724 |
+ |
|
| 725 |
+<!-- Jake already did most of this. |
|
| 726 |
+<li> |
|
| 727 |
+<b>Improvements on our active browser configuration tester</b> - |
|
| 728 |
+<a href="https://check.torproject.org/">https://check.torproject.org/</a> |
|
| 729 |
+<br /> |
|
| 730 |
+We currently have a functional web page to detect if Tor is working. It |
|
| 731 |
+has a few places where it falls short. It requires improvements with |
|
| 732 |
+regard to default languages and functionality. It currently only responds |
|
| 733 |
+in English. In addition, it is a hack of a perl script that should have |
|
| 734 |
+never seen the light of day. It should probably be rewritten in python |
|
| 735 |
+with multi-lingual support in mind. It currently uses the <a |
|
| 736 |
+href="http://exitlist.torproject.org/">Tor DNS exit list</a> |
|
| 737 |
+and should continue to do so in the future. It currently result in certain |
|
| 738 |
+false positives and these should be discovered, documented, and fixed |
|
| 739 |
+where possible. Anyone working on this project should be interested in |
|
| 740 |
+DNS, basic perl or preferably python programming skills, and will have |
|
| 741 |
+to interact minimally with Tor to test their code. |
|
| 742 |
+<br /> |
|
| 743 |
+If you want to make the project more exciting |
|
| 744 |
+and involve more design and coding, take a look at <a |
|
| 745 |
+href="<svnsandbox>doc/spec/proposals/131-verify-tor-usage.txt">proposal |
|
| 746 |
+131-verify-tor-usage.txt</a>. |
|
| 747 |
+</li> |
|
| 748 |
+--> |
|
| 749 |
+ |
|
| 394 | 750 |
<!-- If we decide to switch to the exit list in TorStatus, this is obsolete. |
| 395 | 751 |
<li> |
| 396 | 752 |
<b>Improvements on our DNS Exit List service</b> - |
| ... | ... |
@@ -456,37 +812,6 @@ Also tricky will be adding rate-limiting to Libevent. |
| 456 | 812 |
</li> |
| 457 | 813 |
--> |
| 458 | 814 |
|
| 459 |
-<li> |
|
| 460 |
-<b>Tuneup Tor!</b> |
|
| 461 |
-<br /> |
|
| 462 |
-Priority: <i>Medium to High</i> |
|
| 463 |
-<br /> |
|
| 464 |
-Effort Level: <i>Medium to High</i> |
|
| 465 |
-<br /> |
|
| 466 |
-Skill Level: <i>High</i> |
|
| 467 |
-<br /> |
|
| 468 |
-Likely Mentors: <i>Nick, Roger, Mike, Karsten</i> |
|
| 469 |
-<br /> |
|
| 470 |
-Right now, Tor relays measure and report their own bandwidth, and Tor |
|
| 471 |
-clients choose which relays to use in part based on that bandwidth. |
|
| 472 |
-This approach is vulnerable to |
|
| 473 |
-<a href="http://freehaven.net/anonbib/#bauer:wpes2007">attacks where |
|
| 474 |
-relays lie about their bandwidth</a>; |
|
| 475 |
-to address this, Tor currently caps the maximum bandwidth |
|
| 476 |
-it's willing to believe any relay provides. This is a limited fix, and |
|
| 477 |
-a waste of bandwidth capacity to boot. Instead, |
|
| 478 |
-Tor should possibly measure bandwidth in a more distributed way, perhaps |
|
| 479 |
-as described in the |
|
| 480 |
-<a href="http://freehaven.net/anonbib/author.html#snader08">"A Tune-up for |
|
| 481 |
-Tor"</a> paper |
|
| 482 |
-by Snader and Borisov. One could use current testing code to |
|
| 483 |
-double-check this paper's findings and verify the extent to which they |
|
| 484 |
-dovetail with Tor as deployed in the wild, and determine good ways to |
|
| 485 |
-incorporate them into their suggestions Tor network without adding too |
|
| 486 |
-much communications overhead between relays and directory |
|
| 487 |
-authorities. |
|
| 488 |
-</li> |
|
| 489 |
- |
|
| 490 | 815 |
<!-- |
| 491 | 816 |
<li> |
| 492 | 817 |
<b>Improving the Tor QA process: Continuous Integration for Windows builds</b> |
| ... | ... |
@@ -500,106 +825,22 @@ the platforms Tor does. See the |
| 500 | 825 |
<a href="http://en.wikipedia.org/wiki/BuildBot">wikipedia entry for |
| 501 | 826 |
buildbot</a>.<br /> |
| 502 | 827 |
There may be better options and the person undertaking this task should |
| 503 |
-evaluate other options. Any person working on this automatic build |
|
| 504 |
-process should have experience or be willing to learn how to build all |
|
| 505 |
-of the respective Tor related code bases from scratch. Furthermore, the |
|
| 506 |
-person should have some experience building software in Windows |
|
| 507 |
-environments as this is the target audience we want to ensure we do not |
|
| 508 |
-leave behind. It would require close work with the Tor source code but |
|
| 509 |
-probably only in the form of building, not authoring.<br /> |
|
| 510 |
-Additionally, we need to automate our performance testing for all platforms. |
|
| 511 |
-We've got buildbot (except on Windows — as noted above) to automate |
|
| 512 |
-our regular integration and compile testing already, |
|
| 513 |
-but we need to get our network simulation tests (as built in torflow) |
|
| 514 |
-updated for more recent versions of Tor, and designed to launch a test |
|
| 515 |
-network either on a single machine, or across several, so we can test |
|
| 516 |
-changes in performance on machines in different roles automatically. |
|
| 517 |
-</li> |
|
| 518 |
---> |
|
| 519 |
- |
|
| 520 |
-<li> |
|
| 521 |
-<b>Improve our unit testing process</b> |
|
| 522 |
-<br /> |
|
| 523 |
-Priority: <i>Medium</i> |
|
| 524 |
-<br /> |
|
| 525 |
-Effort Level: <i>Medium</i> |
|
| 526 |
-<br /> |
|
| 527 |
-Skill Level: <i>Medium</i> |
|
| 528 |
-<br /> |
|
| 529 |
-Likely Mentors: <i>Nick, Roger</i> |
|
| 530 |
-<br /> |
|
| 531 |
-Tor needs to be far more tested. This is a multi-part effort. To start |
|
| 532 |
-with, our unit test coverage should rise substantially, especially in |
|
| 533 |
-the areas outside the utility functions. This will require significant |
|
| 534 |
-refactoring of some parts of Tor, in order to dissociate as much logic |
|
| 535 |
-as possible from globals. |
|
| 536 |
-<br /> |
|
| 537 |
-Additionally, we need to automate our performance testing. We've got |
|
| 538 |
-buildbot to automate our regular integration and compile testing already |
|
| 539 |
-(though we need somebody to set it up on Windows), |
|
| 540 |
-but we need to get our network simulation tests (as built in <a |
|
| 541 |
-href="https://svn.torproject.org/svn/torflow/trunk/README">TorFlow</a>) |
|
| 542 |
-updated for more recent versions of Tor, and designed to launch a test |
|
| 543 |
-network either on a single machine, or across several, so we can test |
|
| 544 |
-changes in performance on machines in different roles automatically. |
|
| 545 |
-</li> |
|
| 546 |
- |
|
| 547 |
-<li> |
|
| 548 |
-<b>Help revive an independent Tor client implementation</b> |
|
| 549 |
-<br /> |
|
| 550 |
-Priority: <i>Medium</i> |
|
| 551 |
-<br /> |
|
| 552 |
-Effort Level: <i>High</i> |
|
| 553 |
-<br /> |
|
| 554 |
-Skill Level: <i>Medium to High</i> |
|
| 555 |
-<br /> |
|
| 556 |
-Likely Mentors: <i>Karsten, Nick</i> |
|
| 557 |
-<br /> |
|
| 558 |
-Reanimate one of the approaches to implement a Tor client in Java, |
|
| 559 |
-e.g. the <a href="http://onioncoffee.sourceforge.net/">OnionCoffee |
|
| 560 |
-project</a>, and make it run on <a |
|
| 561 |
-href="http://code.google.com/android/">Android</a>. The first step |
|
| 562 |
-would be to port the existing code and execute it in an Android |
|
| 563 |
-environment. Next, the code should be updated to support the newer Tor |
|
| 564 |
-protocol versions like the <a href="<svnsandbox>doc/spec/dir-spec.txt">v3 |
|
| 565 |
-directory protocol</a>. Further, support for requesting or even |
|
| 566 |
-providing Tor hidden services would be neat, but not required. |
|
| 567 |
-<br /> |
|
| 568 |
-A prospective developer should be able to understand and write new Java |
|
| 569 |
-code, including |
|
| 570 |
-a Java cryptography API. Being able to read C code would be helpful, |
|
| 571 |
-too. One should be willing to read the existing documentation, |
|
| 572 |
-implement code based on it, and refine the documentation |
|
| 573 |
-when things are underdocumented. This project is mostly about coding and |
|
| 574 |
-to a small degree about design. |
|
| 575 |
-</li> |
|
| 576 |
- |
|
| 577 |
-<li> |
|
| 578 |
-<b>Bring moniTor to life</b> |
|
| 579 |
-<br /> |
|
| 580 |
-Priority: <i>Low</i> |
|
| 581 |
-<br /> |
|
| 582 |
-Effort Level: <i>Medium</i> |
|
| 583 |
-<br /> |
|
| 584 |
-Skill Level: <i>Low to Medium</i> |
|
| 585 |
-<br /> |
|
| 586 |
-Likely Mentors: <i>Karsten, Jacob</i> |
|
| 587 |
-<br /> |
|
| 588 |
-Implement a <a href="http://www.ss64.com/bash/top.html">top-like</a> |
|
| 589 |
-management tool for Tor relays. The purpose of such a tool would be |
|
| 590 |
-to monitor a local Tor relay via its control port and include useful |
|
| 591 |
-system information of the underlying machine. When running this tool, it |
|
| 592 |
-would dynamically update its content like top does for Linux processes. |
|
| 593 |
-<a href="http://archives.seul.org/or/dev/Jan-2008/msg00005.html">This |
|
| 594 |
-or-dev post</a> might be a good first read. |
|
| 595 |
-<br /> |
|
| 596 |
-A person interested in this should be familiar |
|
| 597 |
-with or willing to learn about administering a Tor relay and configuring |
|
| 598 |
-it via its control port. As an initial prototype is written in Python, |
|
| 599 |
-some knowledge about writing Python code would be helpful, too. This |
|
| 600 |
-project is one part about identifying requirements to such a |
|
| 601 |
-tool and designing its interface, and one part lots of coding. |
|
| 828 |
+evaluate other options. Any person working on this automatic build |
|
| 829 |
+process should have experience or be willing to learn how to build all |
|
| 830 |
+of the respective Tor related code bases from scratch. Furthermore, the |
|
| 831 |
+person should have some experience building software in Windows |
|
| 832 |
+environments as this is the target audience we want to ensure we do not |
|
| 833 |
+leave behind. It would require close work with the Tor source code but |
|
| 834 |
+probably only in the form of building, not authoring.<br /> |
|
| 835 |
+Additionally, we need to automate our performance testing for all platforms. |
|
| 836 |
+We've got buildbot (except on Windows — as noted above) to automate |
|
| 837 |
+our regular integration and compile testing already, |
|
| 838 |
+but we need to get our network simulation tests (as built in torflow) |
|
| 839 |
+updated for more recent versions of Tor, and designed to launch a test |
|
| 840 |
+network either on a single machine, or across several, so we can test |
|
| 841 |
+changes in performance on machines in different roles automatically. |
|
| 602 | 842 |
</li> |
| 843 |
+--> |
|
| 603 | 844 |
|
| 604 | 845 |
<!-- Removed, unless Mike still wants this to be in. |
| 605 | 846 |
<li> |
| ... | ... |
@@ -622,31 +863,6 @@ with not too much involvement in the Tor internals. |
| 622 | 863 |
</li> |
| 623 | 864 |
--> |
| 624 | 865 |
|
| 625 |
-<li> |
|
| 626 |
-<b>Improving Polipo on Windows</b> |
|
| 627 |
-<br /> |
|
| 628 |
-Priority: <i>Medium to High</i> |
|
| 629 |
-<br /> |
|
| 630 |
-Effort Level: <i>Medium</i> |
|
| 631 |
-<br /> |
|
| 632 |
-Skill Level: <i>Medium</i> |
|
| 633 |
-<br /> |
|
| 634 |
-Likely Mentors: <i>Martin</i> |
|
| 635 |
-<br /> |
|
| 636 |
-Help port <a |
|
| 637 |
-href="http://www.pps.jussieu.fr/~jch/software/polipo/">Polipo</a> to |
|
| 638 |
-Windows. Example topics to tackle include: |
|
| 639 |
-1) the ability to asynchronously |
|
| 640 |
-query name servers, find the system nameservers, and manage netbios |
|
| 641 |
-and dns queries. |
|
| 642 |
-2) manage events and buffers |
|
| 643 |
-natively (i.e. in Unix-like OSes, Polipo defaults to 25% of ram, in |
|
| 644 |
-Windows it's whatever the config specifies). 3) some sort of GUI config |
|
| 645 |
-and reporting tool, bonus if it has a systray icon with right clickable |
|
| 646 |
-menu options. Double bonus if it's cross-platform compatible. |
|
| 647 |
-4) allow the software to use the Windows Registry and handle proper Windows directory locations, such as "C:\Program Files\Polipo" |
|
| 648 |
-</li> |
|
| 649 |
- |
|
| 650 | 866 |
<!-- Is Blossom development still happening? |
| 651 | 867 |
<li> |
| 652 | 868 |
<b>Rework and extend Blossom</b> |
| ... | ... |
@@ -698,81 +914,6 @@ the core of the Blossom effort. |
| 698 | 914 |
</li> |
| 699 | 915 |
--> |
| 700 | 916 |
|
| 701 |
-<li> |
|
| 702 |
-<b>Implement a torrent-based scheme for downloading Thandy packages</b> |
|
| 703 |
-<br /> |
|
| 704 |
-Priority: <i>Medium to High</i> |
|
| 705 |
-<br /> |
|
| 706 |
-Effort Level: <i>High</i> |
|
| 707 |
-<br /> |
|
| 708 |
-Skill Level: <i>Medium to High</i> |
|
| 709 |
-<br /> |
|
| 710 |
-Likely Mentors: <i>Martin, Nick</i> |
|
| 711 |
-<br /> |
|
| 712 |
-<a |
|
| 713 |
-href="http://git.torproject.org/checkout/thandy/master/specs/thandy-spec.txt">Thandy</a> |
|
| 714 |
-is a relatively new software to allow assisted updates of Tor and related |
|
| 715 |
-software. Currently, there are very few users, but we expect Thandy to be |
|
| 716 |
-used by almost every Tor user in the future. To avoid crashing servers on |
|
| 717 |
-the day of a Tor update, we need new ways to distribute new packages |
|
| 718 |
-efficiently, and using libtorrent seems to be a possible solution. If you |
|
| 719 |
-think of other good ideas, great - please do let us know!<br /> |
|
| 720 |
-We also need to investigate how to include our mirrors better. If possible, |
|
| 721 |
-there should be an easy way for them to help distributing the packages. |
|
| 722 |
-</li> |
|
| 723 |
- |
|
| 724 |
-<li> |
|
| 725 |
-<b>Torbutton equivalent for Thunderbird</b> |
|
| 726 |
-<br /> |
|
| 727 |
-Priority: <i>Low</i> |
|
| 728 |
-<br /> |
|
| 729 |
-Effort Level: <i>High</i> |
|
| 730 |
-<br /> |
|
| 731 |
-Skill Level: <i>High</i> |
|
| 732 |
-<br /> |
|
| 733 |
-Likely Mentors: <i>Mike</i> |
|
| 734 |
-<br /> |
|
| 735 |
-We're hearing from an increasing number of users that they want to use |
|
| 736 |
-Thunderbird with Tor. However, there are plenty of application-level |
|
| 737 |
-concerns, for example, by default Thunderbird will put your hostname in |
|
| 738 |
-the outgoing mail that it sends. At some point we should start a new |
|
| 739 |
-push to build a Thunderbird extension similar to Torbutton. |
|
| 740 |
-</li> |
|
| 741 |
- |
|
| 742 |
-<li> |
|
| 743 |
-<b>New Torbutton Features</b> |
|
| 744 |
-<br /> |
|
| 745 |
-Priority: <i>Medium</i> |
|
| 746 |
-<br /> |
|
| 747 |
-Effort Level: <i>High</i> |
|
| 748 |
-<br /> |
|
| 749 |
-Skill Level: <i>High</i> |
|
| 750 |
-<br /> |
|
| 751 |
-Likely Mentors: <i>Mike</i> |
|
| 752 |
-<br/> |
|
| 753 |
-There are several <a |
|
| 754 |
-href="https://bugs.torproject.org/flyspray/index.php?tasks=all&project=5&type=2">good |
|
| 755 |
-feature requests</a> on the Torbutton Flyspray section. In particular, <a |
|
| 756 |
-href="https://bugs.torproject.org/flyspray/index.php?do=details&id=523">Integrating |
|
| 757 |
-'New Identity' with Vidalia</a>, |
|
| 758 |
-<a href="https://bugs.torproject.org/flyspray/index.php?do=details&id=940">ways of |
|
| 759 |
-managing multiple cookie jars/identities</a>, <a |
|
| 760 |
-href="https://bugs.torproject.org/flyspray/index.php?do=details&id=637">preserving |
|
| 761 |
-specific cookies</a> when cookies are cleared, |
|
| 762 |
-<a |
|
| 763 |
-href="https://bugs.torproject.org/flyspray/index.php?do=details&id=524">better |
|
| 764 |
-referrer spoofing</a>, <a |
|
| 765 |
-href="https://bugs.torproject.org/flyspray/index.php?do=details&id=564">correct |
|
| 766 |
-Tor status reporting</a>, and <a |
|
| 767 |
-href="https://bugs.torproject.org/flyspray/index.php?do=details&id=462">"tor://" |
|
| 768 |
-and "tors://" urls</a> are all interesting |
|
| 769 |
-features that could be added. |
|
| 770 |
-<br /> |
|
| 771 |
-This work would be independent coding in Javascript and the fun world of <a |
|
| 772 |
-href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">XUL</a>, |
|
| 773 |
-with not too much involvement in the Tor internals. |
|
| 774 |
-</li> |
|
| 775 |
- |
|
| 776 | 917 |
<!-- not really suited for GSoC; integrated into TBB for Linux/Mac OS X |
| 777 | 918 |
<li> |
| 778 | 919 |
<b>Usability testing of Tor</b> |
| ... | ... |
@@ -792,147 +933,6 @@ structured process would be better. |
| 792 | 933 |
</li> |
| 793 | 934 |
--> |
| 794 | 935 |
|
| 795 |
-<li> |
|
| 796 |
-<b>Translation wiki for our website</b> |
|
| 797 |
-<br /> |
|
| 798 |
-Priority: <i>High</i> |
|
| 799 |
-<br /> |
|
| 800 |
-Effort Level: <i>Medium</i> |
|
| 801 |
-<br /> |
|
| 802 |
-Skill Level: <i>Medium</i> |
|
| 803 |
-<br /> |
|
| 804 |
-Likely Mentors: <i>Jacob</i> |
|
| 805 |
-<br /> |
|
| 806 |
-The Tor Project has been working over the past year to set up web-based |
|
| 807 |
-tools to help volunteers translate our applications into other languages. |
|
| 808 |
-We finally hit upon Pootle, and we have a fine web-based translation engine |
|
| 809 |
-in place for Vidalia, Torbutton, and Torcheck. However, Pootle only |
|
| 810 |
-translates strings that are in the "po" format, and our website uses wml |
|
| 811 |
-files. This project is about finding a way to convert our wml files into po |
|
| 812 |
-strings and back, so they can be handled by Pootle. |
|
| 813 |
-</li> |
|
| 814 |
- |
|
| 815 |
-<li> |
|
| 816 |
-<b>New Thandy Features</b> |
|
| 817 |
-<br /> |
|
| 818 |
-Priority: <i>Medium</i> |
|
| 819 |
-<br /> |
|
| 820 |
-Effort Level: <i>Medium</i> |
|
| 821 |
-<br /> |
|
| 822 |
-Skill Level: <i>Medium to High</i> |
|
| 823 |
-<br /> |
|
| 824 |
-Likely Mentors: <i>Martin</i> |
|
| 825 |
-<br /> |
|
| 826 |
-Additional capabilities are needed for assisted updates of all the Tor |
|
| 827 |
-related software for Windows and other operating systems. Some of the |
|
| 828 |
-features to consider include: |
|
| 829 |
-1) Integration of the <a |
|
| 830 |
-href="http://chandlerproject.org/Projects/MeTooCrypto">MeTooCrypto |
|
| 831 |
-Python library</a> |
|
| 832 |
-for authenticated HTTPS downloads. 2) Adding a level of indirection |
|
| 833 |
-between the timestamp signatures and the package files included in an |
|
| 834 |
-update. See the "Thandy attacks / suggestions" thread on or-dev. |
|
| 835 |
-3) Support locale specific installation and configuration of assisted |
|
| 836 |
-updates based on preference, host, or user account language settings. |
|
| 837 |
-Familiarity with Windows codepages, unicode, and other character sets |
|
| 838 |
-is helpful in addition to general win32 and posix API experience and |
|
| 839 |
-Python proficiency. |
|
| 840 |
-</li> |
|
| 841 |
- |
|
| 842 |
-<li> |
|
| 843 |
-<b>Intermediate Level Network Device Driver</b> |
|
| 844 |
-<br /> |
|
| 845 |
-Priority: <i>Low</i> |
|
| 846 |
-<br /> |
|
| 847 |
-Effort Level: <i>High</i> |
|
| 848 |
-<br /> |
|
| 849 |
-Skill Level: <i>High</i> |
|
| 850 |
-<br /> |
|
| 851 |
-Likely Mentors: <i>Martin</i> |
|
| 852 |
-<br /> |
|
| 853 |
-The WinPCAP device driver used by Tor VM for bridged networking does |
|
| 854 |
-not support a number of wireless and non-Ethernet network adapters. |
|
| 855 |
-Implementation of a intermediate level network device driver for win32 |
|
| 856 |
-and 64bit would provide a way to intercept and route traffic over such |
|
| 857 |
-networks. This project will require knowledge of and experience with |
|
| 858 |
-Windows kernel device driver development and testing. Familiarity with |
|
| 859 |
-Winsock and Qemu would also be helpful. |
|
| 860 |
-</li> |
|
| 861 |
- |
|
| 862 |
-<li> |
|
| 863 |
-<b>Tor Browser Bundle for Linux/Mac OS X</b> |
|
| 864 |
-<br /> |
|
| 865 |
-Priority: <i>High</i> |
|
| 866 |
-<br /> |
|
| 867 |
-Effort Level: <i>High</i> |
|
| 868 |
-<br /> |
|
| 869 |
-Skill Level: <i>Medium</i> |
|
| 870 |
-<br /> |
|
| 871 |
-Likely Mentors: <i>Steven, Andrew</i> |
|
| 872 |
-<br /> |
|
| 873 |
-The Tor Browser bundle incorporates Tor, Firefox, and the Vidalia user |
|
| 874 |
-interface (and optionally Pidgin IM). Components are pre-configured to |
|
| 875 |
-operate in a secure way, and it has very few dependencies on the |
|
| 876 |
-installed operating system. It has therefore become one of the most |
|
| 877 |
-easy to use, and popular, ways to use Tor on Windows. |
|
| 878 |
-<br /> |
|
| 879 |
-However, there is currently no comparable package for Linux and Mac OS |
|
| 880 |
-X, so this project would be to implement Tor Browser Bundle for these |
|
| 881 |
-platforms. This will involve modifications to Vidalia (C++), possibly |
|
| 882 |
-Firefox (C) then creating and testing the launcher on a range of |
|
| 883 |
-operating system versions and configurations to verify portability. |
|
| 884 |
-<br /> |
|
| 885 |
-Students should be familiar with application development on one or |
|
| 886 |
-preferably both of Linux and Mac OS X, and be comfortable with C/C++ |
|
| 887 |
-and shell scripting. |
|
| 888 |
-<br /> |
|
| 889 |
-Part of this project could be usability testing of Tor Browser Bundle, |
|
| 890 |
-ideally amongst our target demographic. |
|
| 891 |
-That would help a lot in knowing what needs to be done in terms of bug |
|
| 892 |
-fixes or new features. We get this informally at the moment, but a more |
|
| 893 |
-structured process would be better. |
|
| 894 |
-</li> |
|
| 895 |
- |
|
| 896 |
-<li> |
|
| 897 |
-<b>Simulator for slow Internet connections</b> |
|
| 898 |
-<br /> |
|
| 899 |
-Priority: <i>Medium</i> |
|
| 900 |
-<br /> |
|
| 901 |
-Effort Level: <i>Medium</i> |
|
| 902 |
-<br /> |
|
| 903 |
-Skill Level: <i>Medium</i> |
|
| 904 |
-<br /> |
|
| 905 |
-Likely Mentors: <i>Steven</i> |
|
| 906 |
-<br /> |
|
| 907 |
-Many users of Tor have poor-quality Internet connections, giving low |
|
| 908 |
-bandwidth, high latency, and high packet loss/re-ordering. User |
|
| 909 |
-experience is that Tor reacts badly to these conditions, but it is |
|
| 910 |
-difficult to improve the situation without being able to repeat the |
|
| 911 |
-problems in the lab. |
|
| 912 |
-<br /> |
|
| 913 |
-This project would be to build a simulation environment which |
|
| 914 |
-replicates the poor connectivity so that the effect on Tor performance |
|
| 915 |
-can be measured. Other components would be a testing utility to |
|
| 916 |
-establish what are the properties of connections available, and to |
|
| 917 |
-measure the effect of performance-improving modifications to Tor. |
|
| 918 |
-<br /> |
|
| 919 |
-The tools used would be up to the student, but dummynet (for FreeBSD) |
|
| 920 |
-and nistnet (for Linux) are two potential components on which this |
|
| 921 |
-project could be built. Students should be experienced with network |
|
| 922 |
-programming/debugging and TCP/IP, and preferably familiar with C and a |
|
| 923 |
-scripting language. |
|
| 924 |
-</li> |
|
| 925 |
- |
|
| 926 |
-<li> |
|
| 927 |
-<b>Bring up new ideas!</b> |
|
| 928 |
-<br /> |
|
| 929 |
-Don't like any of these? Look at the <a |
|
| 930 |
-href="<svnsandbox>doc/roadmaps/2008-12-19-roadmap-full.pdf">Tor development |
|
| 931 |
-roadmap</a> for more ideas. |
|
| 932 |
-Some of the <a href="<svnsandbox>doc/spec/proposals/">current proposals</a> |
|
| 933 |
-might also be short on developers. |
|
| 934 |
-</li> |
|
| 935 |
- |
|
| 936 | 936 |
</ol> |
| 937 | 937 |
|
| 938 | 938 |
<a id="OtherCoding"></a> |
| 939 | 939 |