Roger Dingledine commited on 2008-03-10 08:20:58
Zeige 1 geänderte Dateien mit 123 Einfügungen und 0 Löschungen.
| ... | ... |
@@ -93,6 +93,129 @@ Farsi translations, for the many Tor users in censored areas.</li> |
| 93 | 93 |
<h2><a class="anchor" href="#Projects">Good Coding Projects</a></h2> |
| 94 | 94 |
<ol> |
| 95 | 95 |
|
| 96 |
+<li> |
|
| 97 |
+Tor/Polipo/Vidalia Auto-Update Framework |
|
| 98 |
+<br /> |
|
| 99 |
+Vidalia already has the ability to notice when the user is running an |
|
| 100 |
+outdated or unrecommended version of Tor. Currently, Vidalia simply pops |
|
| 101 |
+up a little message box that lets the user know they should manually |
|
| 102 |
+upgrade. The goal of this project would be to extend Vidalia with the |
|
| 103 |
+ability to also fetch and install the updated Tor software for the |
|
| 104 |
+user. Time permitting, we would also like to be able to update other |
|
| 105 |
+applications included in the bundled installers, such as Polipo and |
|
| 106 |
+Vidalia itself. |
|
| 107 |
+<br /> |
|
| 108 |
+To complete this project, the student will first need to first investigate |
|
| 109 |
+the existing auto-update frameworks (e.g., Sparkle on OS X) to evaluate |
|
| 110 |
+their strengths, weaknesses, security properties, and ability to be |
|
| 111 |
+integrated into Vidalia. If none are found to be suitable, the student |
|
| 112 |
+will design their own auto-update framework, document the design, and |
|
| 113 |
+then discuss the design with other developers to assess any security |
|
| 114 |
+issues. The student will then implement their framework (or integrate |
|
| 115 |
+an existing one) and test it. |
|
| 116 |
+<br /> |
|
| 117 |
+A student undertaking this project should have good C++ development |
|
| 118 |
+experience. Previous experience with Qt is helpful, but not required. The |
|
| 119 |
+student should also have a basic understanding of common security |
|
| 120 |
+practices, such as package signature verification. Good writing ability |
|
| 121 |
+is also important for this project, since a vital step of the project |
|
| 122 |
+will be producing a design document for others to review and discuss |
|
| 123 |
+with the student prior to implementation. |
|
| 124 |
+</li> |
|
| 125 |
+ |
|
| 126 |
+<li> |
|
| 127 |
+An Improved and More Usable Network Map |
|
| 128 |
+<br /> |
|
| 129 |
+One of Vidalia's existing features is a network map that shows the user |
|
| 130 |
+the approximate geographic location of relays in the Tor network and |
|
| 131 |
+plots the paths the user's traffic takes as it is tunneled through the |
|
| 132 |
+Tor network. The map is currently not very interactive and has rather |
|
| 133 |
+poor graphics. Instead, we would like to leverage KDE's Marble widget |
|
| 134 |
+that gives us a better quality map and enables improved interactivity, |
|
| 135 |
+such as allowing the user to click on individual relays or circuits to |
|
| 136 |
+display additional information. We might also consider adding the ability |
|
| 137 |
+for users to click on a particular relay or a country containing one or |
|
| 138 |
+more Tor exit relays and say, ``I want my connections to foo.com to exit |
|
| 139 |
+from here.'' |
|
| 140 |
+<br /> |
|
| 141 |
+This project will first involve the student getting familiar with Vidalia |
|
| 142 |
+and the Marble widget's API. The student will then integrate the widget |
|
| 143 |
+into Vidalia and customize Marble to be better suited for our application, |
|
| 144 |
+such as making circuits clickable, storing cached map data in Vidalia's |
|
| 145 |
+own data directory, and customizing some of the widget's dialogs. |
|
| 146 |
+<br /> |
|
| 147 |
+A student undertaking this project should have good C++ development |
|
| 148 |
+experience. Previous experience with Qt and CMake is helpful, but not |
|
| 149 |
+required. |
|
| 150 |
+</li> |
|
| 151 |
+ |
|
| 152 |
+<li> |
|
| 153 |
+Better Debian Support & Packaging |
|
| 154 |
+<br /> |
|
| 155 |
+Vidalia currently doesn't play nicely on Debian and Ubuntu with the |
|
| 156 |
+default Tor packages. The current Tor packages automatically start Tor |
|
| 157 |
+as a daemon running as the debian-tor user and (sensibly) do not have a |
|
| 158 |
+CntrolPort defined in the default torrc. Consequently, Vidalia will try |
|
| 159 |
+to start its own Tor process since it could not connect to the existing |
|
| 160 |
+Tor, and then Vidalia's Tor process will then exit with an error message |
|
| 161 |
+the user likely doesn't understand since Tor cannot bind its listening |
|
| 162 |
+ports--they're already in use by the original Tor daemon. |
|
| 163 |
+<br /> |
|
| 164 |
+The current solution involves either telling the user to stop the |
|
| 165 |
+existing Tor daemon and let Vidalia start its own Tor process, or |
|
| 166 |
+explaining to the user how to set a control port and password in their |
|
| 167 |
+torrc. A better solution on Debian would be to use Tor's ControlSocket, |
|
| 168 |
+which allows Vidalia to talk to Tor via a Unix domain socket, and could |
|
| 169 |
+possibly be enabled by default in Tor's Debian packages. Vidalia can |
|
| 170 |
+then authenticate to Tor using cookie authentication if the user running |
|
| 171 |
+Vidalia is also in the debian-tor group. |
|
| 172 |
+<br /> |
|
| 173 |
+This project will first involve adding support for Tor's ControlSocket |
|
| 174 |
+to Vidalia. The student will then develop and test Debian and Ubuntu |
|
| 175 |
+packages for Vidalia that conform to Debian's packaging standards and |
|
| 176 |
+making sure it works well with the existing Tor packages. We can also |
|
| 177 |
+set up an apt repository to host the new Vidalia packages. |
|
| 178 |
+<br /> |
|
| 179 |
+A student undertaking this project should have prior knowledge of |
|
| 180 |
+Debian package management and some C++ development experience. Previous |
|
| 181 |
+experience with Qt is helpful, but not required. |
|
| 182 |
+</li> |
|
| 183 |
+ |
|
| 184 |
+<li> |
|
| 185 |
+Tor Status Event Interface |
|
| 186 |
+<br /> |
|
| 187 |
+There may are a number of status changes of which the user may need |
|
| 188 |
+to be informed. For example, if the user is trying to set up a Tor |
|
| 189 |
+relay and Tor decides the user's relay is not reachable from outside |
|
| 190 |
+the user's network, we should alert the user. Currently, all the user |
|
| 191 |
+gets is a couple log messages in Vidalia's 'message log', which they |
|
| 192 |
+likely never see since they don't receive a notification that something |
|
| 193 |
+has gone wrong. Even if the user does actually look at the message log, |
|
| 194 |
+most of the messages make little sense to the novice user. |
|
| 195 |
+<br /> |
|
| 196 |
+Tor has the ability to inform Vidalia of many such status changes, and |
|
| 197 |
+we recently implemented support for a couple of these events. Still, |
|
| 198 |
+there are many more status events the user should be informed of and we |
|
| 199 |
+need a better UI for actually displaying them to the user. |
|
| 200 |
+<br /> |
|
| 201 |
+The goal of this project then is to design and implement a UI for |
|
| 202 |
+displaying Tor status events to the user. For example, we might put a |
|
| 203 |
+little badge on Vidalia's tray icon that alerts the user to new status |
|
| 204 |
+events they should look at. Double-clicking the icon could bring up a |
|
| 205 |
+dialog that summarizes recent status events in simple terms and maybe |
|
| 206 |
+suggests a remedy for any negative statuses if they can be corrected by |
|
| 207 |
+the user. Of course, this is just an example and the student is free to |
|
| 208 |
+suggest another approach. |
|
| 209 |
+<br /> |
|
| 210 |
+A student undertaking this project should have good UI design and layout |
|
| 211 |
+experience and some C++ development experience. Previous experience |
|
| 212 |
+with Qt and Qt's Designer will be very helpful, but not required. Some |
|
| 213 |
+English writing ability will also be useful, since this project will |
|
| 214 |
+likely involve writing small amounts of help documentation that should |
|
| 215 |
+be understandable by non-technical users. Bonus points for some graphic |
|
| 216 |
+design/Photoshop fu, since we might want/need some shiny new icons too. |
|
| 217 |
+</li> |
|
| 218 |
+ |
|
| 96 | 219 |
<li> |
| 97 | 220 |
Tor needs even better censorship resistance mechanisms. There are |
| 98 | 221 |
several mechanisms that can help. Tor should be able listen on multiple |
| 99 | 222 |