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.