Wednesday 29 June 2016

PYCON 2016, PORTLAND.


Yes, that's right! I attended the PyCon at Portland, Oregon as a member of the GNU Mailman group.

This was my first PyCon, and was one of the best things that happened in GSoC. This PyCon is the largest annual gathering of all the pythonistas around the world :D
Attending the PyCon was a very good learning experience. I got to meet people from all corners of the python open source community and made a few new friends too. I also got the opportunity to meet the entire Mailman group at the PyCon who didn't let me feel like a new member though I'd only communicated through mails with them before. 

I was a bit nervous to meet Stephen for the first time! After all he was my main mentor ;)
But then Stephen turned out to be the coolest mentor I could've had. We got the opportunity to discuss the GSoC project at length and decide upon a new plan of work. Before attending the PyCon I had done a major part of the project work already as I had started working in the community bonding period. But then after the discussion we had, it was decided that the project design had to be changed since the implementation I'd developed was inefficient when it came to code duplicacy. ( I wonder why I couldn't think of it before ) 
The new project would involve refactoring the existing `dkimpy` package to add ARC support to it, and create a separate ARC module for usage in Mailman which used the refactored package.
One of the biggest upsides to this was that we'd be able to contribute back upstream to the original `dkimpy` package with the added ARC features. Also the process had to be so, that it involved minimum API changes thus making the upstream changes easy. 
The discussion not only greatly helped in clearly setting the project's workflow but also gave me a lot of insight into spf, dkim, trust boundaries, MTAs and other concepts involved in mail transfer, i.e. Stephen's practical knowledge.

Other than that I made a few new friends at the PyCon. Kushal Das from Red Hat, Arc Riley from PSF, Dan Callahan from Firefox in addition to the Mailman group, who were great company. I hope I get to seem them more.

The thing that interested me the most was how friendly the atmosphere was. It was "open" in literally all senses. We were free to approach anyone during the sprints and ask them about their work, and, if interested, sit right there and start hacking on it. Right next to the project owners! Everyone was really open to conversations and helpful to their best.
During the last 4 days at the PyCon the sprints were held. In sprints you are allowed to work on any python project of your interest among the ones sprinting. So there were many orgs like Mailman, CPython, django, Fedora, Firefox and many more at the sprints and you were free to work with any of them. I worked on Mailman during the sprints with the rest of the group for the next Mailman 3.1 release. It didn't come through due to some reasons but it'll soon :)

For all this I have to thank Stephen and Barry, who took utmost efforts in securing the funding for me to travel to the United States. It wouldn't have been possible without them, and their friends at DMARC who agreed to fund my conference trip. 

Aside from the technical details, the stay at Portland was really enjoyable. I was in time to see the Portland Roots festival which is a food justice movement consisting of a plethora of food vendors offering a view of variety of food cultures. I also visited the Portland Food Trucks which was any eater's joy. You could literally find food trucks for any type of food from any part of the world there. Such was the wide assortment. 
There were a lot of other things but they would probably suit a travel blog more :P

All in all, the experience was truly a great one and I am sure I will try to attend the PyCon in Portland next year too :)

Thanks for reading.

Aditya

Friday 24 June 2016

Week 2


Hi! Thanks to all who went over my previous post.

So the coding period has started and we are two weeks into the schedule. 

The code I had developed till now was designed such that each individual module of the ARC set used its own set of signing and verifying functions. That is, heavy code duplication since the basic underlying process remains the same.
I was actually ahead of the milestones and ended up writing (or refactoring!) a huge chunk of the code, i.e. including the AAR, AMS and AS signing and verifying! Basically the code worked, but was highly inefficient.

So after a long discussion with Stephen, we decided to give the entire project a makeover.
Stephen suggested that instead of developing code with a local objective that would work for us, why not go ahead and refactor the `dkimpy` package such that we could contribute the new code upstream and make it available to other users too. The `dkimpy` package could be refactored to provide ARC capability in addition to DKIM using the same API with minimum possible changes. We could then contribute this back upstream and do our good bit!

The new project would consist of two separate modules - 

1. The refactored dkimpy module with ARC support.
   https://gitlab.com/adityadivekar/sign-message

2. The ARC module consisting of code to take the email from Mailman, and return the ARC signed email. 
   https://gitlab.com/adityadivekar/arc

For now I will start working on the refactoring then, and get back with the next two weeks' updates soon.

Thanks for reading!