Making Newbie Friendly Open Source
Tags: hacktoberfest, python, opensource, codenewbie
Published: 2020-11-14 19:24:07

Jump To
 - [Hacktoberfest 2019](#hack19)
 - [Post - Hacktoberfest 2019](#Post-Hack19)
 - [Hacktoberfest 2020](#Hack20)
 - [tl;dr](#tldr)

---
## Hacktoberfest 2019 <a name="hack19"></a>
As Hacktoberfest 2019 approached, I wasn't convinced I had anything to contribute. For real, what was a code newbie going to add to the world of open source?

![striped cat giving skeptical look. text says "Skeptical Cat is skeptical"](https://i.chzbgr.com/full/2922903040/h92CC69F6/skeptical-cat-is-skeptical)

Anyway, I was determined to make some sort of worthwhile contribution. I dug through all the sites like firsttimersonly, upforgrabs, and others. What I found was all these sites were not for beginners. Even if the issues were labeled `good for beginners` it didn't really mean that they were good for beginners. 

I have since come to realize, `good for beginners` is a label given when someone thinks a task should be easy. Yet, these are often tasks that are not really for beginners. As a code newbie, you're not just new to code but new to version control, editors, cli, and everything. 

It's really less important what your first contribution is and more important that you go through the motions and understand how to use version control. Though, I didn't know that at the time, so it was quite frustrating finding something to contribute.

Somehow, I came across this goofy translation site, [geeksay.xyz](geeksay.xyz). It was in a language I didn't (and still don't unless I have to) use. Contributing wasn't going to help the world or really anything. Even without the grandiose potential impact, I decided to add some little things to this site. It was set up well to be able to just follow the current syntax.

Doing these goofy contributions didn't feel awesome, but it did me my first ever pull request and helped me begin to understand the purpose of version control and how to use git.

While my first Hacktoberfest amounted to some goofiness, I did learn things. Version control is important and making contributions as a code newbie was way too hard.

---
## Post - Hacktoberfest 2019 <a name="Post-Hack19"></a>

As Hacktoberfest was winding down, I was also taking a night class at a local college and learning more things. I decided I was going to try to make my first project.

### A 'Simple' Retweet Bot

I was on Twitter and already saw there were retweet bots for all sorts of coding hashtags. So, I decided to make one for veterans. That's when \#VetsWhoCode Retweet Bot was born by mashing together some tutorials, Tweepy docs, and caffeine, 

This bot, at the time, was hard to make. I was still a newbie and had never worked with APIs or anything. Though it was hard at first, it's really a short program and rather "simple".
{% post https://dev.to/vickilanger/vetswhocode-retweet-bot-3j97 %}


### A More Complex Bot
Given that I had already made a bot, I decided I wanted to make another one, but make it something code newbies could contribute to. 

I was still learning to code as many others on twitter are. I had a fleeting idea and posted a twitter poll asking "A twitter bot that asks daily coding questions. Thoughts?" People liked the idea, so I made it.

I thought it would be cool to bring people together to learn from each other and meet new people. This bot was also hard to make. It was new to me. I hadn't previously done anything that complex. This time, I mashed together Tweepy docs, Python docs, caffeine, and ideas from another bot's repo until Code Questions Twitter Bot was born.

Once it was working, I started setting it up so it could be a community built thing. I built it with newbie contributors in mind. I left notes about syntax and comments making sure it was as easy as possible to add questions to the bot. Though all are welcome to contribute, the goal was to make things smooth for code newbies.

{% post https://dev.to/vickilanger/code-questions-bot-42io %}


### Help Others Contribute

After setting up that bot, I threw together a dev post on what how to contribute to open source as a newbie. (don't hate on me. it's basically a shameless plug with some useful info)

{% post https://dev.to/vickilanger/open-up-to-open-source-contributing-5hla %}

### Yet Another Twitter Bot
If you haven't previously seen [@BiUpdateBot](https://twitter.com/biupdatebot) or [@GenderOfTheDay](https://twitter.com/genderoftheday), my explanation of the newest installation in my portfolio may be a bit confusing.

Seeing those bots on Twitter really inspired me to make a bot that covered more than those bots do. I had thought about this a few times, but decided to do so in Septemember. I was doing it riiiiight before Hacktoberfest. I knew I wanted it to also be super newbie-friendly. So, building it contributor-friendly from the beginning was top-priority.

I set to work setting up a madlib style bot to make the standard tweets sent by the bot. Each file has detailed notes, reminders, and syntax. Every possible thing to work has a well thought out issue written up. (Not saying it's perfect, but I really really tried. I'm open to all input and ideas) I made sure to add a Code of Conduct and all the things that make a repo welcoming safe. 

Little did I know, this repo would get A LOT of attention. The scope of the bot grew some during Hacktoberfest 2020 too. It now has images, queer history of the day, and remembrance/awareness days.

---
## Hacktoberfest 2020 <a name="Hack20"></a>

As you can tell, I'd been preparing for Hacktoberfest 2020. Though, as a maintainer, I had no clue what to expect.

### Maintaining

Pull requests rolled in real quick.

{% twitter 1311444786096812033 %}

Like I said, I didn't know what to expect. I really never expected to have so many people contribute so much. There were so many people.

{% twitter 1313295927038431233 %}

I had to learn a lot real fast. I'd never seen merge conflicts before and had to figure out what was messed up with each one. A lot of the learning was in watching mistakes people made and adjusting my notes and issues to help alleviate these things.

I tried to get people to use the pull request template to help catch things, but a whole 2 people used them. Though, it wasn't all bad. 

In total, LGBTQ of the Day has 235 closed pull requests from 119 GitHub contributors. Code Questions Bot only has 30 closed pull requests from 18 GitHub contributors.

#### Some goofiness

Some people changed things that were on purpose. I later added them back with comments saying they were accepted as is.

{% twitter 1313288139079847946 %}

I had lots of fun explaining the importance of commas & quotes and why they are so important.

{% twitter 1320781593389240321 %}

I also had to deal with some not so fun stuff. Someone copied a whole game from a tutorial and submitted it and yeah, it got marked `invalid`.

{% twitter 1320781594706194434 %}

There was also a PR where I had to invoke part of the code of conduct. That wasn't fun to deal with, but there weren't any arguments.

There was some feel good stuff too. :D
{% twitter 1320784411571429382 %}


### Co-conspirators in Crime

There were so so many contributors, here are a 2 that really stood out.

@bobsany16 is the first official collaborator on the LGBTQ of the Day repo. They added the historical tweet feature as well as the linter checks.

@audthecodewitch made tons and tons of contributions and some suggestions the led to the newest feature on posting remembrance and awareness days.

Oh, and this adorableness helped merge some requests and made sure I took breaks.

{% twitter 1318698951822934022 %}

### Open Source Contributor Summit

During Hacktoberfest, I spoke at @bdougieyo's event about how contributing as a code newbie was too hard.

{% youtube tvjFHEEKOAA %}


## tl;dr <a name="tldr"></a>
Contributing to open source as a #CodeNewbie is too hard. Newbies are *just* learning code things and contributing to open source adds in having to figure out version control. The focus should be on learning version control and not substantial code things.

Newbies need incredibly easy contributions to allow them to get familiar with version control. That does **not** mean easy to you, that means so easy you'd give it to a non-coder who can follow direct rules.

---

Wanna contribute? There's plenty of open issues.

{% github https://github.com/VickiLanger/code-questions-bot no-readme %}
{% github https://github.com/VickiLanger/LGBTQ-of-the-day-bot no-readme %}