Open Source Contribution - Release 0.2.3

Contributing to C_plus_plus_Algos (Part 2)

Image result for algorithms picture

C_plus_plus_Algos is a recently created project on Github (targeting Hacktoberfest) that attempts to accumulate code examples for different algorithms and problems in C++. So far the project has done a great job of accumulating different types of sorts in C++ (linear, merge, radix, bubble... sorts). 

However, after contributing the Knapsack problem and its solution in C++ to this project in my previous contribution, I noticed that the structure of the project is very scattered and lacks organization. This is when I thought that it will be beneficial for the project to refactor the repository and create an organized directory structure, have a uniform naming convention for files, and provide instructions for new contributors.

Hacktoberfest 2018

This year I am participating in Hacktoberfest. Throughout the month of October, I will need to make 5 pull requests with contributions to one or more projects on Github. This is my third contribution to Hacktoberfest and I came across C_plus_plus_Algos project on Github in my previous contribution. I thought that it would be a good experience for me to get involved in one of the earliest stages of a project in order to help them develop throughout the rest of the year. 

For my third contribution of Hacktoberfest, I've filed an issue to refactor the structure of the C_plus_plus_Algos. Once this issue has been approved by the creator of the project, I began improving the structure and organization of C_plus_plus_Algos.

Throughout this Hacktoberfest I'm trying to find different ways to contribute to the open-source community. I've already explored non-code contributions and how they can be useful. I also explored contributing to start up project. For the fourth and fifth pull requests I will try to explore ways to contribute to bigger, more sophisticated coding project. This will allow me to experience the difficulties of contributing to big projects and talk about these challenges.


My Contribution

From the images below you'll be able to see the lack in organization of the C_plus_plus_Algos repository and the lack of naming conventions for the files.



In order to improve the organization, I've moved everything into one directory called Collection_of_Algorithms, leaving only the README.md and List_of_Contributors.md in the parent directory of the project. Within the Collections_of_Algorithms directory, I grouped and organized all files in subfolders that are specific to certain types of algorithms and problems. Furthermore, I renamed all the files to follow an agreed upon naming convention. The following changes can be viewed from the images below.




In addition to refactoring the repository, I thought that it was very important to create a file that would guide new contributors on how to contribute to the project and inform them of the naming conventions that they should follow. So I added a CONTRIBUTING.md with the following contents:


This contribution gave me additional experience with refactoring a repository and allowed me to create my first file that includes instructions for open-source contributors. In addition, this contribution was very beneficial to the C_plus_plus_Algorithms project, allowing it to look like an organized professional project that is easy to navigate through.

Link to the issue:

Link to the pull request:


List of things that I contributed to C_plus_plus_Algos:
  • Changed the folder structure to organize all existing algorithms and problems into folders
  • Renamed all files to match new naming convention (ex. MergeSort.cpp)
  • Created CONTRIBUTING.md to specify how newcomers can contribute

Conclusion


It feels nice to start contributing to a project that is in beginning stages because it feels like your contribution is more impactful than contributing to a massive 10 year old project with thousands of contributors. Furthermore, a great way to help your community and the people in your field is contributing to a project that once it's developed would be a helpful tool to programmers worldwide.

Comments

Popular posts from this blog

First Enhancement in Pandas

Working with Incomplete MultiIndex keys in Pandas

Progress in Open Source