Talks

Stories in Open Source

Stories in Open Source

by Tobias Pfeiffer

The video, titled "Stories in Open Source" and presented by Tobias Pfeiffer at the BalticRuby 2024 event, centers around personal experiences and lessons learned within the open-source community. Pfeiffer shares his journey from an initial attempt to contribute to the Linux kernel to becoming involved in various open-source projects and building lasting friendships along the way.

Key points discussed include:

- Initial Journey: Pfeiffer began using Linux and felt compelled to give back to the community through open-source contributions, starting with a course at university that involved fixing a bug in Gedit.

- Early Challenges: He faced significant difficulties in compiling the code, eventually submitting a patch that was deemed a duplicate, leaving him feeling unappreciated and questioning his place in open source.

- Personal Philosophy: Moving through different projects, Pfeiffer emphasized that his open-source journey parallels a narrative journey, where friendships and community are paramount.

- Learning Experiences: His time with Shoes, a Ruby project, taught him valuable lessons about collaboration, releasing products early, and not letting identity be tied solely to one project.

- Project Contributions: He detailed his contributions to other projects like 'After Todo', 'Beni', and 'SimpleCov', sharing challenges like burnout and the importance of promoting projects post-release.

- Mental Health: Pfeiffer shared personal struggles during the pandemic, including the loss of a pet and its impact on his mental well-being, illustrating the emotional journey of open-source maintainers.

- Community Importance: He stressed the vital role of support within the open-source community, urging members to foster inclusivity and acknowledge contributions, no matter how small.

- Final Reflections: The overarching theme concluded with the significance of the friendships and connections that contribute to a greater open-source ecosystem, encouraging continued engagement and support.

Overall, Pfeiffer inspires viewers to recognize their value in the community and to continue contributing joyfully while being mindful of their mental health, fostering an inclusive environment for all.

00:00:08 This was me, probably in 2010 or 2011. At that point, I had been using Linux regularly for about three years, and I wanted to give back to the community.
00:00:15 I was always amazed by the wealth of free open-source software available and felt that I should contribute something back. Yes, my hair really looked like that back then; age isn't always kind.
00:00:28 Initially, my idea was to contribute to the Linux kernel, but then I learned about how Linus Torvalds treats people and realized that it wasn't the right path for me.
00:00:39 I was fortunate that my university offered a course called 'Development Processes in Open Source Projects,' led by Professor Dr. Martin Fowler, who has a Lifetime Achievement Award for his contributions to the Python language.
00:00:52 He really knows what he's talking about, and he is a fantastic lecturer. As part of this program, we were tasked with fixing a bug in a significant open-source project - not just something small, but something like Firefox.
00:01:02 I thought, 'Okay, this is my start in open source. I will fix a bug in something.' I chose a bug in Gedit, which was the editor I was using at the time for Ruby, with a ton of plugins. It was great.
00:01:16 The feature I really wanted was to use the middle click on the tab to close that tab, as this feature was available in Firefox and other software.
00:01:29 I found a bug that was already reported for this and thought, 'Okay, let's roll with it!' I was fired up and eager to get started. I even submitted a patch, but getting there took an eternity. I had to enlist my good friend Nico, because I am not a good C programmer, and the task involved some complicated object-oriented programming.
00:01:56 It took weeks just to make that change, and I struggled to get the software to compile on my machine, since I knew nothing about it all. I tried to switch dependencies to newer packages until I realized I would never have the current packages I needed.
00:02:12 I eventually found a build tool that helped, and after a lot of work—mostly thanks to Nico's assistance—I managed to fix the bug. I felt proud of what I accomplished until I received a disappointing comment on my patch.
00:02:32 It stated, 'Thanks for the bug report; however, it's a duplicate of another report.' When I checked the other bug report, it turned out that the feature I wanted wasn't wanted. I felt compelled to inform the maintainers that this issue had been open for almost a year without any progress.
00:02:56 I was heartbroken. I had put so much work into this only to find out it was for nothing. If someone had simply triaged the issue and stated that it was not a feature they wanted, I could have saved a week of my life.
00:03:08 Most importantly, I felt utterly unappreciated. The message was simply, 'Thanks for the bug report,' rather than acknowledging the time and effort I'd put into submitting a patch. It felt like I was invisible.
00:03:25 As a result, I became frustrated and thought to myself, 'Maybe open source just isn't for me.' This could have been the end of my open-source journey.
00:03:41 But this is not just a lightning talk; we have a real talk ahead of us. This talk is titled 'Stories in Open Source.' Hi, my name is Toby, and you can find me online as at ptop.
00:03:55 I am starting a new job on Monday as an engineer at ScreenWor, but as of now, I'm unemployed. I'm from Berlin and have been running the Ruby User Group in Berlin for the past 12 years.
00:04:19 A lot of that work has come about through open source. Today, I’m delivering the most personal talk I've ever done. I will walk you through my journey in open source and how it has impacted my life along with the lessons I've learned.
00:04:46 One more thing to share about me: I was the guy in the Zen talk earlier today, excitedly shouting out about Freen. I can do that because I even have a Freen sticker on my laptop.
00:05:06 Reflecting on my experience, I've realized that my journey in open source is much like an anime. It’s about someone who embarks on a long journey with others, bringing newcomers along and sharing stories of their journey.
00:05:30 In that respect, I feel like an old sage guiding you through my experiences across various open source projects I've worked on, hoping to encourage some of you to embark on your own journey of contributing to open source.
00:05:47 Just before we continue, I want to clarify that I'm not a core contributor to Rails or Ruby or any of those large projects. The biggest projects I have maintained or contributed to are still sizeable, but they’re not the giants in our community.
00:06:07 I believe my experiences might be more relevant to many of you than those of a core contributor. My story begins in Sweden, where I moved for my Erasmus program.
00:06:30 During my time at the university, the courses were much more relaxed compared to my home university.
00:06:43 With more free time, I found 'Mendicant University,' a Ruby-focused online course run by Gregory Brown, who many of you might know from Prawn and his excellent book on Ruby.
00:06:57 This was a very intense five-week course, and participants could be expelled weekly if they didn’t meet specific milestones. I was a master's student among a group of senior engineers, which made it quite an experience.
00:07:14 A requirement of the course was to contribute to open source, so this was my second shot at it. I found a project called Shoes, which is a delightful Ruby project for building desktop UI applications, something I had always wanted to do.
00:07:35 Previously, I had experimented with GTK, which was quite complex because of the positioning requirements. Shoes offered a beautiful framework that operated more like a web application.
00:07:54 We'd create new apps with backgrounds featuring gradients, and the layout flowed in a user-friendly manner. I was fascinated by how Shoes managed to simplify the process of displaying images from URLs.
00:08:14 I learned about Sneakers through a presentation I attended, which was the first Ruby conference presentation I ever watched. The presenter was Steve Klabnik, a crucial figure in many projects and a mentor for many, including myself.
00:08:33 Working on the Shoes project felt collaborative and playful; nobody was worried about using it in production because we were focused on teaching and having fun. That experience solidified my love for the open source community.
00:08:54 From that time, I made a lot of friends, including Jason. I've created so many core memories with that group of people, and I cherish those experiences.
00:09:12 For instance, after working on Shoes for years, I met Jason for the first time on a beach in Barcelona during Full Stack Fest. We teamed up on various projects and stayed connected.
00:09:32 I even collaborated with Eric Watson once, who suggested we pair at 10 AM my time. I was bewildered that he’d want to code before his kids woke up—turns out he has six of them! We tried to code as his children ran around in the background. That connection still warms my heart.
00:10:05 Through this project, I learned the importance of giving new contributors early access to repositories. When you're a first-time contributor and you are granted access, it creates a sense of trust and motivation.
00:10:36 Another lesson was to release often and early. We worked on Shoes 4, and I initially thought we should have a perfect version before releasing, which proved to be a mistake.
00:10:54 By delaying the release, we missed opportunities for feedback and community engagement. Thankfully, Jason encouraged me, and we released a beta version, which turned out to be very well-received.
00:11:13 One pivotal lesson was understanding that my identity wasn't defined by the open source projects I worked on. Once, I had a 600-day GitHub streak solely focused on Shoes, and it became hard for me to move on.
00:11:38 A heartfelt conversation with my friend Anna helped me realize that it was okay to step away and explore other projects. Next, I want to highlight 'After Todo,' a fun little microlibrary I built for aspect-oriented programming in Ruby.
00:12:08 This coding technique allows for functionality like logging, triggered by specific methods. I built it to solve a concern we faced, which added to my programming arsenal.
00:12:30 'After Todo' became another example of how practical learning can lead to meaningful contributions. I appreciated seeing various users give feedback that helped shape the library.
00:12:52 Moving on from Ruby, I created 'Beni', a benchmarking library in Elixir. Benchmarking is something I enjoy immensely; it's a way to measure improvements and strive for better performance.
00:13:14 Much of my learning came from simply working on Beni. I originally doubted my skills, but implementing features expanded my knowledge of the Elixir language and the BEAM.
00:13:41 One common misconception about libraries is that being better than existing ones guarantees adoption. I experienced this first-hand when my proposal was unrewarding, serving as a significant learning moment.
00:14:09 It's essential to promote and engage with your library post-release through talks and blog posts, as it can take time to build a user base and demonstrate value.
00:14:34 Co-maintaining projects like Beni is a joyous experience. An example of this is when Devon and I discussed naming conventions and improved the project through collaboration, which is invaluable.
00:14:58 I felt proud when 'Beni' was featured in the book 'Adopting Elixir.' It was incredibly fulfilling to see my work included in reputable resources and witness its impact on the community.
00:15:21 Now let’s talk about 'SimpleCov,' a coverage reporting library for Ruby. It's a behemoth of a project with over 200 million downloads, meaning any enhancements made would help countless developers.
00:15:46 However, maintaining it has its challenges; it often acts as an integration point with the various testing frameworks out there.
00:16:06 Initially, I got involved with SimpleCov to add JRuby support. However, once I dived in, I found the maintenance and the number of issues was far more significant than I anticipated.
00:16:29 Fortunately, I gained support from Kristof, who helped me secure funding to work on SimpleCov, allowing me to focus on enhancing its functionality.
00:16:57 In the last few years, my contributions have waned as I've been stretched thin by a multitude of priorities, and I haven't been as active.
00:17:21 One of the realities of open-source work is that it can sometimes feel like there’s too much to manage, which can be overwhelming.
00:17:47 However, things changed when the pandemic hit, and many factors affected my ability to engage with open-source projects. I became glued to the news, worrying about the impending future.
00:18:12 On top of that, the invasion of Ukraine by Russia affected me deeply as I have connections there and felt a responsibility to stay engaged, but it was challenging.
00:18:36 During this time, I faced personal challenges, including my beloved pet bunny's illness and eventual passing. This loss affected my mental health significantly.
00:18:55 Sharing these personal stories may feel uncomfortable, but it's crucial in understanding the emotional aspects associated with our open-source journey.
00:19:20 Before I knew it, the caring relationships I built through open source and my work began to take a backseat in my life.
00:19:43 I remembered a conversation with a friend in 2018, who asked how I managed to juggle my community work with friendships and open-source contributions.
00:20:00 During that time, I was deeply immersed in it without focusing on how I was doing it. But after stepping back from open-source for some time, I began to lose sight of what had once come naturally.
00:20:26 Returning to Steve Klabnik's words, he pointed out that the open-source community has a significant burden of maintainers who face burnout. Burnout is real.
00:20:46 It's disheartening to see so many valuable contributors leave the space, and we must strive to create a more inclusive and welcoming environment.
00:21:15 Therefore, I encourage all of you to remember that open source is a collective effort; it's essential that we support each other and acknowledge our contributions.
00:21:36 Moreover, it's essential not to become overly attached to the projects we care about. Open source is meant to be enjoyable and enriching; don't stress over it.
00:22:00 As creators, remember that our time is valuable, and it's okay to step away to maintain our mental health and well-being.
00:22:24 We must keep in mind that adoption of libraries takes time and requires ongoing communication and visibility.
00:22:48 Open-source space is not without its challenges, especially issues related to diversity and sustainability.
00:23:08 It is essential to promote equal opportunities and ensure the code and frameworks we work with are accessible to everyone.
00:23:32 We have a responsibility as maintainers to consider the implications of our work. This extends to how our contributions might be used by various entities.
00:23:56 As I reflect on my journey in open source, the key takeaway is that so much of this has been about the friendships and connections I've forged along the way.
00:24:12 I have enjoyed wonderful experiences and built lasting relationships, and together, we've created something great. Each friendship has added significant value to my life.
00:24:36 As an example, I fondly remember programming sessions with Jason at a conference in Berlin or how I received encouragement early on from Anna.
00:24:58 All of the connections developed through my open-source endeavors are what matter most, allowing me to share my passion and grow together with others.
00:25:22 Looking back, these experiences shaped my journey, leading me to develop my speakers' career and resonate the value of community with others.
00:25:42 The joy of creating and contributing—the pleasure of shipping new features and fixing bugs—remains a core part of who I am today.
00:26:07 To conclude, I want to share my gratitude towards the open-source community. Each of you present today plays an integral role in making it a welcoming space.
00:26:33 So, please continue embracing open source equitably. Let's support one another, grow together, and create an inviting avatar for all those who want to contribute.
00:26:58 Remember, every contribution counts, from reporting issues to creating documentation. So let's work together to preserve the charming spirit of open source!
00:27:20 Thank you for being part of this journey with me today, and I hope you continue to enjoy and contribute to open source!
00:27:44 Thank you for that wonderful talk!
00:28:03 Thank you very much!