House of Vars
So far we’ve been building a lot of projects from scratch. While this is a great way to learn, it doesn’t quite prepare you for the horror that is jumping into a pre-existing codebase full of bugs, legacy code and unfamiliar frameworks and libraries.
In this project, we’ll learn how to navigate and contribute to someone else’s codebase by implementing features, refactoring old code, and fixing bugs: all without breaking anything. Be careful what you touch! The slightest change could bring the whole app down.
Before You Start
Take some time to play around with the application you’re going to be working on. Read the documentation and explore the UI. Get familiar with the project from a user perspective before even cloning the repo.
Things to Think About
Once you’re ready to jump into the codebase, pay close attention to the following things:
- How was the setup and installation process? Did you run into any problems or notice any errors or warnings in your terminal? Did you get things set up and running but you weren’t sure how you did it? Was the documentation easy to follow or is there room for clarification? Could you submit an issue to improve the documentation for others struggling with the problems you might have run into?
- What’s unfamiliar? Is the codebase using different languages and frameworks than you’ve worked with in the past? Different setup / build tools? Are there coding conventions or stylistic choices you haven’t seen before?
- How can you contribute to the project? Are there any obvious bugs or missing features that don’t have open issues filed for them? Could you submit an issue with suggestions for improvements? (Some common areas for improvement include accessibility and responsive design)
Although you’re working as a group, everybody should give themselves some alone time with the repo to take notes on the above questions. Comparing notes and sharing your experiences with your group mates afterwards will ensure that no potential issues or improvements fall through the cracks.
Each team will be provided with an open-source repository. While you will not fail if you’re unable to submit a PR that gets merged, we expect you to make a strong effort towards getting a contribution accepted. You can pick any issue from the repo as long as they aren’t already assigned to someone else. Typically, we suggest looking for issues that have tags that say “beginner-friendly”, “help wanted”, or “good first issue”.
Being a Good Human
When requesting to take an issue, first assign yourself to the issue and add a comment on the issue that says something along these lines:
Hi there! I’m a first-time contributor and was hoping to help out with this issue. I noticed nobody was assigned to it, but if there’s already a solution in progress I’m happy to try helping out elsewhere. Thanks!
You are free to begin work on the issue while you wait for a response from someone on the team, but keep in mind they might tell you to stop and switch gears.
If you cannot come up with a solution to submit a pull request by the project, you must un-assign yourself from the issue and leave another comment:
Sorry, but I’ve had to drop this issue from my to-do list. I won’t be able to submit a pull request in a timely manner and don’t want to hold up progress. Hopefully someone else will be able to pick this up!
Throughout this process, make sure you are conforming to any stylistic conventions and contribution guidelines set by the project maintainers. Repos will often have
CONTRIBUTING.md files that give you guidelines on how to format your commit messages, how to write your pull request descriptions and how to file new issues.
Getting Instructor Review & Approval
Excluding the two comments mentioned above, you must have an instructor review and approve any other comment that you make on an issue. You must also have us review your code changes and your pull request descriptions before submitting.
Giving Your Teammates Credit
Because this is a group project, you might be pairing to resolve a single issue. Just because one person is driving, doesn’t mean they have to be the only one to get credit for the contribution. If you do submit a pull request, make sure to give your teammates credit! You can update the author on a commit by following these directions.
Each group will present the work they accomplished (or didn’t accomplish) to the class. A slide deck is highly recommended. Each member should be responsible for one of the following parts of the presentation:
- Introduce the project: Was it an application? A website? A developer tool? How does it work/what does it do? (5 minutes)
- What was it like jumping into that codebase? What was the setup and installation process like? Was the build process familiar or challenging? Did the directory structure make sense? (5 minutes)
- What was new and interesting? Teach us about a new framework, library or tool that you had to use in the project. (5 minutes)
- What issues did you resolve? If you resolved any issues, walk us through your implementation in the codebase and update us on the GitHub activity for your patch. (Was there any conversation in the GitHub issue? Did you submit a pull request yet?) If you were unable to resolve any issues, walk us through the problems you ran into. (5 minutes)
Put your presentation into writing. Each person must write their own blog post. You can write about all four sections described in the presentation, or pick a single one to go in-depth on. Regardless of what you choose, each blog post should be about 500 - 1,000 words. We encourage you to post this publicly on medium or your own blog site.
You’ll submit your blog post here before your group presentation.
Open Food Network - Rails
Code for Social Good - Web App - Angular, Java, HTML/CSS
Ruby For Good - Playtime - Rails
Ruby For Good - PantryScheduler - React & Rails
Spree - Spree - Rails
Zarel - Pokemon-Showdown - Node.js
If you don’t see a project here that you’d like to contribute to, you’re more than welcome to contribute to another project as long as you get it approved by an instructor. Keep in mind you only have about a day and a half to complete this assignment.