Sanket Kumar Gautam SKG
About     Archive     Feed    

Getting Started with Open Source Contributions

    6 mins read

For sometime, I have been exploring Open Source Communities, version control, guidelines in more depth & have been learning about how to start contributing.

For getting involved, I decided to participate in KWoC (Kharagpur Winter of Code). It’s a month long event conducted by KOSS, IIT Kharagpur, for making beginners to ramp-up with Open Source and also prepare for GSoc, SoKDE, Outreachy and similar other programs. It provides a platform for student to get mentored for their first contributions to Open Source Projects.

Constant Feedback & impact of our contribution to community, pushes the boundaries and helps students to learn. It’s has been lot of fun & learning while contributing to the Projects. I got to learn so many and met amazing people. It also helped me to brush-up coding skills & learn from others.

Initially, I explored projects available on KWoC projects. I selected the projects that interested me the most & joined their communication channels. Then, I discussed the tasks which I can work on, with potential mentors and fellow contributors. Here are the statistics regarding my contributions, according to KWoC Website, just for your information,

  • Number of Projects Contributed - 2
  • Total Number of Lines Added - 10953
  • Total Number of Lines Deleted - 652
  • Technologies Involved - NLP, Machine Learning, AI, Chrome Extensions, APIs, Jupyter Notebooks
  • Programming Languages Used - Python, Javascript
  • Markups & Styling - Markdown, JSON, HTML, CSS

I have contributed to the following Projects,

  • Anna-Assistant/Anna - Anna is an open source, personal digital assistant for google chrome. It can help you to perform various tasks, just by talking to it. It’s a browser extension also available for users on Chrome Web Store.

  • ML-Starter-Pack - This repository contains the collections of ML Starter projects. It also contains Implementation of Various ML Algorithms with examples, to help ML Beginners to quickly ramp-up with the domain.

Project 1: “Anna - The Personal Assistant”

This is my main project for KWoC. It’s a virtual Personal Assistant for Google Chrome. It helps to accomplish various tasks by just talking to the browser. And, all of that starts with just “Hey! Anna”.

It supports some amazing set of features to improve browsing experience, for example,

  • Reverse Image Search - It finds more info about a webpage, When you see something on the Internet and forgot what it is or wants to know what it is.

  • Screenshot - Allows user to screenshot the whole screen or part of the screen and save it as a image locally.

  • Calender - Allows user to set reminders and meetings via Google Calendar.

  • and lot of other awesome features mentioned here in Docs

In this project, I contributed few features, bug fixes, & improvements. Their descriptions are given below (alongwith links to PRs & issues).

Pull Requests

Issues Created

My Major contributions to Project Anna involved the development of following features & improvements.

  • Screenshot Feature - It extends the capability of Anna so that it can take screenshots of open browser tabs/windows and save them as images.

  • Reverse Search Feature - It allows Anna to answer queries like, “What is this?” or “What’s on the Page?”. It fetches more information about the content on current page.

  • Image Cropping Feature - It’s an enhancement feature to both screenshot & reverse feature, which allows users to crop the image before saving image and/or reverse search.

  • Anna Status Visualization - This feature is at the heart of Anna’s User experience, and improves the overall user UX by providing visual feedback about current status of Anna.

Apart from above mentioned features, I also contributed to Anna, by solving bugs, updating readme & index pages. I also suggested some features for Anna by opening issues (mentioned above). I was actively involved with Anna community and discussed various approaches to make Anna better.

By contributing to Anna, I got to learn & explore more about Browser Extensions. It helped me to brush-up my coding skills and learn good coding practices. I also learned some external APIs & libraries like file.io, Google Reverse Image Search, CropperJS, Chrome Extensions API etc.

Project 2: “Machine Leaning Starter Pack”

This project is collection of Machine Learning Projects & Algorithm Implementation, with demonstration to help absoulute beginners with Machine Learning. It serves as a foundation for getting started with machine learning for anyone who is interested.

My PR contains “ML Project Workflow “ Guide. I created this Jupter Notebook tutorial, while learning Machine Learning. I thought it’s worth to share this with other people, and “Machine Leaning Starter Pack” repo is a very good place for that.

Pull Requests

Many Students(Beginners) Face problems regarding how to start a Machine Learning Project, How all the pieces are coupled together to create a fully-functional ML Project.

This contribution involved the addition of a Jupyter Notebook which demonstrated basic steps required to build a successful ML project piece-by-piece by taking an example of a simple standard Housing Price Prediction Problem. It uses following Scientific Libraries - Scikit-Learn, NumPy & Pandas.

It describes and demonstrates the sequence of steps involved in making a ML project from start till the production launch. It also explores multiple options available at each step in the process.

It also provides some tips on best practices to be used, and also provide sufficient exposure of Python’s Scientific Libraries to Absolute Beginners.

Resource Used for this Task - Hands-On Machine Learning with Scikit-Learn and TensorFlow (Concepts, Tools, and Techniques to Build Intelligent Systems)

This project helped me to brush up my knowledge Machine Learning, Python Scientific Libraries & Project Basics. I also explored & explained several alternatives, which provided me better insights on various concepts.

Conclusion

I have had amazing experience contributing to open source projects. It helped me to write quality code by learning good practices and concepts.

It also provided me exposure to the astonishing world of Open Source Softwares. I explored amazing many other OSS communities. Learned several ways in which, I can contribute. I also met many amazing people, learned a lot from them & also helped some others fellow contributors when they were stuck.

It has been a very good mix of both learning and sharing knowledge, which results in development of a Good Quality Softwares. Now, I am all set to explore more & deep dive further and contribute my efforts to the OSS Community.

That’s all for today , Keep Coding!! Keep Learning!! Keep Exploring!! Good Bye :)