and four projects from matt
Roger Dingledine

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 &amp; 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