In my earlier blog Google Summer of Code 2018 - Blog 1 - From Preparations to Debian to Proposal, I shared few highlights from my life which inspired me to learn Python and taught me good programming practices in general. And how I got to know about Google Summer of Code program and completed my final proposal for Debian. In this blog, I'll share about the application task which was to be completed alongside the proposal.
Application Task - Introduction
I started with probing through GSoC 2016 organizations and their mailing lists, wikis and blogs to find out whether they are preparing for this year as well. For some of them, I was already aware as I have been contributing to upstream projects of these organizations on Github as well. Also, I was learning about Web Extensions while the process and also gave a talk for Mozilla in Aligarh Muslim University. So, I got interested when I saw that 2 of the project ideas from Debian lies in the domain of creating browser extensions. I chose to work on one of the ideas which needed me to create an extension which is not supported in newer browsers because of the lack of web extension support on their source code. I tried to wrap my head around the idea and because I could not find proper documentation on legacy code or a mentor in given time, I had to pivot to another idea.
This is when I saw Wizard/GUI helping students/interns apply and get started by mentor Daniel Pocock and because of my love for Python, I chose to work on this idea, preparing Proposal and Application Task. The idea was to provide all the tools of trade necessary for open source contribution with tutorial and references.
Application Task - Design
I thought of a rough roadmap of what I wanted to achieve through the application task both Graphical (on UI end) and Operational (on functional end). For the UI, I thought of providing a nice sidebar with options of changing through topics and main screen where the content would appear on the chosen topic. So I set out to create the design on Inkscape using Ubuntu Design Guidelines. Here's what I ended up with
In the above design, you can see sidebar containing menu on the left-hand side. I have placed the menu options based on their increasing difficulty of understanding. On the right-hand side, you can see the main screen currently showing content from the selected option on the left. Right now it is showcasing 'Communication' which can be a segment in which users will understand the importance of Mailing list and IRC. There can also be an option of subscribing to Mailing Lists or channels on IRC via the software itself.
In another design above, you can see a user is underway leaning how Command Line Interfaces work with UNIX commands. To make it more interactive, the user can be asked to perform certain tasks like running a command on the terminal and submitting output in order to proceed to next level.
Application Task - Implementation
In the project idea, Daniel mentioned the use of PyQt in order to work on the application task, so I did. PyQt5 was the latest of the stable version of PyQt which can be used and from the official documentation, it was said to be more 'Pythonic' than it's predecessor PyQt4. Also, I found a very good tutorial by Jan Bodnar on ZedCode which helped me understand the basics of PyQt5 API before I can take help from official documentation.
According to project idea, I had to implement any one of the features for which I choose to work with PGP keys. The user would be able to manage their PGP keys pairs i.e. creating, exporting, encrypting and decrypting messages using PGP keys. After I was done, this is what the application task, which I named "Open Source Buddy" can do
Daniel also suggested some of the FOSS tools and platform which we should be using for the development of the application. Following the guidelines, I used Salsa, which is a self-hosted GitLab on Debian server to host the application task. The entire source code with designs and demo video can be seen here.
This was just one of the functionalities and workflow which I proposed in my Final GSoC Proposal) to Debian.
GSoC 2018 - Results
As promised by GSoC on Twitter, results were announced on 23rd April 2018 at 9:30 IST (16:00 UTC). With marginally less breath and heartbeats I went on to the official website to checkout the results. And there it was!
My proposal got accepted for Debian, I for Google Summer of Code 2018 and the website confirmed it with my username and other details. I also received an official mail from Google regarding the same with other details regarding the program. I'm very excited about the journey and would be sharing what I learn and accomplish along the way. I would like to thank all the mentors who chose me for the responsibility of completing the project.