RailsConf 2023

Keynote: Investing in the Ruby community

Keynote: Investing in the Ruby community

by Rafael Mendonça França

In the keynote presentation titled 'Investing in the Ruby community', Rafael Mendonça França shares his personal journey and the initiatives taken at Shopify to invest in and improve the Ruby community. He begins by illustrating his passion for Ruby, which began over a decade ago when he discovered the ease of creating web applications using the Ruby on Rails framework. Rafael discusses his transition from a self-taught programmer to a key contributor to Ruby on Rails since 2012, emphasizing the supportive community that helped him along the way.

Key points discussed include:

  • Personal Journey: Rafael recounts how his love for programming emerged during university, leading to his eventual discovery of Ruby on Rails, which inspired his career.
  • Contribution to Rails: He highlights his various roles within the Rails community and at Shopify, focusing on the importance of maintaining and enhancing the framework rather than just creating flashy new features.
  • Team Development: Rafael describes the structure and mission of the Shopify team dedicated to Ruby and Rails, which has contributed significantly to improvements in both the framework and its related applications.
  • Open Source Investments: He emphasizes the need for companies to invest in open-source projects and mentions specific initiatives, such as supporting Ruby Central with funding to strengthen the community.
  • Recent Developments: He discusses new features being introduced in Rails 7, including a new Twitter adapter and composite primary keys, which showcase Shopify’s ongoing contributions.
  • Foundation for the Future: Rafael concludes by encouraging more involvement from companies in the Ruby ecosystem, stating the importance of diverse perspectives and collaborative problem-solving.

The keynote is not just a personal narrative, but also a call to action for individuals and companies to invest time and resources in the Ruby community, reinforcing that continued enthusiasm and dedication will be crucial for the framework's success.

00:00:34.820 If I could go back in time 12 years, I would not believe I would be here. Thank you for inviting me; it’s an honor to share this moment with all of you.
00:00:42.480 My name is Rafael Mendonça França, and you can find me on Twitter and GitHub as @rafaelfranca. I am from Brazil, more specifically from the state of Sergipe, the smallest state in Brazil.
00:00:55.079 It is very sunny and warm, a tropical paradise, but now I live in Canada, so you can imagine how different it has been for me, especially in winter. I have been a member of the Rails core team since 2012, and I am responsible for developing the framework and making key decisions for it.
00:01:21.119 Since 2014, despite what some may think, I have contributed significantly to the framework. As a peaceful developer in the Ruby on Rails infrastructure team at Shopify, I am actually one of the founding members responsible for directing Ruby and Rails within the company.
00:01:41.420 You might recognize some of our recent projects, like why-sheets and various other contributions we have made to the Rails framework and ecosystem. I am here today to share the story of our team and what motivates us to continue investing in the Ruby community.
00:02:25.500 This is, of course, my perspective. To me, it’s a love story, a common love shared by many people from different places who are working together to improve a language that we cherish.
00:02:38.819 I usually avoid the spotlight; I’m the kind of person who enjoys working behind the scenes, ensuring everything is in order and that everyone has what they need to do their best work. This means I often have a perspective that most people don’t see. I pay attention to the details, which are often the key reasons why those projects succeed.
00:03:05.640 Take, for example, my role in Rails. You would probably never see me releasing any revolutionary feature of Rails. In my 11 years, I don't remember ever seeing a feature I contributed to highlighted in the release notes. I see my role more as a team leader, ensuring that the framework keeps working and that individual pieces communicate with each other correctly.
00:03:43.990 I also play an important role as one of the first interactions that people have when they enjoy the Rails issue tracker. I’m not typically the type of person working on shiny new features, but I’ve still contributed to the framework.
00:04:05.060 My main focus is making sure we invest in the right things, create new solutions, and bring new contributors to the community. I believe we are succeeding in those goals, and by sharing my story, I hope to encourage others to follow suit.
00:04:40.199 My part of this story starts in 2003 when I was at university. Like many others, I had to choose my career path. When I was 17 years old, I chose to study computer science, even though I didn’t know much about it. All I knew was that I liked computers.
00:05:16.560 My first real experience with a programming language was with a language called Pascal, and I really enjoyed it. After the first programming course, I found a new passion. I spent hours writing code, enjoying my assignments so much that I even helped my colleagues.
00:05:53.500 I created many graphical interfaces for terminal prompts, and once I learned how to make libraries, I created some of those interfaces as libraries for my colleagues so they could complete their assignments more easily. At that point, I had no idea what open source was, but I was already sharing my code.
00:06:28.940 Fast forward to 2007: I was struggling to graduate and never finished university. I realized that the things I found attractive about programming were not what I was learning in school, so I lost my interest. I decided to find a job in my small city in Brazil, focusing on jobs in Java and PHP.
00:07:09.000 I took that opportunity to apply the new concepts I was learning in my studies, like TDD and extreme programming. I had some inspiring professors who encouraged me to explore new things.
00:07:35.760 One of their suggestions was to try a research project that applied concepts like SOLID principles and patterns. My project was to create web applications in Java, but everything was hard: lots of XML configuration files, and many acronyms to navigate. I was struggling seven days a week.
00:08:38.460 One day, while searching for a solution that was easier to use, I stumbled upon a framework called JBoss. I soon learned that it was inspired by Ruby on Rails and, after reading about Rails, I fell in love with it. I couldn’t believe how easy it was to create web applications with Rails!
00:09:18.720 The day after discovering Rails, I was back in the office, excited to tell my colleagues to use it. I devoted plenty of my free time to learning Rails, and when I found a series called RailsCasts, I was hooked.
00:09:50.280 At that time, my English wasn’t strong, but watching videos without subtitles helped me learn both Rails and English.
00:10:03.000 During this time, the Rails community was vibrant, with version 2.3 being a focal point of activity. A new web framework, Merb, was gaining traction, and members of both the Rails core team and the Merb community engaged in discussions about the merits of each framework. In late 2008, both frameworks decided to merge into what would become Rails 3.
00:10:51.080 This merge brought many innovations to the Ruby community. Projects like Bundler were created during this time, and many blog posts and videos showcasing those innovations began popping up. However, 2008 was also the year when the infamous 'Ruby on Rails can’t scale' meme became prevalent due to Twitter's platform struggles.
00:11:35.820 During this time, I felt insecure about continuing to invest in Ruby, especially with people proclaiming that it didn’t work. Nevertheless, I found that no other language brought me as much happiness as Ruby did, so I decided to continue studying it.
00:12:24.979 In 2010, I had the opportunity to work closely with one of my idols in the Rails community, who was by far the most active contributor at that time. My goal became to work with him someday. This idol also authored 'The Crafty Rails Application,' a book that explains how to extend the Rails framework to build new features.
00:13:31.680 Realizing the value of that knowledge, I decided to invest time in learning how to contribute to Rails. I set myself the ambitious goal of reading every single commit in the Rails repository. For over a year, I struggled to understand anything, but I kept at it.
00:14:14.520 Eventually, everything started to click, and I gained the confidence to make changes to the framework regularly. In 2011, I joined a company called Platformatech, fulfilling my goal to work with some of the founders of the Ruby community.
00:14:57.340 Platformatech was known for creating popular libraries such as Devise and Simple Form and was also the birthplace of a language called Elixir. At this company, I had the opportunity to work on various projects, gaining my first full-time experience in Ruby.
00:15:38.320 During my time at Platformatech, I worked with José Valim, which further fueled my goal to contribute to Rails. José eventually launched a new project called Elixir, and I found myself drifting away from Rails contributions.
00:16:01.240 In 2012, as I continued to navigate my journey, I committed to my first official Rails contribution. I felt confident with my experience maintaining open-source projects, so I started contributing to the part of the framework I was most comfortable with: ActionView.
00:16:31.740 My first pull request involved addressing issues related to safe HTML rendering within Rails. I began engaging with others involved in the framework, even fixing CI issues, changing outdated dependencies, and providing feedback on contributions. The process helped me grow.
00:17:14.200 Through weeks of consistent engagement, I built the courage to tackle bigger features. I collaborated with my co-worker Carlos to add support for collection radio buttons and collection checkboxes, which stemmed from previous environments like Simple Form.
00:17:44.639 In May 2012, I received commit privileges, which was a turning point. I faced a massive backlog of pull requests waiting to be merged, but I saw it as a challenge I was ready to work on.
00:18:19.700 I dedicated weekends to reviewing these requests and establishing a process for triaging issues in Rails. By collaborating with the community, I found ways to define the path forwards for resolving issues in the framework.
00:18:51.300 In October of the same year, I joined Rails mentoring programs and became actively involved. My commitment increased, and I began participating in projects that further expanded my role within the Rails community.
00:19:29.740 By this point, I was working two full-time jobs: as a consultant at Platformatech and a maintainer of Rails. This pace led to burnout, and I took a break from my responsibilities, handing off many tasks to others.
00:20:21.500 Despite this setback, my motivation to contribute to the Rails project remained strong. I realized that to continue effectively, I needed to separate my open-source contributions from my day job.
00:20:58.599 In 2015, with renewed determination, I started taking my open-source career more seriously and pondered how I could better contribute to Rails while continuing my consulting work.
00:21:37.890 I found opportunities to explore applications pushing Ruby and Rails to their limits. One such opportunity arose when I joined Shopify, which caught my attention as it had been built using Rails since its inception.
00:22:23.580 At Shopify, I was tasked with upgrading their Rails application, ensuring they maintained their position in tandem with the latest advancements of the framework. My goal was to reduce the time taken to roll out new Rails features.
00:22:57.680 Throughout this journey, we focused on improving not just the Rails framework but thousands of applications in the community. Initiatives we laid out worked toward building robust and Backward Compatible upgrade processes.
00:23:34.579 We also worked to enhance the dual-booting capabilities for the Ruby community, devising methods that popularized certain techniques.
00:24:09.779 Simultaneously, I accepted a new role inside Shopify, which focused on improving statical analysis across all of our repositories, leading to meaningful insights.
00:24:55.099 One aspect of that challenge was to embrace the use of type-checking in Ruby applications. Initially apprehensive about the idea, I sought to change my role to better align with possible integrations.
00:25:28.840 With new additions to the team, we took on the task of verifying hypotheses within our largest applications. To achieve this, we created tools to facilitate the integration of typing into Ruby applications.
00:26:10.920 We also introduced the RBI generator, which allows developers to use the tools without having to sacrifice dynamic code.
00:26:43.919 As of now, 98% of files within Shopify are being checked by static analysis with 61% of all methods featuring signatures. This has greatly improved the understanding of our codebase.
00:27:17.799 With this success, our commitment to Ruby has intensified. Despite the challenges of implementation, our stewardship of the language has shifted focus—we prioritize growth and optimization.
00:27:57.600 In terms of research within Ruby, we expanded our collaboration efforts with academic institutions, seeking intersections between theory and practice.
00:28:25.380 As our team started involving researchers, our shared objective became clearer. We sought to discover how research could elevate Ruby’s capacity and even its viability for larger infrastructures.
00:29:03.080 The purpose behind incorporating insights was to push the envelope of what Ruby could achieve in real-world applications. Utilizing community insights was instrumental in achieving this.
00:29:37.500 Over the years, our community engagement evolved into a foundational stronghold. We now routinely invite contributors from various backgrounds to enrich our ecosystem.
00:30:00.780 This ethos extends beyond our own team—our thought leaders actively scout for external contributions that resonate with the Ruby community.
00:30:27.920 Our partnerships with organizations such as GitHub and Stripe foster collaborative efforts that bolster the Ruby ecosystem as a whole.
00:31:06.540 In conclusion, I urge everyone present here today to continue exploring their passion for Ruby, to share the journey with their peers, and to embrace new ideas fearlessly.
00:31:34.900 Thank you for being part of the Ruby community.