00:00:16.360
So this talk is entitled 'From No Open Source Experience to the Core Team in 15 Minutes a Day.' Mostly, it's going to be about why you might want, or not want, to work on open source. Then, I will provide a specific plan outlining things that you can do at any level of experience, so that you can contribute until you reach the core team of any open source project, as much as you desire. To start off with, I am André Arko, and you can find me on the internet as @andrewarko. I work at Cloud City Development as a Ruby on Rails consultant, where we focus on architectural consulting, team training, and pairing. If that's something your team could benefit from, feel free to talk to me later.
00:01:04.479
I co-authored a book that came out this year, the 'Ruby Way Third Edition.' The first edition, which was published around 2003, is the very book that I learned Ruby from. Therefore, updating the book for Ruby in the 2010s and beyond was a wonderful experience. The current edition covers Ruby 2.1 and 2.2. It's a great book, and if you decide to buy it, you can even use it as a monitor stand when it gets old!
00:01:32.409
I also founded a nonprofit called Ruby Together. That's what my t-shirt is for! The purpose of this organization is to help keep RubyGems and the servers we use for fun or professional work functioning properly. One of the projects Ruby Together supports is Bundler. I have been the lead developer for Bundler for about four years now. Working on open source is a lot of work, but it's also a fantastic way to immerse yourself in the community and learn more about Ruby.
00:02:04.479
At conferences or on the internet, the most common question I receive is, 'How can I start contributing to open source?' I’ve spent years attempting to answer this question. Honestly, it is a challenging question without an easy answer. However, this talk is a combination of suggestions that have aged well over days or weeks. So let's begin by discussing what contributing to open source actually entails.
00:03:05.140
The most common misconception about working on open source is that you need a lot of experience. The next misconception is that you need any experience. I understand where this idea stems from; established projects often appear complicated and frustrating, and it can be daunting to dive in without foundational knowledge. But take heart! You can navigate these waters. Contributing to an open source project is a powerful way to deepen your understanding of the language, the project, and the entire ecosystem of developers.
00:03:37.750
It's often said, but it cannot be emphasized enough: there are no real programmers. Everyone can learn to instruct a computer on what to do. Even the most experienced programmers still grapple with confusion about how and why things happen in code. There isn't a magical level of experience that gives you the ability to fully grasp every aspect of your computing environment, as it can be vast and complex. The most vital programming skill you can develop is the ability to investigate things that don't make sense until they do.
00:04:41.490
Let me clarify: GitHub is not just a resume builder, and participating in free software won't inherently prove that you are a competent programmer. Many of the most talented programmers I know learned from making no open source contributions whatsoever. Understand that your time is valuable, and you don’t owe it to anyone else. As we delve into this talk, I want you to consider your goals: Why are you here? What do you want to achieve by contributing to open source? If your intention is to improve your skills or gain recognition, that’s completely valid, but remember to manage your expectations.
00:05:44.270
Open source isn't the only avenue for honing your programming skills. You could easily create software just for your own use, or volunteer as a teacher or mentor. If you’re overwhelmed by contributing to open source, remember: you can engage with family members and friends who need help with their technology needs—doing so can replicate the experience of working on an open source project. Ultimately, choosing how to spend your time should align with your personal goals.
00:06:57.870
When I talk with people about contributing to open source, they tend to envision the same vague and idealistic picture of a genius programmer—working late into the night, furiously typing, and effortlessly closing bugs and merging PRs. This perception is far from reality. Contributing to open source is more about understanding the problems others face and helping them navigate those challenges than just writing code. Sometimes, helping might mean documenting solutions or fixing a confusing error message.
00:08:20.300
You can contribute to open source without knowing how to code at all! Writing code is only a small fraction of the work needed to solve issues on a larger scale. There are indeed benefits to open source work. You have the opportunity to create and manage projects from scratch, which might not be readily available in a paid job. You can practice teamwork—learning to allocate tasks, estimate work, and meet deadlines—all invaluable skills in modern software development.
00:09:11.020
Open source development offers unpaid internship benefits without needing anyone’s permission to participate. You can work on projects at your own pace, pursuing what interests you without external pressures or deadlines. However, it's crucial to remember: only contribute to open source if it’s genuinely what you want to do and you can manage the time you put into it.
00:10:35.780
What if you’re considering working for free? Open source work is typically unpaid. Developers and designers work hard to create tools companies use for profit, but they often see little to no direct compensation for their efforts. I encourage you to read Ashe Dryden's work on the ethics of unpaid labor within the open source community for a comprehensive look at this topic.
00:11:57.050
While creating open source tools is admirable, working on side projects that earn you income is essential for financial stability. Remember to prioritize paying your bills and buying food over the pursuit of recognition in open source. Even well-known developers often face pressure from users and neglect their own needs by trying to solve everyone else's problems.
00:13:14.330
Whenever you're tempted to contribute to open source, be mindful of the time and potentially money you're investing in exchange for its benefits. If you’re still intrigued, here’s one last warning before I provide my plan: releasing your work as open source means relinquishing control over what happens to it. In a recent situation, a developer removed several packages from the NPM registry in protest of a trademark decision. Unfortunately, he deleted a widely-used package essential for countless applications, leading to numerous breakdowns.
00:14:43.190
Despite his wishes, the open-source nature allowed someone else to fork and restore that package due to the absence of licensing. Therefore, be aware that deploying your code on GitHub doesn’t necessarily grant you control over its use. Research the options for licenses that suit your comfort level. Websites like choosealicense.com summarize the pros and cons of each open-source license, while Creative Commons provides customizable license options that allow you to reserve certain rights.
00:16:04.130
After you release your work to the public, understand that anyone can use it for any purpose allowed by your chosen license. In extreme cases, you can’t inhibit individuals from using your work for purposes you’d disapprove of. Before open-sourcing your work, ensure you're at peace with the idea of it being possible for others to use it in ways contrary to your values.
00:17:48.740
Now, thank you all for sticking with me through this—let's get into the practical steps of working on open source. As I mentioned in the title, plan to invest 15 minutes a day into this journey. Depending on your personality, your daily engagement might expand to an hour or more. This isn't a timed commitment, and popular open source projects always have areas needing assistance. You can keep contributing until you feel the trade-off doesn't benefit you anymore and then step back or disengage. This structured plan is entirely doable: start with projects you're currently using or find interesting. Read the README, developer documentation, and contributing guide. Familiarize yourself with the issues and follow up on discussions to grasp ongoing developments. As you dedicate those 15 minutes each day to learning, you will notice opportunities to contribute.
00:28:42.640
Soon enough, you'll find familiar ground where you can answer questions or provide documentation. Once you start actively engaging by answering questions, you contribute to the project's documentation and help prevent recycled queries. Keep reading new issues to boost your knowledge. Update the documentation wherever you identify confusion or discrepancies. Acknowledging and fixing recurring problems significantly improves ongoing maintenance and support efforts and fosters a better user experience.
00:29:26.909
This process progresses—your understanding of the project deepens, and you naturally feel empowered to start making impactful changes that may require a more profound understanding. Soon, you can begin collaborating with the project’s core team, addressing existing solutions they haven’t had time for yet.
00:29:51.090
By now, you should feel like an open-source contributor, having established your presence in the community. Keep engaging meaningfully for weeks or even months. If you persist, you will naturally end up becoming a core team member, since those who remain active in maintaining projects form the core.
00:30:50.370
To sum everything up, open source can be rewarding and has numerous benefits. It can be a worthwhile endeavor, but it’s not for everyone; weigh the associated trade-offs carefully. Keep your goals in mind to ensure that your engagement with open-source aligns with your personal values.
00:31:36.940
Finally, after understanding the intricacies of programming and working through the baffling elements of software, you'll become more adept at offering solutions that simplify users' experiences. Thank you! Your engagement in open source can result in building tools that enhance users' lives—an incredibly gratifying pursuit.