Hi all, I am Akash Mishra, an undergraduate from India and if given an opportunity, I would love to participate in GSOC with the TOR project.
This will be my first time contributing to an open source project.
I have been using python for all my college projects for over a year. Due to my familiarity with python, I would like to work on txtorcon - Convert txtorcon to txaio - during the summers. The requirements state that I should be very familiar with asynchronous programming and with one of twisted or asyncio. I have only basic familiarity with asyncio - having explored it once after watching a pycon talk on it. But I am very enthusiastic to learn and bridge the skillgap that will be needed to complete the project. I have already started with the krondo tutorials on twisted to gain familiarity with the twisted framework.
How should i get started with txtorcon project ? Are there any minor issues that i can work on as of now ?
Thanks, Akash Mishra
Hi Akash,
Thanks for your interest!
How should i get started with txtorcon project ? Are there any minor issues that i can work on as of now ?
Probably the best way to get a feel for what would have to happen to support txaio (and thus asyncio) would be to take some method that currently uses @inlineCallbacks and convert it to "just" callbacks + Deferreds -- as txaio doesn't provide support for @inlineCallbacks / @coroutine
As for "txtorcon tickets to work on", have a look on GitHub. One good one might be https://github.com/meejah/txtorcon/issues/132 (if it's still relevant?) as obviously Python3 support would be interesting for anyone wanting to use asyncio.
Cheers, meejah
Hi meejah,
Probably the best way to get a feel for what would have to happen to support txaio (and thus asyncio) would be to take some method that currently uses @inlineCallbacks and convert it to "just" callbacks + Deferreds -- as txaio doesn't provide support for @inlineCallbacks / @coroutine
I am still working on this.
As for "txtorcon tickets to work on", have a look on GitHub. One good one might be https://github.com/meejah/txtorcon/issues/132 (if it's still relevant?) as obviously Python3 support would be interesting for anyone wanting to use asyncio.
I ran all the tests in python3 and generated two new tickets which seemed relevant. However, I am consistently encountering 4 more errors related to twisted and zope. I have attached the terminal output with appropriate details. Would you be able take a look at it and let me know what am i doing wrong?
Also, i have started working on the application. As i understand, my tasks are to: 1. Read through the control-spec. 2. convert txtocon's @inlinecallbacks to callbacks + deferreds. 3. improve python3 support for txtorcon. (fix txsocksx preferably, try reducing magic in API) 4. replace deferred with txaio's calls. 5. Improve documentation to reflect the changes.
Am i missing something here? If yes, What else should i include ? And what might be the mid-term deliverable expected ?
Thanks, Akash
Akash Mishra akashm14@gmail.com writes:
I ran all the tests in python3 and generated two new tickets which seemed relevant.
Great, thanks!
However, I am consistently encountering 4 more errors related to twisted and zope. I have attached the terminal output with appropriate details. Would you be able take a look at it and let me know what am i doing wrong?
I will take a look. Twisted's Python3 support isn't 100% yet, but I don't believe txtorcon needs anything that isn't ported...
Am i missing something here? If yes, What else should i include ? And what might be the mid-term deliverable expected ?
Coming up with a task list and schedule would be a good thing to include in your GSoC application -- they are due by no later than March 25th! The tasks you've included are certainly relevant, but including more detail than that would probably be a good idea.
I do not know how many slots Tor has for GSoC 2016...
Cheers, meejah
Hi meejah,
Coming up with a task list and schedule would be a good thing to include in your GSoC application -- they are due by no later than March 25th! The tasks you've included are certainly relevant, but including more detail than that would probably be a good idea.
With reference to ticket #162 I have been looking around for a quality Twisted SOCKS library. And my search so far has yielded nothing.
Would it be worthwhile to add this as a task for GSoC? -clientside support for python 3 by fixing txsocksx.
Tasks and schedule (Expected time):
1. Understand the codebase (Community Bonding period): 1.1 The control-spec. 1.2 Understand how txtorcon currently implements it. Why some design decisions were taken.
**** End term exams : 25th May - 3rd June ****
2. Convert inline callbacks to deferred ones ( 6th June - 20th June): 2.1 txtorcon.torcontrolprotocol 2.2 txtorcon.torconfig 2.3 txtorcon.endpoint #Asycnio has no such thing as endpoints. see https://github.com/python/asyncio/issues/97 2.4 txtorcon.torstate 2.5 txtorcon.util Iteratively convert each method in a file and make sure that txtorcon builds.
However, I would in a much better position to gauge the time after i have understood inline callbacks properly.
3. Python3 compatible ( 21st June - 4th July): Continue work on the python3 branch(isis-py3k). Tickets to close : #132(https://github.com/meejah/txtorcon/issues/132) , #165(https://github.com/meejah/txtorcon/issues/165). 4. Convert deferred's to txaio ( 5th July - 25th July): Decide on how to give users the choice between twisted and asyncio and do it. Apart from the files listed above, txtorcon.torinfo has deferred calls.
5. Improve documentation to reflect changes ( 26th July - 5th August):
4.1 Update readme, documentation, examples. 4.2 Write an updated WalkThrough.
6. Start writing tests (5th August onwards) or Work on other tickets. Think and try out ways to reduce magic in API's.
Have I missed out on any relevant task/sub-task?
Waiting for your feedback. :)
Thanks, Akash
Hmm, it looks like I haven't actually merged the "python3" branch into master which is why a bunch of this looks like I changed it already I guess ;)
So, see the branch "python3" for fixes to several of the issues you pointed to. However, there still seem to be some remaining Python3 problems. Also, txsocksx doesn't support Python3, but making that optional is possible (althought then of course no client-side connection support).
On Monday 21 March 2016 08:31 AM, meejah wrote:
Hmm, it looks like I haven't actually merged the "python3" branch into master which is why a bunch of this looks like I changed it already I guess ;)
So, see the branch "python3" for fixes to several of the issues you pointed to. However, there still seem to be some remaining Python3 problems. Also, txsocksx doesn't support Python3, but making that optional is possible (althought then of course no client-side connection support).
Thank you for taking a look at it.
I switched to the python3 branch.
Also, I submitted a minor PR for the same branch. But the travis build failed for it. Upon checking on the details, I saw that it used python 2.7. However, that shouldn't have made any difference to the tests since the PR was for compatibility on both the python versions. Is there something I overlooked while making the changes ?
Thanks, Akash
Akash Mishra akashm14@gmail.com writes:
Also, I submitted a minor PR for the same branch. But the travis build failed for it. Upon checking on the details, I saw that it used python 2.7. However, that shouldn't have made any difference to the tests since the PR was for compatibility on both the python versions. Is there something I overlooked while making the changes ?
I'll comment on the PR iteself, but yes Travis doesn't run a Python3 configuration; you'd have to use "tox" to run one locally.
p.s. I don't see any submission from you on https://summerofcode.withgoogle.com what you posted earlier is a good start, but please follow the template -- and I think it would be best if we could provide feedback on the GSoC site itself.