Starting Open Source Fall 2021
This week I've begun teaching my introductory open source course again. Throughout the week I've been meeting the new students on Slack, and getting to know a bit more about them via their blogs. I thought I'd write about some of what I learned.
Many students have told me that "this is my first blog in my life," and despite the claim that "I'm not a person that likes writing," I've read some really excellent posts. People tend to dismiss the parts of their own lives that others find interesting, and focus on what they aren't good at instead of celebrating all the things they can do.
I asked the students to write about why they took the course, and a few common themes emerged:
excited to meet and connect with new people from all over the open-source community
First, improve my programming skill; second, master the Git and GitHub; third, connect with project developers.
chance to step out of my comfort zone and learn the "unknown" by myself
I'm just stoked to get to work on a project of my own choosing and use what I've learned thus far to do something exciting to me personally
I'm thankful for all the free access to learning materials and tools. Paying it forward, I have always wanted to give back to the community
Another common idea running through a lot of the posts was the fear of not being good enough, and worse, being exposed as such:
I'm still worried if I can do it
I'm completely out of my comfort zone and I feel like I literally know nothing while everyone else knows everything, but that is why I want to take this course.
I generally struggle to come out of my comfort zone
overwhelming to dive into million lines of code
I'm really impressed that so many people are willing to admit this. I can't imagine not feeling this way as you stand on the edge of GitHub for the first time and look out over a sea of projects, languages, tool chains, and more experienced people. It's easy to feel like you're the only person who feels this way, that you're the only one not equipped to take part:
Just thinking about having to expose my poorly written code to millions of people across the globe and even write about it is enough to make me shut down my computer and call it a day.
The truth is, all of these students can (and will!) do it, and the open source world is much more welcoming than it might seem. Hidden in those millions of projects, and billions of lines of code are so many opportunities to explore, learn, and grow. There are also so many great people to meet along the way:
[open source contributors] are helping and collaborate with each other to develop the same goal. That part really attracted me to participate in Open source.
I was also interested to read about the students' different goals, favourite technologies, and interests. I kept a list of some of what I read (I've also linked to various things on GitHub to help show some pathways forward):
- Ethereum, Blockchain, Cryptocurrency
- Front-end Web Tech: JavaScript, TypeScript, React, Svelte, Vue, Next.js, TailwindCSS, Cypress
- Backen-end Web Tech: node.js, C# and .NET, Java, Firebase, MongoDB
- Gaming: mobile games, MMORPG, streaming and Twitch, emulators
- New languages and technology to learn: Flutter, Rust, Ruby, Assembly, Go, Python
- AI
- Digital art, including drawing and electronic music production
- Automated testing
I was also excited to read some very specific goals:
- Contribute to Uber's code (one of our students has done it in the past!)
- Work with Canada’s open Environmental Engineering and Meteorological services
- contribute to work on influential brands' online store such as Nike, Adidas (did you know they are both active on GitHub with more than 90 open source repositories: https://github.com/Nike-Inc and https://github.com/adidas)?
- build VST plugins for digital music production
Other students expressed the desire to move beyond "academic things" and progress into "real work skills." I read many hoping to "gain experience working on real projects," "become more comfortable working with other people on teams," and hopefully get more experience to "get a good co-op."
Being unsure how to get started was another big topic:
back when I first try to contribute to open source program, I was overwhelmed with the hundreds of files and lines of codes. I did not know where to start or how to contribute
I tried contributing to open-source projects in the past but since I didn’t know where to start, it felt very overwhelming.
I had a great conversation with Suhhee Kim last night about how to find a good open source project. Suhhee has experience creating educational web sites in Korea, and wanted to continue doing web development, but also learn something new. It can be hard to begin from something as general as "I like JS" or "I want to work on websites," since there are too many options, and it's hard to choose. Narrowing things down a bit by adding some personal details helps us zero in on good first contributions. For example, one of the largest open source projects in the world, Kubernetes, needs help fixing their Korean web documentation. This work would be beyond impossible for me, but potentially a good fit for Suhhee. Working on documentation, fixing typos, adding tests, etc. are all a wonderful way to join a big project, but do so in a small way. Contributions of all shapes and sizes matter. Open source is all about recognizing the power of small things adding up.
I'm eager to follow the work of the students this term, and see which new and exciting projects they'll discover in a few weeks when we start Hacktoberfest.