Day 0: Learning With Open Source
Our resident GitHub expert introduces a project she'll be working on and posting article on here at DZone. Read on to see what she's up to!
Join the DZone community and get the full member experience.Join For Free
My journey to discover how learning happens in open source.
Read any list of "the benefits of open source" and one of the first items you'll see is: Learning how to code.
I'll admit, I was skeptical at first. My first few browsing sessions on GitHub were befuddling. Everyone working on the projects seemed to have years of experience and possess titles like Sr. Software Architect and Inventor of Modern Software Engineering. Pfft... what meaningful contribution could a wannabe developer like me make to their projects?
I Was Doing it Wrong
One day, in a particularly brave moment, I jumped in. But, I didn't jump in and open a pull request or even open an issue with a bug. Instead, I jumped in with the goal to build something using only open source projects. In fact, I went all in and decided I was going to build a weather station with Arduino - open source software on open source hardware, what could possibly go wrong?
The open source community loves to help.
What I learned was that the open source community loves to help. They love to help people who are learning and they love creating resources to help you figure things out. They do it in the code, but they also do it in user docs, websites, and blogs. Eureka! I was off to the races.
It turns out I'm not alone. When people talk about learning to code with open source, what they don't tell you is that it is almost always a journey:
Step 1: Decide to build something with open source.
Step 2: Find an open source project that meets the need.
Step 3: Read the documentation.
Step 4: Build the thing.
Along the way, they had questions. This is where the magic happens, because the aforementioned people didn't quit or find a different tool. Instead, they took the critical next step of engaging with the open source community:
Step 5: Connect with the project community (for help, or to share what you are building).
Step 6: Dig in to issues and pull requests for answers.
Step 7: Open an issue to help others with the same question.
Step 8: Open a pull request to update documentation or contribute a helpful fix to the project.
Just Like the First Time, Again
My only regret in my weather station adventure is that I didn't write anything down. I didn't share my journey in any meaningful way. This time, things are going to be different.
I'm doing it again. To keep it real, I will be learning something completely new. I'll be building an app to help my team and sharing my journey with the world. Here it goes ...
The problem: I work on a team that is 100% remote and globally distributed. We work on GitHub in many, many repositories and watching all of those repositories is murder on the inbox. We need a way to aggregate the work we are doing and help the most important things bubble to the top.
Run nightly at midnight.
Only run Sunday-Thursday so the team doesn't feel like they need to respond on the weekend.
Grab open issues and pull requests from a specific list of repositories.
Filter the open issues and pull requests by assignee and status.
Prioritize pull requests awaiting review and issues with a "Needs eyes" label.
Post the results in an issue comment in the team's primary repository so we can take action each morning.
Make all of this configurable so we can adjust easily if it isn't working and share it with other teams if it is.
The tool: I'm planning to use Probot. We have a lot of Probot apps installed on our repositories, but I haven't had a chance to build one yet. I'll share more about why I plan to use Probot in my Day 1 post.
I need to time-box my work on this project because, like many of you, I have a busy, full-time job and a life that currently includes coaching my son's U8 soccer team.
To ensure this is a realistic representation of learning new things while also working, I'll limit my daily explorations to 1 hour and share my progress with as I can.
Finally, I'll end each post with the things I'm thinking about. I find that jotting down my questions helps me transition out of learning mode and back into life, knowing I can easily pick up where I left off. Here we go:
Are there other Probot apps that do something similar?
What resources exist for first timers?
How do I set up my local environment for testing?
That's it for today... I'll be back soon with Day 1 so you can watch me get to work.
Opinions expressed by DZone contributors are their own.