Contributing to larger projects

As we progress through this semester, so does the level at which we contribute on github. For release 0.3 we were asked to contribute to 2 large projects, one of them being our internal Telescope project and the other one we were free to pick anything  we'd like.

For the internal telescope project, i was assigned Issue #108, and i was required to update some of the already existing code. The function i'm working with receives a URL string out of a queue and we use that URL to extract any information that we need. The URL is a link to a users blog posts. Currently the function just prints out the results, which is not very useful, so we need to change a few lines of code so that other modules of the Telescope project can use this function. The idea is to check every URL and extract all the useful information like the author, blog title, blog body and the time stamp of when it was posted and so on. Then we use this information to construct a "post" object that we can call "processedPost", then we can add all those post into one array. As of right now its a bit unclear how we want to handle what happens to the array, because were not sure how the other modules need to use that information, we may need to insert then into a different queue that the other modules have access to but for now we will just store them into the array.

For the external project, i chose to work with the DuckDuckGo mobile iOS app. DuckDuckGo is just a web browser that promises safer web surfing. I found Issue #495 that was posted for a new functionality request. The request was to make the lower control bar show up when you've reached the bottom of the window, because the bar is usually hidden to give the user more screen space to display the web page. After cloning the git repo, i spent about an hour setting up the application to run on my machine because there was a lot of dependencies that needed to be downloaded and added. Because this was a new project i was working on, i spent a few hours familiarizing my self with the code, This is the biggest project I've worked on so it took a while to get used to the way things are done in these larger companies. After working on the project on and off for about a week i was finally able to get the lower control bar show up when I've reached the bottom of the web page, but because apple requires a real developers account to install the application on my phone, i was unable to fully test the new changes, so i wasn't able to submit a pull request.

Working on these larger code bases is vastly different than working on your own code or a code base with only a few contributors. As the project grows and more contributors get involved, so do the amount of automated tests. The automated tests are implemented as sort of a first line of defense against bad code, because there cant be people sitting reading every line of code that's being submitted through PR's. So in order for a contributor to submit a PR, their code must pass all tests to ensure that the code works with the rest of the program and that it follows all the rules set by the repo owner. Once the submitted code has passed testing, then the code can be reviewed and the reviewer may request some changes or they can accept the code and merge it.

Working on larger projects has given me a better understanding of how things actually work in the real world vs how we do things in our school projects. I think this is a great experience being able to work on these large projects without actually having a job at that company, experience that could actually help while looking for a job.


Popular posts from this blog

Object detection for iPhones

Hacktoberfest is just around the corner

Fixing Issiues