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 |