Hacktoberfest: Dear Maintainers, 
Published: 2021-11-01 06:47:46

For my last contribution to Hacktoberfest, I found many repositories to contribute to. You'd think this is great, right? However, this was nothing short of stressful and overwhelming. 

For this blog, I thought I would focus more on the downfalls of open-source development. I intend to make maintainers more aware of why individuals aren't able to complete issues in repositories and at the same time provide red flags to contributors who are taking their time to search for repositories to contribute to. 


# 1. Environment setup
This one goes without saying. However, many repositories **did** have steps to running locally, and a list of the requirements. For example, this [repository](https://github.com/openbenches/openbenches.org) lists the environments to run the application locally. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eng7sueiyeu4pulmtxso.png)

Seems simple, right? I want you to take a moment now to Google [how to install php](https://www.google.com/search?q=how+to+install+php&oq=how+to+install+php&aqs=chrome..69i57j0i512l9.2568j0j7&sourceid=chrome&ie=UTF-8). After installing various applications, none with clear instructions I decided to ask a friend who had mentioned PHP to me last year. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iynrynxzrg0p8po59sg0.png)
 
After I found Xampp, the rest of the installation was very simple (... because they had good documentation). I ran the application and I found:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02xsauohgl3zg25uplwt.png)
I spent about 2 hours looking up what file was missing, only to contribute a [yet-to-be-solved-issue](https://github.com/openbenches/openbenches.org/issues/249#issuecomment-937514762). One which I already did the fix using dev tools to provide information. 

> **Recommendation:** Provide links to where to download software required for the repository. Sometimes a list of things you need is not enough. 


#2. Don't create a bug for an issue that has a working solution
Let's cut right to the chase on this one. I was excited to work on this issue, to be honest. I am still happy about the time I spent to see how the CLI was implemented. Here is the [issue](https://github.com/microsoft/appcenter-cli/issues/764#issuecomment-942443508) that I decided to pick up. A little awkward when I asked the wrong person for more details- but I received a lot of help to tackle the issue. Including the dreaded  **"Additionally, I'm not 100% sure we need these changes at all."**

Unfortunately, after much research, I realized the object type that is being used for `getBuildReportObject` was not of `AppCenterClient`, and the solution wasn't going to be so simple. As suggested, I will probably notify the maintainer of my findings, and they will file this as "not a bug"

> **Recommendation**: Keep issues updated. If you notice that something is working now, maybe note that there is a workaround.  


#3. As a maintainer... maintain.
I'm not sure what happened here with this [repository](https://github.com/MSTC-DA-IICT/REST-API-Node) at all. I understand sometimes it's difficult to maintain a repository, and I'm alright with that, but please **do not** merge PRs without testing the implementation or noting that full implementation of the issue was not done.

I was browsing other students' contributions in a desperate attempt to pick up a new repository for the deadline. I found this [issue](https://github.com/MSTC-DA-IICT/REST-API-Node/issues/41) which would be perfect since we've created APIs for most WEBXXX classes, and I created the one for my PRJ group. I saw the person assigned was not responsive so I volunteered myself. I should have seen this as a red flag because that issue was dependent on [this one](https://github.com/MSTC-DA-IICT/REST-API-Node/issues/35). I decided to overlook this and attempt my best to solve both. I could not get the database to run, so I asked the maintainer if they had the details for it, to which I was told: "If it doesn't work make a temporary DB by yourself using GUI or CLI."

![](https://media.giphy.com/media/RkzMtKbCKFUY3wYRMy/giphy.gif)


Unfortunately, I don't give up that easily. I wasn't going to create a DB though. I reached out to my friend Josh, who helped me use Docker to run the database. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8m4h41vkak3os6l9a0j.png)

Yay, it works and runs now! 
![](https://media.giphy.com/media/11sBLVxNs7v6WA/giphy.gif)

I successfully registered and logged in as a user, where I could see the menu. I decided to take a quick break and look at the codebase to understand what EJS was. I came back to the application to test adding an order. I noticed the Menu Item section was a textbox and thought it odd, if there's a database why is that not a pre-populated dropdown. Well, remember how I said it worked and runs now? 
![](https://media.giphy.com/media/eM1mWQMUFKsmSwitXs/giphy.gif)

Here's a list of all the implementation missing: 
1. [The show password tick doesn't work.](https://github.com/MSTC-DA-IICT/REST-API-Node/issues/64)  
2. There is no actual database connection for the menu items
3. There are unprotected links such as /menu
4. The form to add an order has no page navigation
5. When you add to an order, there's no place this is saved.
6. The navigation bar sometimes disappears(mine never actually appeared)
7. The menu items have pictures, but no information (database missing)
8. There's no way to view an order... which means;
9. There's no actual way to view a menu item... which means;
10. There's no way to add a comment to an order.

Number 1-7 are all bugs from previous implementations. Somehow PRs were merged with issues, regressions, or part implementations.

Number 8-10 were all features that required to be implemented to complete the comment page. 

There were a lot of hurdles to go over for this issue, and I realized this was going to be far out of my reach. I [fixed the database promise rejection though....](https://github.com/MSTC-DA-IICT/REST-API-Node/pull/63#event-5545516433)

> **Recommendation:** Approving a PR should hold higher standards for the future contributors to the repository. It was very obvious that at this point it was difficult to implement the features as there were a lot of things missing or wrong. A lot of other contributors also did not get back about the issue. 

#4. More interaction, the better.
I did eventually find a repository to contribute to, after desperately asking my professor. 
![](https://giphy.com/gifs/bbc-one-uk-uFiaMyDjtxoE6Q1gCU)
I had to use Docker again to run Telescope. This time I had no problem because I had a lot of help in slack with what should have been the way to run it. 

What I did run into problems with was my common ability to miscommunicate. I misunderstood the [issue](https://github.com/Seneca-CDOT/telescope/issues/2421), thinking we wanted to add the GitHub image to the post avatar. Unfortunately, this caused an overflow of guidance, which eventually made me realize, that I am not understanding this correctly.  
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mogkfcn14p7t6m6s32o9.png)
 
Once I realized we want avatars of all posts referenced, I felt this was going to be much more simple. I put the [PR](https://github.com/Seneca-CDOT/telescope/pull/2430) up, but before I committed I realized the local version was not working properly anymore. 

![](https://media.giphy.com/media/kfAPD1BmVeIf3OUIm2/giphy.gif)

I tried to run it using the Vercel hosting, but I realized the data on the backend does not include any links, so it would not show my changes. 

What we might need was to safeguard is a user has no links in a post so that we don't map undefined. 

> **Recommendation**: Having a more interactive repository and community is easier for contributors.

# Dear Contributors, 
Hacktoberfest was fun. I completed 4 PRs before the deadline since that small fix for the mongoose connection counted. 

Here are some tips if this is your first time contributing to open source: 
* Pick a language you know. Don't bother looking for something new, it's not exactly easy. 
* Start small, like the readme file I did.
* Don't just hop onto issues. Make sure they are there, but maybe try to set up the environment, and then explore the issue a bit further. 
* Pick something you are passionate about or lines with your values.
* Don't be afraid. 


Looking back, I wish I contributed more to my failing issues. Here are some things I could have done: 
1. Ask why I keep getting the error that the file is missing?
2. Adding a summary of my findings, to conclude it's not a bug.
3. Telling the maintainer the following features are missing x, y, z to complete my issue, and filing the issues for them.
4. Asking for clarification, to reach a conclusion that there was miscommunication.

 
You might not find a solution and you might not merge your PR, but if you don't try... you never actually contributed anything. 

**The effort is the contribution.**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1we6jzh3t8by7assdaog.png)