This week's task for my open source course was about working on a project other than mine, and the goal was to get better with some of GitHub features like: creating issues, forking, cloning and pull requests. So I asked one of my classmates who had written his text to html converter program in Python, if I could add markdown to html support to his project. After getting his approval, I forked his project and created an issue explaining what I was going to contribute.
- I went over the code base to understand the overall structure of the program so that I could make my contribution by making the least amount of changes to the original logic.
- After understanding the structure, I decided to add markdown support so that the program would accept .md files in addition to .txt files. After testing every scenario that I could think of I committed the changes to my branch.
- I decided to add Heading1(#) to <h1> feature for the markdown to HTML conversions. Again, after testing everything to make sure what I added worked and didn't change the existing functionalities I committed my code.
- I made changes to the documentation and sample examples to reflect the new feature added to the project and committed them.
- Created a detailed Pull Request reflecting the changes that I had made.
- Received feedback from the project owner and made some small modifications based on that.
- The project owner accepted the updated Pull Request and merged it to his project.
- This was a great opportunity to get some practice using Python, which is something that I wanted to get my hands on.
- I didn't know that a Pull Request can be linked to an issue in a GitHub repo, so that was interesting!
- I learned that I am more focused and put more care into working on someone else's project.
One thing that I will do different in future when contributing to someone else's project is to go over the planning stages of my contribution with them, if that is a possibility.
The only thing, which was not really a problem, was getting used to Python's syntax and learning about the tools that the language offers.
I received Pull Requests to my own project. The process and the communication was very smooth and similar to what I did, because it was from the owner of the project that I contributed to. We went over the changes after the initial Pull Request and I requested some adjustments in my feedback, which were made in the updated PR.