Orbot & Orfox


Abstract: I want to work on Orbot and Orfox this summer. Orbot is already well established but requires some UI changes to show more information about the tor connection. Orfox is a new idea, the aim is to implement a complete browser based on GeckoView which has been built by Mozilla. This would hopefully replace the current Orweb browser as the default browser that works with Orbot.

Additional info: https://docs.google.com/document/d/10LVr7131K8I...

Google Summer of Code Proposal: Orbot & Orfox.


Amogh Pradeep (amoghbl1),

Developer, Student

International Institute of Information Technology,



Email: amoghbl1@gmail.com

-> What project would you like to work on?

    I would like to work on the Orbot and Orfox projects.

    -- ORBOT

        -- Notification changes & UI changes.

            The current Orbot notification shows us a small amount of details, I want to expand this to show more details about the tor connection at hand. These details will also be displayed in the application.

            As discussed with my to be mentor n8fr8(Nathan Freitas), these are some of the changes that I would be introducing to the applications notification and general UI. Link: https://docs.google.com/document/d/1l0FYCo3lBRA7YKZuAuaJJUIn-xDbEbd8bk1AdpJWXS8/edit?usp=sharing

        -- Extra Settings.

            The current Proxy options that we have does not have an enabled / disabled button (for the proxy settings that the user enters), I would like to introduce this as it would be nice for people who use more than one network to easily switch between the networks.

    -- ORFOX

        The current Orweb browser that has been implemented is based on Android’s own WebView, the problem using a WebView is that it is very limited. In order to overcome these limitations, we plan on implementing a browser based on Mozilla’s GeckoView. The aim is to create a prototype as of now which can later be used to completely replace the current Orweb browser and hence provide the end user with more privacy and security. This interests me and I hope to able to build a prototype successfully as a part of the project and continue working on it to replace Orweb post GSoC.



    This year, GSoC is scheduled to be held from May 19th to August 18th. This is the basic time line that I wish to follow.



        -- Week 1

            Finishing the layout of the new notification which has already been implemented and deciding what extra information to be shown in the expanded notification. The design for the display of the new information can be decided and finalized during this time.

        -- Week 2 + Week 3

            Finish up with the new implementation of the notification and implement new layout of the notification, the one with the extra information and expanded view (discussed with mentor).This also includes the changes in the UI as discussed in the google doc that has been shared above.

        -- Week 4

            Implementing the extra settings and configurations that have been mentioned above.



        -- Week 5 + Week 6

            Implementation of the web browser based on GeckoView. This is going to main part of my second phase, and would take about two weeks to implement.

            Mock-up of the GeckoView application can be found at my repo on github at http://github.com/amoghbl1/Orfox . This mock-up contains code provided by my to-be mentor n8fr8 and also some modifications of mine.

        -- Week 7

            Catch up week.

        -- Week 8 + Week 9 + Week 10

            Implementing the settings for the browser. The Orweb browser has various settings which we would need to duplicate into this new browser.

        -- Week 11

            Testing the newly implemented browser for security leaks, and trying to implement solutions for them. Testing should not be a problem as I am familiar with wireshark and other tools like ettercap(used to initiate man in the middle attacks). This could also help in testing how the application would react when there is someone who is attacking the network.

        -- Week 12

            Catch up week.


    As it usually happens with software development, I may run into problems during implementation of the above mentioned ideas which may take longer than I expected, in such a case, I have kept two weeks (week 6 and week 12) as "catch up" weeks which are intended to let me catch up on unimplemented parts of the project.

-> Point us to a sample code something good and clean to demonstrate that you know what you're doing, ideally from an existing project.

I have worked on Orbot before and my contributions can be seen at:

    Patches that I have submitted-

        1) https://dev.guardianproject.info/issues/2046 (My first bug fix, which involved preventing the notification from freezing , which used to happen because the android system would kill the service. This has been added to the main repo but the commits are not in my name because of some patch problems, you can clarify this point with n8fr8)

        2) https://dev.guardianproject.info/issues/2827 (Implementing the new notification layout that I have been working on, this still needs to be added to the main repo, but I guess it will be done after I’m done with all the UI changes)

        3) https://dev.guardianproject.info/issues/3014 (Another bug that I am currently working on, the wizard has some problem with the workflow, should be done long before I start working on this project)

        4) http://github.com/amoghbl1 (My repository of Orbot and other projects of mine which I have made open source can be found here).

-> Tell us about your experiences in free software development environments. We especially want to hear examples of how you have collaborated with others rather than just working on a project by yourself.

I have worked on android for 3 years now but I had not contributed to any organization  till September last year, when I started working on Orbot. I have used Orbot for a long time now and hence I felt like contributing to this project.

Ever since I started working on Orbot, I have become very active on the guardian project channel on freenode, this has helped me get in contact with many of the developers there who work on android and hence has helped me gain experience. Being an active member of this community has also given me room to help people out in the little ways that I can. This entire experience has been wonderful, making me learn more and giving me the opportunity to help others whenever I can.

-> Will you be working full-time on the project for the summer, or will you have other commitments too (a second job, classes, etc)? If you won't be available full-time, please explain, and list timing if you know them for other major deadlines (e.g. exams). Having other activities isn't a deal-breaker, but we don't want to be surprised.

I will be working on this project full time as of now. College starts early August and hence only about three weeks of the project would overlap with college work, this will not be a problem as there isn’t much work in the first few weeks of college.

-> Will your project need more work and / or maintenance after the summer ends? What are the chances you will stick around and help out with that and other related projects?

I would love to stick around and help, I actually want to improve Orbot as much as I can and will look at other projects and see what I'm interested in.

-> What is your ideal approach to keeping everybody informed of your progress, problems, and questions over the course of the project? Said another way, how much of a "manager" will you need your mentor to be?

I am always available on IRC on both the tor channel and the guardian project channel, if I am offline for some reason, you could send me an email at any point of time and I will be sure to reply as soon as possible. I plan to keep in touch with my mentor as much as I can and will be reporting to him every time I am done with finishing things on my to-do list.

-> What school are you attending? What year are you, and what's your major/degree/focus? If you're part of a research group, which one?

I am currently attending International Institute of Information technology and am pursuing bachelors in Computer Science and Engineering. I am in my first year. As far as research goes, I was offered a research slot under one of the professors in my college but as I am in my first year, it is against college rules to do research this year so I will probably pursue it next year.

-> How can we contact you to ask you further questions?

My nick on Freenode and OFTC is amoghbl1, I stay online as much as I can. Failing which, you can always shoot me a mail at amoghbl1@gmail.com.

-> Are you applying to other projects for GSoC and, if so, what would be your preference if you're accepted to both?

No, I am not applying to other projects for GSoC.

-> Is there anything else that we should know that will make us like your project more?

Since I have been working on Orbot since October last year, I think that it would be easier for me to successfully complete my project as a part of GSoC this year.