Talks

The Technical and Organizational Infrastructure of the Ruby Community

The Technical and Organizational Infrastructure of the Ruby Community

by Adarsh Pandit

The video features Adarsh Pandit's talk at Euruko 2022, where he discusses the technical and organizational infrastructure of the Ruby community. He emphasizes the importance of understanding and participating in the systems that underpin Ruby development.

Key Points Discussed:
- Overview of Ruby Infrastructure: Pandit explores the essential projects and community aspects that support Ruby, focusing on community engagement and investment from companies in the ecosystem.
- The Nature of Infrastructure: Infrastructure is defined broadly to include not just technology but also the community dynamics that hold the Ruby ecosystem together.
- Encouraging Involvement: He aims to inspire developers and organizations to contribute to Ruby infrastructure, highlighting that collective effort is vital for long-term sustainability.
- Bicycles as a Metaphor: Using bicycles, he draws parallels between cycling infrastructure in Finland and Ruby infrastructure, advocating for safety, community values, and proper design in both domains.
- Systems Thinking: Influenced by ‘Thinking in Systems’ by Donella Meadows, he describes how systems behave based on their intrinsic characteristics rather than external factors, urging for a better understanding of systems to improve governance in Ruby.
- Governance Insights: Pandit reviews Ruby's governance, noting the necessity to document roles, decision-making processes, and financial contributions for better accountability, especially within key projects like Ruby, Rails, and Bundler.
- Case Studies: He examines success in Finnish urban planning that prioritizes safe cycling and compares it to Ruby, emphasizing the importance of transparency and structured governance in both.
- Call to Action: The conclusion stresses that the Ruby community must prioritize healthy governance and accountability mechanisms to ensure a thriving environment for developers.

Conclusions and Takeaways:
- Infrastructure is crucial for maintaining the Ruby community, and its governance requires collective participation and investment.
- Reflection on one's role within such systems is essential for progress, aiming at fostering a sustainable Ruby ecosystem that supports future generations of developers.

00:00:04.860 Taking it to my talk, I'm honored to be here. I know some of you might be a little bit tired, so I appreciate you making the effort to come in.
00:00:11.460 I left a little bit early, but I noticed that some of you are quite the dancers! I did not know that about our community. That's pretty cool; you're out here looking like the Finnish Prime Minister dancing around. Great stuff—well done!
00:00:29.279 I'm Adarsh Pandit, I'm from California in the United States, and today I'm going to talk about the technical and organizational infrastructure of our Ruby community. Specifically, I will cover critical projects in the Ruby world, how they work, who supports them, and so forth.
00:00:43.320 Many people this week have referenced Ruby and Rails thriving for one hundred years, and I will share my thoughts on how we might accomplish that.
00:00:56.460 I'm so excited to be here in Finland. This is my first time visiting, and it's such a beautiful city! It's really easy to get around, and the food is delicious. It's been a great experience. I also like how it’s a bit of a contradiction; it's supposed to be the happiest place on Earth yet has the angriest music.
00:01:25.080 Today’s goals for our talk are threefold. First, we are going to learn more about the Ruby infrastructure systems that many of us depend on, some of us daily.
00:01:31.200 In this talk, I am going to expand the definition of infrastructure to include some elements that you might not necessarily think of; not just servers, code, and network capabilities, but also the critical components that hold all of us together as a community.
00:01:51.479 Second, I hope to inspire you to get involved with the Ruby community and Ruby infrastructure, or at the very least, encourage you to persuade your organizations to become contributors to our community.
00:02:10.679 Third, I will discuss bicycles and their relationship with our topic.
00:02:16.800 Why are we covering this material? We rely on so many things without understanding how they work, who works on them, or what keeps them functioning.
00:02:29.340 We especially don’t think about the people doing the work or how these projects are run. This presents a paradox: we don’t need to care about what happens when we run 'bundle' or 'bundle exec' to load our packages during development.
00:02:41.400 When the infrastructure is done properly, it feels invisible—it’s like it has always been there and always will be. However, everything comes to a screeching halt when things like that don’t work.
00:02:57.840 If you remember anything from my talk, I’d want to emphasize that someone has to build and maintain the infrastructure of our community, and that someone might be you. Furthermore, someone has to pay for building and maintaining our infrastructure, and that may also be you or your company.
00:03:16.319 A little bit about my work life: I have been a Ruby developer since 2011 and a consultant. I have served as a director with Ruby Central and Ruby Together for six years.
00:03:30.840 Ruby Central, some of you may have heard of it, is a non-profit that supports Ruby infrastructure. We organize RubyConf and RailsConf every year, pandemic notwithstanding, and we also pay for much of our shared open-source infrastructure, including Bundler and RubyGems.
00:03:48.959 We support several other smaller projects, but those are the main ones we focus on. I want to put in a quick plug here for RubyConf and RubyConf Mini, both of which are happening in a few weeks. They will be super cool and a lot of fun, so get your tickets now!
00:04:06.840 The reason we are doing two RubyComps is that many of our attendees cannot travel to Texas due to safety concerns. Gemma, who gave a great talk yesterday and is sitting here in the front row, has done a tremendous amount of work to organize another way for those folks to be part of the RubyConf experience, so definitely look those up, and if you can attend, it would be great to see you there.
00:04:26.340 A bit about my non-work life: I love bicycles. At the beginning of the pandemic, I started cycling, and it has developed into a deep affection for the activity. Like many parents, I was homeschooling my two small kids, and I quickly realized I needed an outlet for my mental health.
00:04:44.940 I bought a road bike to exercise, get outside, and enjoy a socially distanced environment. I became really into it and now ride a few thousand kilometers every year.
00:05:05.580 This is a picture of me riding on a charity ride from San Francisco to Los Angeles, approximately 500 miles, or I think 800 kilometers. I ride for fun, but I also take my kids to school.
00:05:21.660 This is a photo of my kids on an e-bike specifically designed for that purpose. My wife took this photo on the day of my younger one's first day of kindergarten. This is a special time for us.
00:05:33.840 When riding around on a bicycle with my kids, safety becomes the foremost thought. I think a lot about how the world around us could be safer for our children.
00:05:45.840 Since I started taking my kids to school by bike, I have become increasingly aware of the road infrastructure in our town, which is Oakland, California.
00:05:57.960 Today, I am going to talk about infrastructure from two perspectives. Excuse me for a moment.
00:06:11.280 I plan to connect two important areas that are crucial; for me and for all of you in the room—bicycle infrastructure and Ruby infrastructure. I hope to aid our understanding of what leads to good infrastructure and how it can improve our lives.
00:06:30.360 The way I view things regarding infrastructure is radically impacted by a book titled 'Thinking in Systems' by Donella Meadows.
00:06:41.760 To clarify, I am not an expert on systems thinking; I’m sure many of you know much more about it than I do. I’d love to talk and learn from you afterward.
00:06:57.900 However, I learned a great deal from this book. Although she wrote this book in the 90s, she unfortunately died in 2001. Her colleagues edited her manuscript and published it in 2008.
00:07:10.259 The central concept is that system behaviors are not caused by external events, but rather are intrinsic to the system itself. The purpose of a system is what it does; it’s defined by its behavior.
00:07:34.680 When we encounter unexpected outcomes in the world, we might often say the system is broken.
00:07:41.040 In the United States, some people say the election systems are broken, or in my town, I frequently say the transit systems are broken. However, no system is truly broken—it performs its function as designed, even if we might not like the outcomes.
00:07:53.580 If a system isn’t doing what we expect, we must understand it, get involved, and redesign it. I plan to discuss systems extensively, so let's define the term quickly for clarity.
00:08:11.280 For me, a system is a collection of components that interact with one another to form a whole. This definition is intentionally broad because there are many kinds of systems.
00:08:24.600 For example, at this conference, we have an AV system allowing you to see my slides and hear my voice; there's a heating system keeping us warm.
00:08:33.180 Lunch systems organized by the event coordinators help ensure we get appropriate food, and coffee delivery systems keep you awake during this talk—thank you for that! Of course, computer programs are complex systems as well.
00:08:49.680 This is Olu, I think I'm pronouncing that correctly—if I'm not, I apologize. Olu is a town about 600 kilometers north of us in central Finland, home to about 200,000 people.
00:09:00.180 Temperatures there reach below freezing for six months of the year, even during the day. It is also considered the winter cycling capital of the world.
00:09:10.080 Their bike and pedestrian paths are part of a network of almost 900 kilometers and are shared between cyclists and pedestrians. However, when it snows, the painted signs on those paths become invisible, leading to collisions.
00:09:20.640 To solve this safety issue, city planners constructed innovative lamp structures that project signage onto the snow, helping ensure everyone understands their designated space.
00:09:30.000 They also collect the snow, mix it with gravel, and compact it to create a firm roadway. I should note that winters in Finland are particularly dark, so this setup works well for most of the day.
00:09:38.220 For example, in January, there are only about four hours of daylight between 10 a.m. and 2 p.m. Despite the freezing conditions, 22 percent of all trips in this town are made by bicycle.
00:09:50.100 This shows how an efficient transportation system allows people of all ages to cycle even during harsh weather. This is a school in the same town with 1,200 students; on this particular day, the high was minus 17 degrees Celsius, or 1 degree Fahrenheit.
00:10:06.000 On that day, 1,000 children rode their bikes to school, over 80% of the students. Imagine all the systems in place that made safe cycling for all these children possible!
00:10:17.160 This was designed to enable children to safely ride their bikes to school despite the weather.
00:10:31.860 Next, let's look at Tom Perry, another town in Finland, where a street was redesigned between 1998 and 2022. Let's analyze some differences between these two photos.
00:10:44.160 On the left, we see a lot of cars, while the right shows various modes of transport at work. This area is before the redesign.
00:10:54.840 In the reimagined area, we can see trams and tram tracks, fewer cars, more bicycles, and pedestrians. People are walking around—this denotes plenty of options for transit.
00:11:03.120 The purpose of the system, in my view, is to move people along roadways as safely as possible.
00:11:16.680 On Wednesday morning, I took a bike tour led by my guide, Yari, who used to be a bike messenger. Here on the left, we can see the line of parked cars acting as a barrier between moving traffic and the bike path.
00:11:27.840 This setup builds fault tolerance into the system. Drivers don’t have an option but to avoid harm to cyclists. It's also a beautiful autumn day in Helsinki!
00:11:41.580 This is Camino Pablo Road near my house in California, which I ride regularly. Until my visit to Finland, I had never thought twice about it. Here, the bike lane is a narrow strip of pavement delineated by cracked white paint.
00:11:55.920 The lane merges off to the side, forming an off-ramp from a three-way overpass above. Cars come off quickly and continue at high speeds as they merge onto this road.
00:12:09.240 This setup, unfortunately, presents a significant danger for cyclists. However, this system is not broken—it functions correctly, allowing cars to go fast as designed.
00:12:17.160 Interestingly, while researching this topic, I encountered a meme that resembled this very road I ride. This experience was humbling for me.
00:12:34.860 What are the outcomes of these two systems? In Finland, investment in transportation—including transit cycling and car infrastructure—has completely eliminated pedestrian and cyclist deaths. In 2019, for the first time, no pedestrians or cyclists died as a result of traffic accidents.
00:12:51.480 Meanwhile, the U.S. tolerates 850 bicycle deaths and 47,000 injuries annually; those are 2019 figures, and the numbers have likely increased. We also allow 6,000 pedestrian deaths, along with 76,000 injuries, and over 40,000 driver deaths—most of which result from collisions with other drivers.
00:13:07.680 The purpose of Finland's transportation system is not just about providing access, but also about eliminating deaths and getting people safely where they want to go.
00:13:23.880 In contrast, the U.S. systems result in these alarming figures. What accounts for the differences between the two? How did Finland achieve such dramatically different outcomes?
00:13:32.640 For the past 50 years, every fatal crash has led to the formation of a multi-disciplinary accident assessment panel. These panels are funded through revenue from auto insurance premiums.
00:13:41.880 Their membership includes experts from traffic planning, human behavior, law enforcement, and healthcare. Following each investigation, a public report detailing their findings and recommendations is released.
00:14:05.640 Helsinki officials note that their findings frequently lead to policy changes, such as altering road geometry or changing traffic light configurations. Essentially, after each crash, a new group investigates the root causes.
00:14:16.100 This collaboration involves many disciplines to attack the problem from different angles, funded by the auto users who are the primary cause of the issues. Most importantly, the learning from these investigations results in systemic changes.
00:14:28.260 In contrast, in the U.S., we do conduct multi-disciplinary investigations for airplane crashes, but not for car crashes. There is little priority for making streets safer for drivers or pedestrians.
00:14:42.840 The government tends to blame the drivers; in 2013, a chart was released indicating that 94% of crashes are the drivers' fault. This system does little to address how dangerous cars can be; it deflects focus onto the people driving instead of acknowledging poor road design.
00:14:55.260 So, what leads to the better streets and safer systems in Finland? In my view, the difference is governance.
00:15:07.140 Governance involves how a system is managed: the committees, reports, meetings, documentation, onboarding, research, and so forth. While it may sound boring, that mundane work is crucial—it saves lives.
00:15:23.040 Now, as to why we are discussing cycling design in a Ruby conference, I believe that similar principles supporting Finland’s cycling infrastructure can also help our programming community flourish.
00:15:30.720 Things like transparency, documentation, competent advisory boards, and setting clear goals are all parts of governance. They create accountability and participation that lead to durable systems.
00:15:44.520 Now, let’s look at the essential parts of the Ruby world and ask about governance.
00:15:53.520 There are several essential parts to Ruby World, including the Ruby language itself, Rails and other frameworks, gems and libraries, community events (like conferences and meetups), and the learning world, consisting of tutorials, videos, and books.
00:16:02.220 I would suggest these six elements form the core components that make Ruby World what it is. If you remove any piece, writing software with Ruby becomes much harder, less productive, and less enjoyable.
00:16:13.500 Let’s consider how these areas are governed—I'm interested in three key areas: who is doing the work, how decisions are made, and who pays for the work.
00:16:21.420 Before I go on, I must mention that this talk has more questions than answers. I'm hoping we can inspire discussions about project health and improvement.
00:16:29.580 I also expect to be corrected politely if necessary. Some answers here may be unclear, but that's alright—there's plenty of work to be done collaboratively.
00:16:40.740 I've intentionally left out several projects, and I’m not erasing anyone. It’s just that 30 minutes feels much shorter than you'd think.
00:16:49.260 When I ask for transparency, it's not to call anyone out or imply negative intentions; rather, I believe transparency fosters accountability and encourages participation.
00:17:01.540 My goal is to get us to that 100-year mark, as Mats emphasized in his keynote. I want the Ruby community to last a long time.
00:17:09.180 Let's begin with MRI Ruby. Who does the work here?
00:17:18.580 While Mats is mentioned, the official core team isn’t listed clearly on the Ruby language website. Many of us have a sense of who makes up the core team based on GitHub contributor activity.
00:17:27.720 There isn't definitive information available about that team, which could be beneficial to see documented.
00:17:33.640 Decisions in Ruby are usually made through public conversations in the bug tracker, where anyone can read along.
00:17:43.860 Minutes are recorded and stored in a repository, showing that while Mats is the ultimate decision-maker, there is a process in place for these discussions.
00:17:53.280 The governance model often referred to as the BDFL model means "Benevolent Dictator for Life," though Mats has hinted he may retire.
00:18:02.160 How is governance structured in MRI overall? I find it reasonably effective given the consistent, steady progress in the language over the years.
00:18:14.520 Ruby 3 is significantly improved over Ruby 2. A succession plan might be necessary for risk mitigation, but overall, the governance appears to be functioning well.
00:18:25.800 Additionally, I believe the original mission of Ruby, which is programmer happiness, has favorably influenced the decision-making process, guiding the goals and values of the project.
00:18:34.440 While it would be great to have all this information clearly articulated on the website, everything seems to be running quite well for now.
00:18:43.740 Regarding who pays for Ruby development, it's unclear. There are many half-answers readily available online.
00:18:56.760 As mentioned in the keynote, Mats should enumerate the number of organizations or companies supporting Ruby, but such information could also be organized on the website.
00:19:06.180 Let’s look at Rails: who does the work there?
00:19:10.440 The Rails team has done well in documenting the contributors and decision-makers involved in the project, with a clearly defined hierarchy consisting of core teams, committers, and the issues team.
00:19:20.160 New contributors are welcomed, and there’s a guide outlining the process to get involved.
00:19:30.240 There has been a recent push toward establishing formal governance within Rails, which is a positive development.
00:19:39.660 A blog post titled "Rails Governance" was released last year, noting the changes.
00:19:49.560 Another big step was taken when core team member Eileen asked for greater transparency and improved governance during her talk at RailsConf.
00:19:58.440 So how are decisions made within Rails? A movement towards establishing formal governance is underway, with a focus on making contributions easier for new people.
00:20:08.040 Companies are stepping up, often paying for developers to work on Rails, though these contributions are still too dependent on personal financing.
00:20:15.780 It seems organizations currently assess their investment in projects like Rails based on community benefit.
00:20:23.460 Despite this support, we should contemplate putting protections in place to ensure financial contributions don't unduly influence development.
00:20:31.680 It's crucial to have these conversations before problems arise, and I am hopeful that as governance in Rails progresses, these issues will be addressed.
00:20:37.860 Now, let’s discuss Bundler, our package management system. Since Halloween is approaching, let me share a spooky tale.
00:20:46.740 Please recall that in January 2013, RubyGems was hacked. Do any of you remember this incident?
00:20:53.460 The attack stemmed from a gem cleverly named 'exploit' that exploited a YAML execution vulnerability. The code looked for configuration files containing secret keys and sent them to a pastebin site.
00:21:03.840 This action exposed all the passwords for the RubyGems server. The maintainers quickly shut down the site to protect everyone while attempting to restore a secure version.
00:21:10.320 The result was that RubyGems went down, halting all Ruby development worldwide. This outage lasted around two or three days.
00:21:20.640 The people maintaining RubyGems did what they could to rectify the situation, but one of the key failure points became apparent.
00:21:27.960 Back in 2013, being a maintainer was merely a hobby; they were volunteering their time and did not have incentives or resources.
00:21:34.680 The exploitation had even been reported days before it occurred, but no one had time or energy to address it due to other obligations.
00:21:41.520 In 2013, many large companies were profiting from Ruby and Rails infrastructure, while our infrastructure was mostly volunteer-run. It's astonishing this issue had not happened sooner.
00:21:49.440 The system didn't break. It limped along due to neglect—it performed as designed because there wasn't the proper support for its maintenance.
00:22:05.460 So what happened afterwards? Ruby Together was established to facilitate funding for essential projects like these. While it was not flawless, its formation prevented outages similar to the one in 2013.
00:22:16.020 In my opinion, it has been largely successful, and I’ve been a board member since the early days.
00:22:25.620 Though it has been better than not existing, it is important to consider ongoing governance.
00:22:34.920 Now, focusing back on Bundler, who does the work? The maintainers on the site are responsible for making decisions.
00:22:44.640 The project functions through GitHub issues, where a consensus model similar to other projects is used. Approximately 60 to 70% of funding comes from Ruby Central, with the remaining portion made up of volunteer effort.
00:23:00.240 Now shifting to our libraries and gems, the picture becomes fuzzier. Many developers are maintaining their gems on a volunteer basis.
00:23:05.520 Decision-making mainly happens among individual maintainers or their small teams, who might collaborate part-time.
00:23:12.000 Generally, there isn’t a solidified way for people to get enough financing to maintain their libraries full-time.
00:23:21.600 Patreon and GitHub Sponsors work well but aren't frequently utilized.
00:23:28.920 Community projects serve as the connective tissue for Ruby infrastructure, though the funding for community initiatives is often limited.
00:23:37.740 This makes governance an interesting question for the Ruby community.
00:23:40.620 I won't delve into further details about this broad category, but community events like conferences, meetups, newsletters, and podcasts all help bind us together.
00:23:52.440 And learning, which encompasses tutorials, books, and Q&A sites, helps facilitate knowledge transfer, although typically too small to warrant formal governance.
00:24:03.000 We should focus on implementing governance practices into our work, as establishing a structure invites regular meetings, note-taking, and future-oriented thinking.
00:24:09.600 These ideas may initially seem mundane, but they are a crucial step toward healthier projects in the future.
00:24:20.040 My message today is simple: we are part of a remarkable programming community, and I believe that everyone present today agrees with that sentiment.
00:24:30.840 Our community consists of varied systems that are critical to sustaining a healthy programming environment. My goal was to highlight those systems while encouraging you to think about how we can keep them healthy.
00:24:41.880 So I ask you to reflect on your roles within these systems, as well as your company’s involvement. Perhaps I am mistaken in asserting that governance is necessary, but if you disagree, get involved and demonstrate your vision for the right path forward.
00:25:12.840 Mats mentioned during his keynote that open engagement is crucial for the survival of Ruby, which is now a mature ecosystem. Although many projects are stable and perhaps even boring, it's worthwhile to consider how we could improve. Real progress depends on our shared contributions.
00:25:43.680 To summarize my thoughts, infrastructure is quite dull but absolutely essential. We should all be mindful of what makes Ruby World remarkable and help where we can; strong governance can bolster that infrastructure.
00:26:02.520 As we engage in conversations about enhancing our community, remember Dr. Meadows' words: the scarcest resource is not oil, metals, clean air, capital, or labor—it is our willingness to listen to each other, learn from one another, and seek the truth rather than assert our correctness.
00:26:16.140 I hope I have contributed a bit of that here today. Thank you very much!
00:26:41.879 So please give a huge hand to them! None of this is possible without their labor. Also, thanks to the sponsors; none of this happens without their support.
00:26:57.040 And of course, thank you to all of you for being here and listening. I truly appreciate it.
00:27:10.140 Hi Josh, thank you so much! I’m not going to let you go just yet.
00:27:16.920 While listening to your talk, I found it quite eye-opening. We had a brief discussion earlier about how Finnish infrastructure functions, particularly relating to biking.
00:27:23.640 Coming from Helsinki, which does not receive as much snow or cold as places further north, one tends to take for granted that children bike to school every day.
00:27:37.360 Only when someone points it out, as you have, do you realize how interestingly functional that is.
00:27:47.000 You also made a great point regarding the accident assessment panel. In Finland, after every accident, a serious official typically comes forward to explain their findings.
00:27:57.480 This contrasts with the way officials in many places behave. I just had to look up the book you mentioned, 'Thinking in Systems,' which has received rave reviews on Amazon. Can you tell us more about why we should read it?
00:28:14.520 That is a tough question. I think that reading the book changes how I perceive the world. Like I mentioned, this room is filled with various systems that we often overlook.
00:28:32.160 They are all interconnected—the AV system, the electrical system, the architectural system—each is dependent on several others. It’s like learning to see the underlying framework.
00:28:49.140 Moreover, it highlights how fragile these systems can be; when failures occur, we often assume that the cause is simple.
00:28:56.880 However, the truth is that many factors interact, leading to the breakdown. There was an interesting history behind this building—we’re sitting in a space built in 1908 by early labor unions.
00:29:05.760 It's incredible to consider the systems that converged to create our environment.
00:29:18.240 Regarding governance, which other communities do you admire most?
00:29:24.600 I had originally omitted this from my talk for brevity, but I aimed to learn from how other communities are structured.
00:29:34.560 I found Rust to have a strong governance framework. Rust’s homepage offers a governance menu that outlines how they develop their processes.
00:29:41.420 Their RFC process is well defined, and they maintain a roadmap to clarify upcoming changes. This level of transparency sets an excellent precedent.
00:29:57.060 Additionally, the transition in Python governance also stands out to me. When Guido van Rossum unexpectedly resigned, the core team reacted quickly.
00:30:04.560 They established a steering council to implement a new governance structure, utilizing their PEP system to propose and discuss changes and create a consensus.
00:30:14.640 I think the way they navigated that transition turned out quite well.
00:30:24.300 What about the governance of Ruby language specifications? What can be done to ensure their usability among other implementations?
00:30:31.200 That's an excellent question! I believe strong communication among teams is essential. It would be beneficial for teams working on other Ruby implementations, like Truffle Ruby, to interact with the MRI team.
00:30:43.560 Lastly, in terms of financial support, what are some of the best avenues for companies to support Bundler and other essential tools?
00:30:58.440 Ruby Together operates under Ruby Central, and we have received unsolicited financial support from various organizations.
00:31:07.860 Organizations, including Shopify, have stepped up to support significant endeavors in improving things like security, resulting in valuable community contributions.
00:31:17.880 Moreover, we’re currently figuring out how to ensure a solid governance structure to manage incoming support and sponsorship.
00:31:24.360 Ruby Central has shown significant progression in capacity building; moving forward, we would be eager to connect with organizations interested in backing our efforts.
00:31:36.420 I can confidently say that these collaborative funding efforts will greatly benefit everyone involved, and I’m optimistic about the community moving forward.
00:31:49.320 Your storytelling is remarkable! I love how you connected cycling systems in Finland with Ruby's infrastructure challenges.