Talks
Level Up with OSS: Develop Your Rails Dev Skills Through Open Source Contributions

Level Up with OSS: Develop Your Rails Dev Skills Through Open Source Contributions

by Courteney Ervin

In Courteney Ervin's presentation at RailsConf 2015 titled "Level Up with OSS: Develop Your Rails Dev Skills Through Open Source Contributions," she emphasizes the importance of open source contributions for web developers, particularly those new to the field. Ervin shares her own journey from a non-technical administrator to a skilled platform engineer with experience in open source projects. The talk highlights that open source contributions not only enhance technical skills but also improve employability and understanding of collaborative code bases.

Key points discussed in the video include:
- Setting Goals for Contributions: Ervin suggests defining personal and professional goals prior to engaging in open source. This might include learning new technologies or improving skills in version control and collaboration.
- Diverse Ways to Contribute: Contributions to open source can extend beyond coding. Ervin mentions areas such as bug reporting, improving documentation, translating content, adding tests, and engaging in code reviews.
- Finding Projects: Tools like GitHub, Open Hatch, and Code Triage can help new contributors find projects that align with their interests and skills, and there are initiatives such as 24 Pull Requests to encourage participation.
- Process of Contributing: The process involves forking projects, making local changes, and submitting pull requests, with an emphasis on clear communication and community engagement. Ervin encourages attendees to familiarize themselves with a project’s community and workflow to enhance their contributions.
- Growth and Networking: By contributing, developers can demonstrate their problem-solving capabilities to potential employers, and build valuable relationships within the tech community.

In conclusion, Courteney Ervin motivates the audience to embrace the challenges of open source coding, assuring them of the value of their contributions and the personal growth that can come from participating in the open-source community. She reinforces the message that every contribution, no matter how small, can be important and impactful in a developer's journey toward becoming a skilled professional.

00:00:11.759 My name is Courteney Ervin. I am a platform engineer with Code Montage, which is an open source project. I'm also an open source maintainer. Two years ago, however, I was not a platform engineer; I was an administrator at a non-profit. When I say administrator, I don’t mean systems administration or IT stuff; I mean I managed volunteers, planned events, and occasionally used Excel spreadsheets. It was a challenging time. Since then, I’ve moved on, and now I write code. I can honestly say that there's no way I would have my current position, knowledge, and skills without having written open source code and contributions.
00:00:41.920 I am a self-taught developer, meaning that I didn’t pay anyone to teach me. People taught me; I just wasn’t compensated. Some of that free learning came from writing open source code. I think it’s incredibly beneficial for your career, learning, and growth. That’s why I'm really invested in encouraging people to write more open source code. Additionally, there are many maintainers out there who simply don’t have the manpower to maintain projects at the level they would like, and you can be the change they deserve.
00:01:13.200 So the first thing to consider when you are getting ready to make open source contributions is to pick a project or define your goals. There are various reasons to get into open source, and I recommend having two different types of goals: a personal goal, something for yourself that is not directly related to your career, and a professional goal that could be related to your current job or a future job. These goals will guide some of the decisions you make regarding which projects to choose and what challenges you are willing to take on.
00:02:16.800 Some potential goals include learning new technologies, such as understanding how to integrate Rails with an Angular frontend. You may want to improve your version control skills by getting better at Git and GitHub or mastering different processes. Working with a distributed team is also a valuable skill; being able to communicate effectively from a distance and get your point across is essential. Code reviews can be another goal; you might want someone experienced to look at your code. Providing them your code can be a beneficial way to get feedback and improve your skills. You can also seek visibility by ensuring others know that you write code, engaging with the community, and giving back to projects that you rely upon.
00:03:02.800 Your goals should ultimately be about you and your needs, so remember that your goals aren’t mine. One of my personal goals was to get to know Rails because I wasn’t familiar with it when I started contributing to Rails projects. I learned a tremendous amount. Now, I want you to tell yourself that you can definitely contribute to open source code. If you’ve been hesitant due to fear or feeling like you don’t know enough, let me assure you, you do.
00:03:41.600 Take a moment to look around at someone else in the crowd. Make some awkward eye contact and give that person a thumbs-up. In that silent moment, let them know they ‘got this.’ You now have the permission to write open source code, and if you haven’t done it before, take that encouragement and run with it.
00:04:01.280 Now, I'm going to share some thoughts on ways you can contribute to open source. A lot of contributions don’t actually require coding. One way to contribute is through bug reports. Often, people will announce an issue without providing helpful details, which isn’t useful for maintainers. If you come across a bug, do a little research and share links or create a video showing the bug in action; that can be incredibly helpful. Documentation is another area where many contributors can add value. Sometimes people assume that everyone has the same setup they do, which isn’t the case. If you find issues in the documentation, make sure to address those.
00:04:36.800 If you know multiple languages, consider helping to translate content for projects so they can reach a broader audience. Creating seed data can also be a great contribution, allowing new developers to explore the codebase with meaningful content. This helps everyone understand the project better.
00:05:00.000 Adding tests is another critical contribution—far too few people write tests. If you have any design ideas or can perform design reviews, share your insights. Lastly, contribute to code reviews by commenting on existing pull requests. If you know the code and are familiar with it, your feedback can significantly benefit the original submitter.
00:05:50.240 You can promote projects you like, even if you can’t work on them directly. Tweet about them, write blog posts, or star them on GitHub. Keeping track of a project by watching it and looking for notifications can also lead to meaningful contributions. Updating libraries and helping with transitions to newer versions can be a big help, but make sure to communicate with the main developer before jumping in.
00:06:39.000 If you see any syntax errors or typos, those are easy fixes that require minimal coding knowledge. In this talk, we will focus primarily on writing code, which is an essential aspect of contributing.
00:07:04.800 First, find a project that speaks to you and decide which one you want to work on. You can search GitHub directly, but there are also many tools available, such as open-source projects with a social good focus like those offered by Code Montage. You can search for projects by cause—whether education, open data, or other social causes.
00:07:49.280 Open Hatch has smaller, bite-sized projects, which can be perfect if you want to contribute quickly. Git Rec generates suggestions based on your GitHub profile, helping you find appropriate repositories. There’s also a challenge called 24 Pull Requests, where you submit a pull request each day for 24 days leading up to Christmas—think of it as a way to give back to open source maintainers.
00:08:25.600 Contribulator is loosely connected to 24 Pull Requests and is a way to get involved in various projects. If you’re interested in more challenging tasks, Code Triage identifies neglected repositories on GitHub and suggests them for potential contribution. If you hope to work for a specific company, check to see if they have open-source projects you can contribute to.
00:09:00.000 Engaging with a company’s open-source code gives you insight into their workflow, team dynamics, and culture, making it easier to get a position with them later on.
00:09:56.640 When you decide on an issue or task within a project, ensure the issue hasn’t been resolved. Check the pull requests as well to see if it has already been addressed. If the issue isn’t solved, claim it by commenting that you’re working on it. If it’s important for you to have your code merged, make sure that your claim resonates with your commitment to complete the task.
00:10:43.840 Once you take on an issue, it’s essential to follow through. If you don’t have time to finish it, provide insight into what you’ve learned so far and pass it on to someone else. Remember, it's not about fixing the entire feature instantly; every small contribution matters.
00:11:32.320 It’s also vital to know the community you are working with. Familiarize yourself with the people on the team; they may know more about the codebase than you do if you’re just starting. Know where to find help—be it a Slack channel, forum, or email—and gauge the community’s responsiveness. This knowledge will be beneficial for you as you begin contributing.
00:12:10.560 Additionally, look at how long it generally takes for pull requests to be reviewed. Understanding this can help you set expectations. If you’re planning any significant changes to a library or project, don’t hesitate to reach out to the community to discuss them beforehand.
00:12:49.600 Now we’ll delve into the technical aspects of contributing. Since many people here are already familiar with Git and GitHub, note that the first step is to fork the project. This will allow you to create your own version of the project on GitHub, and from there, you can clone it to your local machine. Nonetheless, installing the project from its documentation can be one of the more difficult parts of the contributing process.
00:13:37.760 If you encounter errors during installation, rest assured that it’s a common experience. Logging any errors you encounter can be incredibly helpful for the project maintainers. Make sure to document any solutions you find to issues you face while setting up the project, and feel free to submit pull requests for improvements in the documentation.
00:14:18.080 The contributions you make—even if not directly related to code—can impact the project positively. Once you properly install the code and start contributing, don’t forget to celebrate your achievements! Whether it’s a successful installation or fixing a bug, acknowledgment of progress is key.
00:15:03.040 Next, familiarize yourself with the Git workflow: First, set a remote to the main repository. Ensure that your master branch is up to date with the upstream repository. Create a new branch for the code changes you want to make—avoid working directly on master.
00:16:06.080 Then, write your code, make the necessary commits, and push your changes back to your fork on GitHub. Finally, make a pull request, and do remember to keep your pull request focused on a specific change.
00:16:54.080 Communicate clearly within your pull request; outline the changes you made in detail and include screenshots if necessary, especially for any front-end modifications. Always be open to feedback, and don’t shy away from making adjustments based on suggestions from reviewers. This collaborative process ultimately enhances your code and builds positive relationships with project maintainers.
00:17:47.040 It’s also important to recognize that contributing to open source is a great opportunity for growth. Each pull request represents a problem you solved, and you can carry those experiences into interviews or discussions with potential employers. They demonstrate your capabilities and thought processes.
00:18:43.680 As you engage with the community, maintain positivity and respect. The relationships you forge through your open-source contributions could lead to recommendations or connections in the future. Each interaction with contributors and maintainers can lead to long-term professional opportunities.
00:19:38.640 To summarize, engage with the community, collaborate, and build relationships over time. Your contributions matter, and if you track your progress, you’ll find that your achievements—be it code submitted or bug fixes—are all significant markers in your development journey.
00:20:38.960 Always make an effort to be helpful, and be kind to yourself as you navigate this open-source journey. Remember that your work is valuable, whether or not it gets merged into the main codebase. You may even find that contributing becomes a fulfilling part of your professional journey, so embrace the challenges and support each other in this space.
00:21:12.640 Thank you for participating, and I encourage everyone to write open source code. It's a rewarding experience!