GSoC ’17 : Community Bonding period wrap-up

Note: This is a repost of the original Blog post during GSoC ’17. As my AWS instance went down, I’ve been migrating my old blog posts here.
Originally posted on: 31st May 2017

Earlier this month the selected projects for the Google Summer of Code 2017 were announced and, Yes! My project proposal was selected. The project I will be working on is “Client side cryptography for files to implement a zero knowledge system” An abstract for the project can be found here and the proposal for the project can be found here.

Today marks the end of the community bonding period and the beginning of the coding period of Google Summer of Code! (Yay! The fun part is here!) Also, I haven’t written a blog post about my project yet, although there is quite a lot of data about my project on my proposal.

Throughout the last 25 days since the selected projects were announced, I’ve been actively involved with reading a lot of documentation, learning some new things and discussing things with my mentor. Also, in the last few weeks I’ve made a lot of new friends and have been networking with a lot of other GSoC students from different organisations.

I’ve had regular meetings with my mentor, [Colan] over voice calls, also [adam] and [talha] joined in with us to unofficially mentor me. It’s going to be really amazing working with all of their help given their experience and expertise. I’m privileged to have all the great minds working on helping with the project.

A little bit more on what I’ve been working on these past few weeks:

Development environment and code management: Towards the beginning of the month, Colan recommended that we could use GitLab initially for the development phase as Gitlab has it’s own automatic integrated Continuous Integration (CI) and Continuous Deployment(CD) pipelines. I’ve setup the gitlab repository here
I’ll be writing the code locally in phpStorm and apart from local phpUnit tests, I will be running tests using GitLab’s integrated CI pipelines on their runners.

I will also keep an auto-deploy pipeline to my VPS at for a live preview of the current state of the module.

Architecture of the Module and the weekly meetings: The three meetings so far have been mostly about making some decisions about the architecture of the module and also about reporting what I had accomplished in the previous week and proposing, suggesting what I should dig into before the next meeting.

In the later weeks, I started drafting the Architecture Document for my module, got a few reviews and made a few iterations over it.

Digging into the documentation: Apart from working on the architecture document, I’ve been reading more and more Drupal core API documentation and researching a bit more into more javascript crypto libraries.

In the latest meeting, Colan introduced me to this really awesome command line tool called “Drupal Console”, Installing it was a bit tricky but after I installed it I found it to be a pretty useful tool to generate module skeletons, create controllers and doing a lot of other things in a snap. So I also spent some time learning more about the Drupal Console.

The timeline of the project: Colan said that the timeline in my proposal would be good to go with and it was also quite detailed, so I didn’t have to work much there, although I’m maintaining [this separate doc] for the timeline and updating it as and when the tasks are being completed.

Writing my first test and CI pipeline: In the second week, I started learning about PHPUnit and writing tests and I wrote my first phpUnit test. I later also wrote my first CI pipeline on GitLab using a .gitlab-ci.yml file. The amazing part was to see how GitLab ci works, the moment I committed and pushed the code, It automatically runs all the pipelines on their runners. [pics]

Now that the more exciting and challenging part has begun, I can’t wait to get started bringing this project to life what I’ve only been imagining so far.

This week onwards, I will be posting regular weekly blog posts on the updates on further progress on this project here. Thanks for reading! :D