I got to know about Open Source and community efforts during my first PyDelhi meetup close to a couple of years ago. And my journey began right from there. So in order to understand my preparation for GSoC, everything that has impacted me over the last couple of years is important. Here in this blog, I share what I learned to be able to work for the idea posted by Debian and submitting proposal afterward.
PyDelhi - The Beginning
After starting with Python I came across the community named PyDelhi which promotes Python programming language by organizing meetups and conferences. It is entirely volunteer-run and I also became active after attending my first ever meetup. One of the best Python books I was recommended by few folks was Python for You and Me by Kushal Das. I met folks who were working on cool projects using Python and I created one myself for PyDelhi named PyDelhi Bot to serve Telegram Volunteer Group. Later, I went on to give a talk during PyDelhi Conference 2017 which landed on YouTube and I have been a volunteer, speaker, contributor and co-organizer for PyDelhi ever since. I volunteered for PyCon India 2016, was in Core Organizing team for 2017 and volunteering for 2018 as well. My love for Python grew from PyDelhi and it became my primary programming language. Soon, I met various communities promoting Open Source software and methodologies and volunteered for them as well.
Durgapur Linux User Group - Summer Training
After looking more into Kushal Das' blog, I got to know about DGPLUG. DGPLUG organizes one of the best summer training which I was blessed to be a part of in 2016 and later in 2017 (to fill knowledge gaps). Training was carried on IRC which is always better so that folks with not-so-good internet reception can also benefit. The training started assuming everyone should learn from Zero and teaches all the basics following the objectives which a developer should know in order to write code and contribute to open source in the best way possible. Guest sessions were one of the important sessions in which we got to interact with community veterans and industry leaders. Guests shared their experiences with the technologies they were working on and we can ask them questions if we had any doubt regarding it. The entire session was recorded and the logs were uploaded for someone who couldn't be online.
During the training, some important things which I learned were by the Shakti Kanan sessions as follows
Communication Guidelines - I got to know about various communication platforms like IRC and Mailing Lists and what are the advantages and disadvantages of each of them has. It was important to learn when should be using those and how. Logs to session in which it was discussed.
Mailing List Etiquette - In this session, I got to learn what are the suggested ways in which we should be using Mailing Lists and proper format to draft mails. Logs to session in which it was discussed.
I Want To Do Project, Tell Me What To Do - Another important session to teach what are the ways in which we should start working on a project of our own or contribute to upstream projects. This tells us the importance of a mentor and how we can find one for ourselves. Logs to session in which it was discussed.
This was a fresh start for me in the path of becoming a good developer. This opened a lot of new ways to interact and collaborate with Open Source communities around the world. (If above links to presentation doesn't work use these - Communication Guidelines, Mailing List Etiquette and I Want To Do Project, Tell Me What To Do)
Google Summer of Code - Before The Proposal
Google Summer of Code has been an exciting opportunity for the folks willing to contribute to upstream Open Source projects and being my first and last (I graduate this year) time participating, I'm willing to work with the best I've got and learn along the way. Starting from reaching out to different organizations and probing through the idealist. It's important here to look into the idea in the domain of technologies one is working with. This way it's easier to complete application tasks before, and complete the objectives with good quality code during the internship period.
Since this was my first time, I decided to go through the Student Guide for GSoC and follow the prerequisites needed order to participate. After signing up and submitting my Proof of Enrollement, one is free to focus on finding a suitable organization, reading through the idealist and working to complete application tasks given by the mentors.
Debian - The Spark
The time GSoC idea list went live I was learning about Web Extensions and coincidently Debian had 2 projects who's end goal was to create Browser Extensions. So I got excited about them and started with Debian's Create a successor to the Telify plugin using WebExtensions. Because of not being able to find a mentor who could help me guide through legacy Telify code I was sure I will not able to complete application task in time. So I pivoted, and there it was, Wizard/GUI helping students/interns apply and get started.
My mind exploded with the ideas and the possibilities of feature set which can be incorporated into this project. 'Open Source Buddy' came to my mind while naming the application for the task and I began with the UI design using Inkscape which I was going to code eventually. I'll be writing a blog soon focusing entirely on the application task I created with all the technical details as well. One can find the source code with a demo video for the same on Salsa. The project idea was to create a GUI application which can help students or interns get started with their Open Source contributions. The application will guide through the tools of the trade like Git, Github, GnuPG etc and explain the importance of communication via IRC, Mailing List etc. I planned to use PyQt as suggested on the idea description to begin with the application task. More on this later.
After selecting the project and being absolutely sure that I'll work with the best I've got for this project in the internship I began probing more about the organization on how to do things the right way. I came across Daniel Pocock's blog (who is also my mentor for this project) on Want to be selected for Google Summer of Code 2016? mentioned in the description of the project idea I selected, shaped my views in order to understand the project better. Reading more about Debian and how to join the Debian community from a dedicated Debian GSoC page, I did following things
Mailing List - I joined Debian Outreach which was a dedicated list for discussion of Debian's participation in internship-like programs, such as Outreachy, Google Summer of Code, etc.
IRC - In order to join Debian channels on IRC, I configured OFTC on ZNC which I was already using for Freenode (#pydelhi, #dgplug, #pyconindia, #python-gsoc) and Mozilla (#introduction, #development). This way I don't lose any of the messages when I'm not online and can connect with ZNC using any of the clients on Laptop or Mobile.
Wiki - I signed up for Debian Wiki account and was blacklisted because my email address included
.xyzdomain. Thanks to Steve McIntyre and Paul Wise from the Wiki Admin Team for helping me out. I finally created my account and afterward, I created my own wiki page.
The Proposal Deadline
March 27, 2018 - 21:30 (IST) was the deadline for proposal submission. Proposal showcases what a participant understands the project idea and can elaborate on how they plan to create it. It also showcases more about participant's past work and experiences mostly related to the same technology they'll be using. Student Guide contains few general guidelines which tells about important points that should be included in the proposal. Apart from these, it's always a good idea to talk with mentors what they think should be included in the proposal. I took my time (close to 2 days) in order to research and come up with the best feature set and methodologies which can be used to make an amazing project. After the review process, here's the Final Proposal which I submitted.
I plan on integrating the Open Source Buddy with pylint, pytest and working more on GUI and PyQT so that if I'm selected for the project, using the tools of trade would be easy and I can focus more on the features. This was my experience till the project submission in brief. I'm planning to continue this GSoC blog series in order to share all that I learn along the way. Next up, a blog explaining how I completed application task - Open Source Buddy.