-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
Hello everyone!
The following is my first draft of the proposal for the anon-connection-wizard. Could anyone offer me some feedback about it please? Any recommendation, suggestion and criticism are very welcome and appreciated!
# Introduction
Every software project should solve a problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. Include links to discussions, features, or bugs that describe the problem further if necessary.
The anon-connection-wizard is a Python-clone of the Tor Launcher which aims at providing Tor users with a graphical instruction on configuring the Tor. This applicatipn has been developed as a part of the Whonix Project: https://github.com/Whonix/anon-connection-wizard Some of the screenshots of the old version anon-connection-wizard can be found here: https://www.whonix.org/blog/connection-bridge-wizard
This application is especially helpful for users who live in Tor-censored area. This is because those users can only connect to the Tor network with the help of other censorship circumvention tools which include but are not limited to Tor bridges, pluggable transports and other third party Internet censorship circumvention tools like Lantern and VPN.
Currently, the Tor Launcher is shipped with the Tor Browser Bundle and heavily relies on the Tor Browser for its implementation. These facts cause using Tor Launcher without having the Tor Browser impossible. I agree with the whonix core developer Patrick Schleizer that "the Tor Browser Bundle has its kind of users. system Tor (refers to Tor from packages.debian.org or deb.torproject.org) users, where Tor runs as daemon, is used in different ways for different purposes. These users cannot use Tor Launcher, because it only works with Tor Browser". Therefore, although anon-connection-wizard is a Python-clone of the Tor luancher, since all its dependencies are already in Debian and alrea dy packaged, it can still be really useful for the system Tor users.
In addition, the current instructions provided by the anon-connection-wizard and Tor launcher is not be clear enough for user to configure Tor correctly. Therefore I would like to implement and redesign the anon-connection-wizard. I hope that my work will help more people to connect to the Tor network efficiently and successfully.
# Project goals
Be short and to the point, and perhaps format it as a list. Propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the Google Summer of Code term is what counts.
As mentioned above, the projects goals include two main parts: 1. The clone implementation of Tor Launcher; 2. The redesign of the anon-connection-wizard.
# Implementation
Be detailed. Describe what you plan to do as a solution for the problem you defined above. Include technical details, showing that you understand the technology. Illustrate key technical elements of your proposed solution in reasonable detail.
The clone implementation of Tor Launcher: Currently, I have helped to implement the basic functions of anon-connection-wizard. However, there are still several bugs need fixing and a large number of exciting features need implementing, which include:
1. The current implementation of configuring torrc file is very rudimentary. The anon-connection-wizard should read the previous bridge/proxy configuration from the file and adjust the default UI accordingly. Just like what Tor Launcher has been doing. The "edit marker approach" is preferred way to implement this: https://forums.whonix.org/t/graphical-gui-whonix-setup-wizard-anon-conne ction-wizard-technical-discussion/650/226 2. The password for proxy setting should be covered by character *
The redesign of the anon-connection-wizard: I have made a specific proposal for this topic, which can be found here: https://forums.whonix.org/t/a-proposal-for-redesigning-anon-connection-w izard-for-better-usability/3681 The redesign should at least includes: 1. Rearranging the instruction page orders for better usability; 2. Rewriting the literal instruction so that it fits the actual situation of people in censored areas; 3. Adding more features to the custom Tor bridges configuration input box for more clear instruction. For example, syntax highlight, tool-tips, etc; 4. Doing user behavior experiment to find out what can be helpful for better usability; 5. Modifying the anon-connection-wizard based on the result of the experiment.
# Timeline
Show that you understand the problem, have a solution, have also broken it down into manageable parts, and that you have a realistic plan on how to accomplish your goal.
Here you set expectations, so don’t make promises you can’t keep. A modest, realistic and detailed timeline is better than promising the impossible.
Since the specific dates may be changed with the undecided working schedule. I arrange my timeline in a week unit.
Week 1: The password for proxy setting should be covered by character *.
Week 2: Implement the "edit marker approach".
Week 3: Rewriting the literal instruction so that it fits the actual situation of people in censored areas.
Week 4: Generate ideas on redesigning the anon-continence-wizard users interface, basing on the recommendations from outside sources, problems discussed above and suggestions from other people. Present the planning redesign to public to receive feedback.
Week 5: Rearranging the instruction page orders for better usability; Rewriting the literal instruction so that it fits the actual situation of people in censored areas.
Week 6: Adding more features to the custom Tor bridges configuration input box for more clear instruction. For example, syntax highlight, tool-tips, et c;
Week 7: Prepare for the user behavior experiment, including recruitment and setting up environment.
Week 8: Conduct the experiment.
Week 9: Process and analysis the experiment data.
Week 10: Write the research report.
Week 11: Modifying the anon-connection-wizard based on the result of the experiment.
Week 12: Modifying the anon-connection-wizard based on the result of the experiment.
If you have other commitments during GSoC, such as a job, vacation, exams, internship, seminars, or papers to write, disclose them here.
I am going to be enrolled for the Summer 2017 semester that begins May 22nd and ends June 23th at XXX University. I am going to take two classes from Monday to Friday for each week during the Summer semester. One will be from 3:20PM to 5:00PM (UTC) and another one will be from 7:00PM to 8:40PM (UTC).
GSoC should be treated like a full-time job, and we will expect approximately 40 hours of work per week. If you have conflicts, explain how you will work around them. If you are found to have conflicts which you did not disclose, you may be failed.
The sum of the time I will be in class for each weekday will be 3 hours and 20 minute which is totally fine to me. My current overall GPA is 4.0/4.0 which may help to prove I can handle my school study well. According to Google Summer of Code timeline, the “[c]oding officially begins” at May 30th which means there will be approximate three weeks that I have both school study and Google Summer of Code.
To work around it, I have came up with three plans which either of them is fine to my potential mentor: 1. Since I have been familiar with the contributing workflow for Whonix, I do not have to spend a lot of time to get used to it. Therefore I can use the “Community Bonding Period” which is from May 4th to May 30th to do the real coding for the project; 2. I can also keep committing to the project during each weekend from now on before May 4th . This is also a way to work around the time conflicts. 3. If I am expected to code only during the official timeline, I can spend 5 hours each day during the weekdays and spend 8 hours each day during the weekends.
Open and clear communication is of utmost importance. Include your plans for communication in your proposal; daily if possible.
I agree that “[o]pen and clear communication is of utmost importance”. This is because of two main reasons from my point of view. First, a successful free and open source software development heavily relies on the collaboration between different people. A good communication skill will create a positive and supportive atmosphere which not only make everyone works for it more efficient but also attracts more people to join the development. Second, feedback from others, especially mentor, can be extremely beneficial to a student’s progress. Without the feedback, it may take a student years until one day after a frustrating debugging process to realize a mistake he/she made; while he/she may realize several mistakes he/she made almost immediately from his/her mentor’s feedback.
I have already been working on the project with my potential mentor Patrick Schleizer. A small part of our open communication can be found [here](https://forums.whonix.org/t/graphical-gui-whonix-setup-wizard-ano n-connection-wizard-technical-discussion/650/222), which may be helpful to prove we have been having an open and clear communication.
My plan is to take the [Whonix Forum](https://forums.whonix.org/) as the daily communication platform with my potential mentor Patrick. And just like what I have been doing, I will also post a detailed progress report for each working period which is no more than a week. I can definitely send the posts to the tor-dev mailing list if it is considered as a good idea.
# About me
Provide your contact information
Currently, people can contact me through the following ways: 1. Email: irykoon at gmail dot com GPG: https://pgp.mit.edu/pks/lookup?op=vindex&search=0xA14B4DBC6DCDD53C 2. Github: @irykoon 3. Whonix Forum: @iry
I will inform the public if there is any change to my contact informatio n.
and write a few sentences about you and why you think you are the best for this job.
As one who was living in oppressive area, I deeply understand the importance of Internet freedom to a society. At first, I merely considered Internet freedom as fighting against Internet censorship. However, after a large amount of observation, reading and reflection, I realized that the self-censorship conducted by every scared citizens was much more powerful and terrible than the censorship conducted by the outside world. It was at that moment I realized the online anonymity was a vital component to Internet freedom because it frees people from fear.
I value Tor/Whonix. Without it, I couldn't have been freed from the fear and explored the world freely and finally became who I am today.
Therefore, contributing to Tor/Whonix as a career is not only a dream that I have been fighting for, but also an essential approach to my self-actualization.
Prior contributions are helpful; list your commits.
The followings are my pull requests on GitHub to the Whonix: 1. [Basic features implementation](https://github.com/Whonix/anon-connection-wizard/pull/1) 2. [Pluggable transport renew](https://github.com/Whonix/anon-connection-wizard/pull/2) 3. [A proposal for redesigning anon-connection-wizard for better usability](https://github.com/Whonix/anon-connection-wizard/pull/3) 4. [Port from Python2 to Python3.4 & from PyQt4 to PyQt5](https://github.com/Whonix/anon-connection-wizard/pull/4)
The following is my proposal for the redesign of anon-connection-wizard: 1. https://forums.whonix.org/t/a-proposal-for-redesigning-anon-connection-w izard-for-better-usability/3681
Name people (other developers, students, professors) who can act as a reference for you. Mention your field of study if necessary.
My potential mentor, Patrick Schleizer, can be a reference for me. He is a core developer of the Whonix Project,
Other things to think about: * Are you comfortable working independently under a supervisor or mentor who is several thousand miles away, and perhaps 12 time zones away? How will you work with your mentor to track your work? Have you worked in this style before?
Yes! I have been interacting, working and learning in this style with my potential mentor and I am really comfortable with that.
- If your native language is not English, are you comfortable
working closely with a supervisor whose native language is English? What is your native language, as that may help us find a mentor who has the same native language?
Both my potential mentor Patrick and I can communicate in English. So there is no problem with that.
irykoon:
Currently, the Tor Launcher is shipped with the Tor Browser Bundle and heavily relies on the Tor Browser for its implementation. These facts cause using Tor Launcher without having the Tor Browser impossible. I agree with the whonix core developer Patrick Schleizer that "the Tor Browser Bundle has its kind of users. system Tor (refers to Tor from packages.debian.org or deb.torproject.org) users, where Tor runs as daemon, is used in different ways for different purposes. These users cannot use Tor Launcher, because it only works with Tor Browser".
I might be misunderstanding what you and Patrick mean with "impossible" (or rather, which use cases are impossible) w.r.t. using Tor Launcher outside of the Tor Browser; Tails uses the Tor Launcher shipped in Tor Browser, but it's run as a stand-alone XUL application (`firefox --app ...`), so the *web* browser isn't started as part of it. [1] One could even run it using Iceweasel/Firefox, i.e. completely without Tor Browser.
That said, this approach will not be viable any more some time next year when the Firefox ESR branch drops XUL support and Tor Launcher is deprecated upstream. It remains to see how the replacement of Tor Launcher will look, it might still work for Tails. However, if anon-connection-wizard would be a (more or less) drop-in replacement for Tor Launcher in Tails, that would be immensely helpful since we'd have a solution that will be guaranteed to work for us without much work. And I guess as long as the UX is more or less identical to the new Tor Launcher and rapidly adapts to changes, and there are good translations, we'd probably prefer it over the new Tor Launcher, since it probably will be even harder to decouple from the web browser.
Any way, I also see potential for future collaboration between Whonix and Tails for extending the usefulness of anon-connection-wizard beyond what Tor Launcher (and its replacement) offers [2]; anon-connection-wizard targets the OS, not just a single application, so it could integrate the choices of network configuration (wired? which wireless network? MAC spoofing?) and Tor configuration (proxy? pluggable transport?) in a single place which probably makes more sense for users and also allows us to more easily (optionally) save these settings so they are restored the next time you visit the same network. This could potentially even be used to help giving users control over entry node selection to avoid persistent Entry Guards from leaking information about you geographical movement. [3]
Cheers!
[1] The first two scripts are parts of the build process, the two latter ones are for starting it: * https://git-tails.immerda.ch/tails/tree/config/chroot_local-hooks/06-adduser... * https://git-tails.immerda.ch/tails/tree/config/chroot_local-hooks/10-tbb?h=d... * https://git-tails.immerda.ch/tails/tree/config/chroot_local-includes/usr/loc... * https://git-tails.immerda.ch/tails/tree/config/chroot_local-includes/usr/loc... [2] https://tails.boum.org/blueprint/network_connection/ [3] We discuss the issue of https://tails.boum.org/blueprint/persistent_Tor_state/
On Sun, Mar 26, 2017 at 02:28:00PM +0000, anonym wrote:
Tails uses the Tor Launcher shipped in Tor Browser, but it's run as a stand-alone XUL application (`firefox --app ...`), so the *web* browser isn't started as part of it.
Sorry to change the subject, but should we be running meek-http-helper using "firefox --app"? I didn't know about that before. It sounds like it could solve some of the problems associated with having multiple Firefox profiles.
David Fifield:
On Sun, Mar 26, 2017 at 02:28:00PM +0000, anonym wrote:
Tails uses the Tor Launcher shipped in Tor Browser, but it's run as a stand-alone XUL application (`firefox --app ...`), so the *web* browser isn't started as part of it.
Sorry to change the subject, but should we be running meek-http-helper using "firefox --app"? I didn't know about that before. It sounds like it could solve some of the problems associated with having multiple Firefox profiles.
I have no strong opinions here. It seems worth playing with it to figure out if it could be helpful in a meek context.
Georg
Georg Koppen:
David Fifield:
On Sun, Mar 26, 2017 at 02:28:00PM +0000, anonym wrote:
Tails uses the Tor Launcher shipped in Tor Browser, but it's run as a stand-alone XUL application (`firefox --app ...`), so the *web* browser isn't started as part of it.
Sorry to change the subject, but should we be running meek-http-helper using "firefox --app"? I didn't know about that before. It sounds like it could solve some of the problems associated with having multiple Firefox profiles.
I have no strong opinions here. It seems worth playing with it to figure out if it could be helpful in a meek context.
Correct me if I am wrong, but won't `firefox --app` stop working early next year? Or is it only XUL extensions that won't work initially? Any way, XUL is going away, so I don't think too much effort should be put into anything XUL-related.
Cheers!
anonym:
irykoon:
Currently, the Tor Launcher is shipped with the Tor Browser Bundle and heavily relies on the Tor Browser for its implementation. These facts cause using Tor Launcher without having the Tor Browser impossible. I agree with the whonix core developer Patrick Schleizer that "the Tor Browser Bundle has its kind of users. system Tor (refers to Tor from packages.debian.org or deb.torproject.org) users, where Tor runs as daemon, is used in different ways for different purposes. These users cannot use Tor Launcher, because it only works with Tor Browser".
I might be misunderstanding what you and Patrick mean with "impossible" (or rather, which use cases are impossible) w.r.t. using Tor Launcher outside of the Tor Browser; Tails uses the Tor Launcher shipped in Tor Browser, but it's run as a stand-alone XUL application (`firefox --app ...`), so the *web* browser isn't started as part of it. [1] One could even run it using Iceweasel/Firefox, i.e. completely without Tor Browser.
Right. I might have used the word "impossible" as a short cut to say the following:
tor-launcher will never be a great solution for system Tor users on Debian. Since Tor Browser is not packaged as in Debian unfortunately as it looks like will not be anytime soon, getting tor-launcher working nicely as a package available from packages.debian.org is very hard and unrealistic. A python rewrite (anon anon-connection-wizard) seems the way to go.
That said, this approach will not be viable any more some time next year when the Firefox ESR branch drops XUL support and Tor Launcher is deprecated upstream. It remains to see how the replacement of Tor Launcher will look, it might still work for Tails. However, if anon-connection-wizard would be a (more or less) drop-in replacement for Tor Launcher in Tails, that would be immensely helpful since we'd have a solution that will be guaranteed to work for us without much work. And I guess as long as the UX is more or less identical to the new Tor Launcher and rapidly adapts to changes, and there are good translations, we'd probably prefer it over the new Tor Launcher, since it probably will be even harder to decouple from the web browser.
That's great to know! Let's hope tor-launcher will work great everywhere, Debian, Whonix, Tails and whoever else may be interested in using it.
Any way, I also see potential for future collaboration between Whonix and Tails for extending the usefulness of anon-connection-wizard beyond what Tor Launcher (and its replacement) offers [2]; anon-connection-wizard targets the OS, not just a single application, so it could integrate the choices of network configuration (wired? which wireless network? MAC spoofing?) and Tor configuration (proxy? pluggable transport?) in a single place which probably makes more sense for users and also allows us to more easily (optionally) save these settings so they are restored the next time you visit the same network. This could potentially even be used to help giving users control over entry node selection to avoid persistent Entry Guards from leaking information about you geographical movement. [3]
Tor proxy configuration yes. Tor pluggable configuration, by all means yes, that will is the core feature of anon-connection-wizard.
Other Tor settings, perhaps. Depends on the settings. We'd need to discuss them.
My current impression of iry is that anon-connection-wizard development will go on after this gsoc.
anonym, did you have in mind combining anon-connection-wizard with the revamped Tails greeter? (Some links, you might have better ones. [1] [2])
Perhaps that could be done by leaving some "holes" in anon-connection-wizard? I mean, perhaps it's gui wizard pages could allow having additional pages before and after the actual Tor connection wizard pages? That way you could flexibly integrate it in Tails somehow?
(Definition of "page" in anon-connection-wizard context: This is a page [1]. This is another page [2].)
Let's leave all of that post gsoc future work. I am concerned to overextend this the anon-connection-wizard project. A tor-launcher python clone ending up in packages.debian.org would be an awesome improvement, even if it does not solve all issues such as mac changing.
For mac changing a lot more work would be required. For start, a working cli implementation (covering all that Tails does) that get be installed on a regular Debian system from packages.debian.org.) Then perhaps anon-connection-wizard could morph into a bigger project and provide a gui for that as well.
At the moment the anon-connection-wizard gsoc proposal is well defined in scope. A Tor connection wizard that creates the proper /etc/tor/torrc configuration and reloads Tor that implements the most recent usability research suggestions.
Initially it won't be solving all the anonymity usability issues. It won't feature a handy permanently Tor controller systray that always communicates the state of Tor. Perhaps that could be covered in future work.
Cheers, Patrick
[1] https://tails.boum.org/news/test_redesigned_Tails_Greeter/index.en.html [2] https://tails.boum.org/blueprint/greeter_revamp_UI/design_rationale_phase1/
[3] https://phabricator.whonix.org/file/data/pc42disjlcwt5di63jfw/PHID-FILE-2xp6... [4] https://www.whonix.org/blog/wp-content/uploads/2015/12/bridges-conf1-450x335...