I was getting a little bored, and at the same time I was also wondering if I wanted to contribute to something how would I do that? I don’t know how to use Github. And don’t you have to be part of some group? You can’t just jump in, right?
FALSE. You absolutely can jump in and should. I think the perfect project for this is Snapcraft. At least, in my experience which is limited to just Snapcraft but I’m sure it will be great for you as well.
Prior to this, I went through Github’s tutorial, which gave me some basic information about how to use Github. It would turn out though that I didn’t really get the hang of Github until my SECOND pull request, which we will cover later.
I hopped into Ubuntu’s Rocketchat and (with some hesitation) started learning about Snapcraft and building my first one. Here’s the tutorial I went through to learn: https://tutorials.ubuntu.com/tutorial/create-first-snap.
For my first Snap, Leo suggested that I work on something close to my heart: a security-related snap. He had a list of applications needing a snap, and xkcd-password-generator was what he suggested. I loved the idea of creating a snap that stays contained and generates passwords. Except I would just like to add that you should also consider adding special characters and numbers (;
It took me a few weeks to really understand what a snap is and what the point was. Finally I sat down and decided I was going to try this out, and I got it done! My first snap! (I’m really condensing the story down here because it’s just something you need to experience. Also, I have a bad memory.) If you’d like, you can use build.snapcraft.io to build snaps, instead of handcrafting snaps like we did in the old days.
After writing a post in the forums about my new snap, Leo said I should work on a code fix. To find an issue, you go to Launchpad. If you’re not sure what to pick, drop into the Rocketchat and ask around. We chose one that would be fairly simple, which was to make a new line in an error message. I learned the process for how to push my changes which is something like:
1. git add files
2. git commit
3. write comments like "init: add a newline at end of the file"
4. save
5. git push
6. then go to github and do pull request & merge
7. put bug # + link in the comments
Be sure you’re in communication with people in the Rocketchat, so you can make sure you’re following the right process. What I wrote down was just based on my notes.
Now because it was a simple fix, there weren’t a whole lot of changes to be made. My next one was a bit more difficult, and I made a few mistakes. This is where the wonderful Ubuntu community helped make sure my push was up to proper standards. Look at all the comments (click on view changes to see more detail.) Now I was really becoming familiar with GitHub, after all the pushes I did just to get my second pull request finished! I also learned about Travis, and how carefully you need to watch your whitespace. Without contributing to an open source project, I may not have had the opportunity to dive in so quickly and learn so much in a short span of time. (And I have PLENTY more to learn!)
My experience so far with contributing to Ubuntu has been great, and I’m looking forward to more pulling, pushing, and merging! Of course, I was in the Rocketchat asking a ton of questions during every single step of this article. The coolest thing so far is that every time I have a problem (which is actually every time I try to do anything so far), someone is ALWAYS happy to answer my questions. Sometimes I don’t even know what questions to ask! Yet I still have had some great interactions and a lot of help from the Canonical team members and volunteers.
Hope to see some of you all in the Snapcraft chatroom soon!