Blog

Open Source

Hacktoberfest is here!

 

hacktoberfest

The timing couldn’t be better!

This will be a great opportunity for everyone to get involved and become more comfortable with open source development! This month I am aiming to contribute at least 5 meaningful pull requests to any open source project out there.

Admittedly, I was quite intimidated searching for my first issue to fix. A lot of existing issues seem way too complicated for me to understand and as a result, made me less confident in my abilities. That’s why I decided to start out small and picked a language I was most familiar in: HTML / JavaScript

I stumbled upon this beginner friendly project and was excited to get started! This project is meant to serve as an introduction for many into Hacktoberfest and has many existing contributors. The creators have made a website containing basic information about Hacktoberfest and open source development. They are actively encouraging anyone to join in and improve the website in any way whatsoever and have done a great job at making the community fun and engaging. This is great since it was very open ended as to what we could do and countless features and gimmicks have already been added to the site! I decided to add an additional Easter Egg to the site and hopefully it will get implemented soon (see here).

There was one negative thing I noticed with a project like this: too much freedom can cause a lot of disorder in development. There were a few rules set in place for contributors of this project, the main one being that the page has to load properly. I believe a bot was also implemented to automatically approve pull requests so long as it follows that rule and that resulted in some duplication in code. Some elements were added twice, probably due to a mistake from some other contributors, but since this duplication didn’t break the html code, it was still merged in. Luckily this also means that others can jump in and fix this problem, albeit it could have been avoided in the first place.

All in all, this was a great start to Hacktoberfest and I hope that I’m able to slowly start tackling more advanced issues throughout this month!

Happy hacking!

hacktoberfest-logo-min

Open Source

Checking up on the Extension

Before ending the semester I thought it’d be a good idea to give the extension a once over before I said goodbye to it. After combing through all of the features, I did notice that one wasn’t updating properly and was wondering why.

Turns out silly me made a typo during one of my earlier pull requests, which ended up  in some broken code. Regardless that was an easy fix and it should be working fine now!

The rest of the pull requests that I have submitted earlier, though haven’t all been merged, don’t seem to have any outstanding problems either. I do hope to contribute more to the freeCodeCamp repo whenever I can since that is a project I really do enjoy. IF I ever learn any new tips and tricks during my studies, I will most likely share them there as well!

I’m pretty amazed that a bunch of us were able to collaborate together this month an create something that we could call our own. At the moment there are still a few outstanding pull requests and issues in the repo. Hopefully they get resolved as well. I am anticipating the day that we can release this for other users to use as well!

It truly has been a great semester here at OSD600!

Open Source

End of Semester Reflection

With this semester coming to a close let’s take a moment and reflect back to what had happened.

Going into the the open source development course, I have had no prior experience whatsoever in this field. I had only basic knowledge of Git and hadn’t even created a GitHub account. I had no idea what I was getting myself into, but the idea of working all sorts of projects with real people around the world excited me.

Thankfully that first few weeks of class were focused on familiarizing ourselves with Git and GitHub. Concepts were explained very clearly and in an organized fashion so learning was very easy. We also discussed techniques towards tackling bugs from other projects. The strategies that were taught made contributing to even projects from big companies such as Microsoft seem easy.

Coincidentally, Hacktoberfest fell within the semester as well, giving us all a great opportunity to join in on the fun. My favourite part about doing open source work would have to be the community. For the most part, people are always willing to accept help from all sort of people and are understanding and patient when you have any issues with contributing. That isn’t to say that there aren’t any arrogant, condescending communities, but for the most part everyone is very welcoming and enjoys teaching / learning from others.

I’m very glad that I took this class; it wasn’t what I was expecting at all. A lot of practical work was taught here and these could definitely help you add unique experiences onto your resume. With the class being over, I probably won’t be as active in the open source community as much. However it is something I would consider now from time to time as a side project. I may even put my own projects up on GitHub to let others work on it as well. Not to mention, of course I will be participating in Hacktoberfest every year now 😉

Open Source

Nearing the end of the course!

With only one week left of classes things are beginning to wrap up in my open source class as well. This past weekend I revisited freeCodeCamp to see what else I could contribute towards the community.

I always wanted to try writing a guide since it would also be a good indicator to myself whether or not I understood what I was teaching. Since I recently learned R in one of my other courses, I thought I could take a look at that. Conveniently, only a handful of guides were written for R (probably because it’s more niche compared to other languages such as Java and C++) so I took the opportunity to contribute there.

The contribution guidelines for the repo offered a few tips for writing guides that I found very helpful such as:

  • Writing in an active voice
  • Keep points concise
  • Use examples to help with understanding

I created guides for classes in R, as well as string manipulation functions. Figuring out what I wanted say was easy, but putting it in a concise and easy to understand way was quite challenging at times. Since the guides were meant for anyone to be able to read and learn, I couldn’t assume that readers had prior knowledge in the subject. As a result using specific terms particular to R couldn’t be used as they would have had to be explain as well.

That’s when I realized how useful examples were. They are a great way to convey points and even subtle techniques without the necessity of writing out statements. As a result I used a lot of examples in my guide, and even made sure to make the data relate to each other between examples to integrate learning pieces together. It was a really fun pull request to do and I enjoyed making random, custom variable names for the examples. I can definitely see this as something I’d like to continue doing in the future. Not only does it help me, but numerous other people as well who are just starting to learn a language. I am very glad I was able to find this project on GitHub and contributing to it has led me to discover things in programming that I wouldn’t have even though that I would enjoy!

Open Source

Chrome Extension Going Well

Having been busy for the last few weeks, I hadn’t had a chance to keep updated with the chrome extension that I worked on earlier this month. After updating and checking out the new features added to the extension, it’s amazing to see how much it has evolved! In it’s current state, though not perfect, it definitely looks like an extension that I would actually use!

Upon reviewing the code, I did notice some minor issues that needed fixing in the new code. It was also pretty interesting seeing the different coding styles that people have. I could definitely tell who contributed what part in the code and, while it is nice to see numerous people collaborating to a project, the lack of consistency in the coding was bothering me.

Another thing to note was that the PR I submitted to add an options panel was never reviewed until recently and had merge conflicts that needed to be fixed! It did disappoint and annoy me that the PR got ignored for a long time while all the subsequent submissions had gotten merged, especially since the feature I was implementing would result in restructuring of the code. Not wanting this pull request to go to waste, I went ahead and began to sort out all of the new features and rebuilt the entire code structure.

One of the biggest problems I faced was trying to figure out what some of the features were doing. In general, it was easy enough to get the general idea of what the code wanted to do, but some features had little to no documentation associated with it. It made me realize how important commenting, especially since I also have a bad habit of not commenting on my code. Regardless, local testing allowed me to determine what the remaining features were supposed to be doing.

After a few hours of going at it, the merge conflicts were fixed and I hope this time my PR can successfully get merged!

Open Source

A New Hump in Open Source Development

One of the most difficult parts of open source development would be finding the right project to contribute to. It’s important to find something that you have genuine interest into contributing, but at the same time matches your skill set. That’s not to say that you shouldn’t be ambitious when you’re searching for projects, but some repos may only have highly advanced bugs left to fix, which may be deterring to some people, especially if they’re a new contributor.

Up until now I’ve been contributing to projects that haven’t had the need to run a copy locally in order to test. For the most part it was simply analyzing code and testing changes with unit tests. I never realized how much time it could take just to get a project to run locally.

For my current contribution, I originally intended on finding an open source game to work on. However a lot of these projects required various software that I hadn’t installed yet and had no idea how they operated. Oddly enough every single one that I tried to run never built as intended, which made me incredibly frustrated. The instructions on the repositories for the most part never had any documentation for potential build errors, which led me to do some external research in hopes of fixing it (in this particular case it was regarding CMake). After a while it felt like I was looking for any project that I could get up and running and then finding bugs to fix for that afterwards. It was a shame too because I feel like there were one or two issues that I felt like I knew the solution to, but could never actually test whether or not my solution worked.

For those reading, here are some great resources to find open source games:

  1. https://osgameclones.com/
  2. https://github.com/leereilly/games

I ended up conceding and ended up looking for something else. Eventually I stumbled upon freeCodeCamp, which although is not a game, is an website revolved around teaching anyone to code in any language for free! I’m always supportive of projects like these and the community for this is huge as well. Since I do have some more experience with web programming, especially after working on the web extension for our school’s website, I felt more at home here.

freeCodeCamp.org Social Banner
Check out this awesome banner!

Various types of contributions were welcome here, but I decided to tackle one that required me to test locally before submitting. In this case, MongoDB was required to run this React based project. I have touched these two software once before very briefly during one of my semesters so they weren’t 100% foreign to me. Thankfully the instructions were very clear and though I still had some trouble getting the project running, all that was required were a few software updates :).

My issue was to fix a UI error that resulted in the misalignment of some elements in the page’s dark theme. It wasn’t particularly difficult to find the source of the issue, though the differing file structure between React and traditional HTML/CSS web pages threw me off a little (thank goodness for testing). However this issue did make me realize that the issue may not always be laid out correctly. In this case, the submitter thought that the navbar was misaligned and caused the discrepancy, when it was actually the div below it that was the main reason. It was also visible in the normal theme, but nobody could tell since the colours were all the same! I’ve always had the assumption that whenever an issue was posted, you could more or less take the person’s word for it. However while working on this bug and thinking to myself “Huh that’s odd why is it that the navbar is different on this one specific page and not the rest?” did I realize the consequences of making these assumptions.

Things may not always be laid out crystal clear for you but that’s normal and it’s okay! It gives you the opportunity to explore and grow as a developer. Not to mention that you also feel quite good afterward knowing that you solved the issue correctly. Though this was but a simple fix I really do like this project and hope to be able to give bigger contributions to it in the future!